利用PowerBuilder建立數據窗口時用戶通常不能自己選擇數據來源和顯示類型如何讓用戶在應用程序中自己定義數據窗口的數據來源和顯示類型呢?為了達到這個目的我們必須在運行程序階段根據用戶自己的需求動態地建立一個數據窗口
在建立動態數據窗口之前必須先得到數據窗口對象的語法PB中為我們提供了SyntaxFromSQL( )函數利用這個函數可以得到建立數據窗口的語法SyntaxFromSQL()函數的基本格式如下
事物對象SyntaxFromSQL(數據來源字符串顯示類型字符串錯誤字符串)
下面是建立一個數據窗口對象語法的范例∶
// 聲明變量
string ls_sql ls_presentls_err ls_syntax
// 定義數據窗口的數據來源
ls_sql = select emp_id from employee
//定義數據窗口顯示字符串
ls_present = style(type=tabular)
// 得到建立數據窗口對象語法
// 如果錯誤發生SyntaxFromSQL 返回一個空字符串
ls_errls_syntax = SQLCASyntaxFromSQL(ls_sql ls_present ls_err)
利用 SyntaxFromSQL( )所建立的數據窗口對象是在運行階段才建立的對象並不會自動保存在PB的對象數據庫 Library 中為了以後可以重復使用這個數據窗口對象可以利用 LibraryImport( )函數保存數據窗口對象
在利用 SyntaxFromSQL( )函數建立一個數據窗口語法後必須將它與窗口上的數據窗口控件結合這個數據窗口控件必須已經存在於窗口中 要將數據窗口對象語法和一個已經存在的數據窗口控件結合必須利用Create( )函數下面是范例程序∶
// 聲明變量string ls_syntax ls_err
ls_errdw_Create(ls_syntax ls_err)
dw_SetTransobject(SQLCA)
dw_retrieve( )
在上面程序中ls_syntax是運行SyntaxFromSQL( )函數後所返回的字符串除此之外也可以利用LibraryExport( )函數從PB對象數據庫中得到已經存在於PBL中的數據窗口對象語法因為Create( )函數會破壞先前數據窗口與事物對象的結合所以必須利用SetransObject( )函數重新結合事物對象給新的數據窗口對象最後再運行Retrieve( )函數從數據庫中讀取數據
最後我們需要利用SQL 語句字符串動態創建一個新的數據窗口對象到一個數據窗口控件當中雖然在運行階段並不能直接在窗口上建立一個數據窗口控件但卻可以利用用戶對象建立一個與窗口上一樣的數據窗口控件在運行階段時再動態打開這個用戶對象下面是動態建立數據窗口控件的步驟∶
在用戶對象畫板內建立一個標准數據窗口的用戶類
可以在這個控件中增加功能程序用戶對象函數和用戶自定義事件後保存用戶對象到對象數據庫中
利用 OpenUserObject( )函數建立一個數據窗口用戶對象的復件一般格式如下∶OpenUserObject(用戶對象變量{x坐標值y坐標值})下面是在窗口上鼠標點擊的坐標位置建立一個用戶對象 u_dw的范例∶ OpenUserObject(u_dw Pointerx( )Pointery( ))
以上是建立一個動態數據窗口的基本步驟感興趣的朋友不妨一試
編輯推薦
ASP NET開發培訓視頻教程
Microsoft NET框架程序設計視頻教程
From:http://tw.wingwit.com/Article/program/PB/201311/24609.html