PB 如何建立乙個動態的資料視窗物件

2021-07-10 05:31:28 字數 3215 閱讀 6216

問:我想在程式執行中根據需要動態地建立乙個資料視窗物件,該怎麼做呢?

答:方法有四:

第一種方法:

在程式中用describe()函式得到某個已經存在的資料視窗物件的源**。如:

string str_dwsyntax,str_lag

//獲得資料視窗1的語法

str_dwsyntax=dw_1.object.datawindow.syntax

//根據資料視窗1的語法動態生成資料視窗2的語法

dw_2.create(str_dwsyntax)

//對資料視窗2的內容作區域性修改

str_lag="stu_id_t.font.height='-12' stu_id_t.font.face='楷體_gb2312'"

//字型變12號字型,由宋體改為楷體

dw_2.modify(str_lag)

dw_2.settransobject(sqlca)

dw_2.retrieve()

第二種方法:

在程式中使用系統函式libraryexport()得到某個已經存在的資料視窗物件的源**。

第三種方法:

在powerbuilder開發環境的庫管理畫筆(library painter)中使用移出功能(右鍵→export)將某個資料視窗物件的語法儲存到文字檔案中。

第四種方法:

1、設計視窗時在視窗上設定乙個資料視窗控制項,該控制項用於展示動態建立的資料視窗。

2、構造一條select語句。

3、利用事務物件的物件函式syntaxfromsql()生成符合資料視窗物件語法的字串。

4、使用資料視窗控制項的物件函式create()建立資料視窗。

例子:string str_err_sql,str_err_create,str_sql,str_syntax      

str_sql="select emp_id,emp_data,emp_name from employee where emp_salary>750"

//生成select語句對應的自由風格的資料視窗語法

str_syntax=sqlca.syntaxfromsql(str_sql,'style(type=form)',str_err_sql)

if len(str_err_sql)>0 then

messagebox("錯誤","取得sql語法時出錯")

return

else

dw_1.create(str_syntax,str_err_create)

if len(str_err_create)>0 then

messagebox("錯誤","建立資料視窗時出錯!") 

return

end if

end if

dw_1.settransobject(sqlca)

dw_1.retrieve()

[注]syntaxfromsql()函式

說明:根據sql select語句生成資料視窗物件的源**,通常用於建立動態資料視窗物件。

語法:transaction.syntaxfromsql(sqlselect,presentation,err )。

返回值:

string,成功時返回生成的指定風格資料視窗物件的源**,錯誤時返回空字串,err引數可說明原因。

引數型別及說明

transaction

事務物件名。

sqlselect

string,其值為一條有效的sql select語句。

presentation

string,指定資料視窗預設的表現風格。

完整語法

style(type=value property=value ……) //資料視窗風格

type

tabular

預設值,列表風格

grid

列表風格

form

自由格式

crosstab

交叉列表

graph

統計圖風格

group

分組風格

label

標籤風格

nested

復合風格

ole 2.0

ole風格

richtext

超文字風格

datawindow(property=value ……) //資料視窗本身的屬性

column(property=value ……) //列物件屬性

group(groupby_colnum1 by_colnum2 …… property ……) //分組特性

text(property=value ……) //文字物件屬性

title('titlestring') //資料視窗的標題

errstring,當生成資料視窗源**發生錯誤時,該引數用於儲存出錯資訊。

[注]create()函式

說明:使用指定的源**建立資料視窗物件,並用新的資料視窗物件來取代舊的,但新的不會自動成為應用庫的一部份。

語法:dwcontrol.create( syntax )

返回值:

integer,成功為1,錯誤為-1。

引數型別及說明

dwcontrol

資料視窗控制項名。

syntax

資料視窗源**,create()函式將使用該**來建立資料視窗物件。

errorbuffer

可選,儲存建立時的出錯資訊,若省略則系統將使用訊息對話方塊顯示出錯資訊。

用法資料視窗物件源**語法相當複雜,因此手工從頭構造該語法幾乎是不可能的,但也不用洩氣,powersoft提供了幾個辦法構造資料視窗物件的源**。

1程式中使用資料視窗控制項的describe()函式得到某個已經存在的資料視窗物件的源**,再據此修改。

2程式中使用系統函式libraryexport()得到某個已經存在的資料視窗物件的源**,再據此修改。

3在powerbuilder開發環境的庫管理畫筆(library painter)中使用移出功能(export)將某個資料視窗物件的語法儲存到文字檔案中,再據此修改。

4程式中使用事務物件函式syntaxfromsql(),該函式根據sql語句建立資料視窗物件的源**,再據此修改。

pygame 建立乙個簡單的視窗

import pygame,sysimport pygame,sys def pygame test 初始化 pygame.init import pygame,sys def pygame test 初始化 pygame.init 建立乙個視窗 screen pygame.display.set ...

PB中如何判斷資料視窗發生的改變

問題 乙個資料視窗的資料發生了改變,但是該如何確定是哪些行的哪些列發生了改變?方法 注 本方法僅限於對資料 修改的判斷,不包含新增或刪除的資料 step 1,在資料視窗中加入乙個計算列 if isrowmodified y n 命名為 ismodified 用來判斷對應的資料行是否有改變。step ...

如何建立乙個模組 如何起步建立乙個童裝品牌?

自從有了童裝創業的想法,腦海中蹦出無數想法。從0到1建立乙個品牌,首先要問清楚自身,理想中這將是乙個怎樣的品牌?展示出來是怎樣的形象?希望消費者對品牌產生怎樣的感受?最終實現品牌的什麼目標?這些問題,並不是一開始就能確定答案,也不會是一成不變。我們應該從建立品牌,到運營 維護品牌,都對這些問題保持思...