利用PB動態創建數據窗口
2024-07-21 02:10:21
供稿:網友
利用pb動態創建數據窗口
當利用powerbuilder建立數據窗口時,用戶通常不能自己選擇數據來源和顯示類型。如何讓用戶在應用程序中自己定義數據窗口的數據來源和顯示類型呢?為了達到這個目的,我們必須在運行程序階段根據用戶自己的需求,動態地建立一個數據窗口。筆者將結合實際,詳細介紹動態創建數據窗口的步驟。
在建立動態數據窗口之前,必須先得到數據窗口對象的語法,pb中為我們提供了syntaxfromsql( )函數,利用這個函數可以得到建立數據窗口的語法。syntaxfromsql()函數的基本格式如下:
事物對象.syntaxfromsql(數據來源字符串,顯示類型字符串,錯誤字符串)
下面是建立一個數據窗口對象語法的范例∶
// 聲明變量
string ls_sql, ls_present,ls_err, ls_syntax
// 定義數據窗口的數據來源
ls_sql = "select emp_id from employee"
//定義數據窗口顯示字符串
ls_present = "style(type=tabular)"
// 得到建立數據窗口對象語法
// 如果錯誤發生,syntaxfromsql 返回一個空字符串
ls_errls_syntax = sqlca.syntaxfromsql(ls_sql, ls_present , ls_err)
利用 syntaxfromsql( )所建立的數據窗口對象是在運行階段才建立的對象,并不會自動保存在pb的對象數據庫 library 中。為了以后可以重復使用這個數據窗口對象,可以利用 libraryimport( )函數保存數據窗口對象。
在利用 syntaxfromsql( )函數建立一個數據窗口語法后,必須將它與窗口上的數據窗口控件結合,這個數據窗口控件必須已經存在于窗口中 。要將數據窗口對象語法和一個已經存在的數據窗口控件結合,必須利用create( )函數,下面是范例程序∶
// 聲明變量string ls_syntax ,ls_err
ls_errdw_1.create(ls_syntax, ls_err)
dw_1.settransobject(sqlca)
dw_1.retrieve( )
在上面程序中,ls_syntax是運行syntaxfromsql( )函數后所返回的字符串。除此之外,也可以利用libraryexport( )函數從pb對象數據庫中得到已經存在于pbl中的數據窗口對象語法。因為create( )函數會破壞先前數據窗口與事物對象的結合,所以必須利用setransobject( )函數重新結合事物對象給新的數據窗口對象,最后再運行retrieve( )函數,從數據庫中讀取數據。
最后,我們需要利用sql 語句字符串,動態創建一個新的數據窗口對象到一個數據窗口控件當中。雖然,在運行階段并不能直接在窗口上建立一個數據窗口控件,但卻可以利用用戶對象建立一個與窗口上一樣的數據窗口控件,在運行階段時再動態打開這個用戶對象。下面是動態建立數據窗口控件的步驟∶
1. 在用戶對象畫板內,建立一個標準數據窗口的用戶類。
2. 可以在這個控件中增加功能、程序、用戶對象函數和用戶自定義事件后,保存用戶對象到對象數據庫中。
3. 利用 openuserobject( )函數建立一個數據窗口用戶對象的復件,一般格式如下∶openuserobject(用戶對象變量,{x坐標值,y坐標值})。下面是在窗口上鼠標點擊的坐標位置建立一個用戶對象 u_dw的范例∶
openuserobject(u_dw, pointerx( ),pointery( ))
以上是建立一個動態數據窗口的基本步驟,感興趣的讀者不妨一試。