




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第13章 動(dòng)態(tài)數(shù)據(jù)窗口 數(shù)據(jù)窗口對(duì)象可以在數(shù)據(jù)窗口畫板中創(chuàng)建,但這是靜態(tài)數(shù)據(jù)窗口對(duì)象。為了增加應(yīng)用程序的適應(yīng)性和通用性,經(jīng)常要求應(yīng)用程序在運(yùn)行時(shí)能夠動(dòng)態(tài)修改數(shù)據(jù)窗口的形式和內(nèi)容,或者創(chuàng)建新的數(shù)據(jù)窗口對(duì)象,這就需要使用動(dòng)態(tài)數(shù)據(jù)窗口技術(shù)。 13.1 動(dòng)態(tài)指定數(shù)據(jù)窗口對(duì)象 一個(gè)數(shù)據(jù)窗口控件對(duì)應(yīng)一個(gè)數(shù)據(jù)窗口對(duì)象,完成固定的查詢。這時(shí)是在窗口畫板中選擇數(shù)據(jù)窗口控件,然后在數(shù)據(jù)窗口控件的Properties窗口General標(biāo)簽頁中的DataObject屬性編輯框中指定一個(gè)已經(jīng)設(shè)計(jì)好的數(shù)據(jù)窗口對(duì)象。 而有時(shí)有如下情況:一個(gè)應(yīng)用程序有很多查詢,這些查詢有類似的界面;為了某種目的,希望在一個(gè)界面中能夠完成所有
2、的查詢;為了利用可重用的特性提高軟件的質(zhì)量等等。這個(gè)時(shí)候界面是類似的,數(shù)據(jù)窗口對(duì)象是事先設(shè)計(jì)好的,只是數(shù)據(jù)窗口控件與數(shù)據(jù)窗口對(duì)象的關(guān)聯(lián)要在應(yīng)用程序運(yùn)行時(shí)指定。這時(shí)只要在適當(dāng)事件中包含如下語句dwcontrol.DataObject=其中是數(shù)據(jù)窗口控件名;DataObject是數(shù)據(jù)窗口控件的屬性,其值為關(guān)聯(lián)的數(shù)據(jù)窗口對(duì)象;是用字符串指定的數(shù)據(jù)窗口對(duì)象名。 13.1 動(dòng)態(tài)指定數(shù)據(jù)窗口對(duì)象 例如:要開發(fā)一個(gè)應(yīng)用系統(tǒng),其中有雇員信息和客戶信息兩種查詢,可按如下思路設(shè)計(jì)應(yīng)用。1. 設(shè)計(jì)一個(gè)可視用戶對(duì)象,含有若干公共控件,其中包括數(shù)據(jù)窗口控件。2. 用繼承的方法建立各查詢界面,并為數(shù)據(jù)窗口控件指定相應(yīng)的數(shù)
3、據(jù)窗口對(duì)象。 為此首先設(shè)計(jì)祖先窗口w_super,圖中有一個(gè)數(shù)據(jù)窗口控件、兩個(gè)命令按鈕,兩個(gè)命令按鈕上顯示的文本分別是開始和退出,在該窗口的Open事件腳本中有連接數(shù)據(jù)庫的語句: /profile EAS Demo DB V4SQLCA.DBMS=ODBCSQLCA.AutoCommit=FalseSQLCA.DBParm=ConnectString=DSN=EAS Demo DBV4;UID=dba;PWD=SQ1Connect;為命令按鈕“開始”的Clicked事件編程如下:dw_1.SetTransobject(sqlca)dw_1.retrieve( )13.1 動(dòng)態(tài)指定數(shù)據(jù)窗口對(duì)象為
4、命令按鈕“退出”的Clicked事件編程如下:close(parent)然后用繼承的方法(單擊PowerBar上的Inherit按鈕)建立窗口w_employee(查詢雇員信息的窗口)和w_custom(查詢客戶信息的窗口)。為w_employee窗口的Open事件編寫語句:dw_1.dataobject=d_employee其中d_employee是已經(jīng)建立好的數(shù)據(jù)窗口對(duì)象。為w_custom窗口的Open事件編寫語句:dw_1.dataobject=d_custom其中d_custom是已經(jīng)建立好的數(shù)據(jù)窗口對(duì)象。 13.2 動(dòng)態(tài)建立數(shù)據(jù)窗口對(duì)象使用數(shù)據(jù)窗口控件的Create函數(shù)動(dòng)態(tài)創(chuàng)建數(shù)據(jù)
5、窗口對(duì)象。 Create函數(shù)的格式如下:dwcontrol.Create (syntax ,errorbuffer)13.2 動(dòng)態(tài)建立數(shù)據(jù)窗口對(duì)象其中參數(shù)dwcontrol是數(shù)據(jù)窗口控件名;syntax是用字符串給出的創(chuàng)建數(shù)據(jù)窗口對(duì)象的源代碼;errorbuffer(可選項(xiàng))是一字符串變量,用于保存創(chuàng)建數(shù)據(jù)窗口對(duì)象過程中出錯(cuò)時(shí)的錯(cuò)誤信息,如果沒有指定該項(xiàng)則使用信息框顯示錯(cuò)誤信息。 Create函數(shù)用指定的源代碼動(dòng)態(tài)創(chuàng)建數(shù)據(jù)窗口對(duì)象,并用新的數(shù)據(jù)窗口對(duì)象取代數(shù)據(jù)窗口控件中原有的數(shù)據(jù)窗口對(duì)象。 事實(shí)上,數(shù)據(jù)窗口對(duì)象的源代碼是非常復(fù)雜的,我們幾乎不可能自己來直接設(shè)計(jì)這些源代碼。PowerBuilde
6、r為我們提供了源代碼編輯器,對(duì)于那些PowerBuilder高手則可以直接在源代碼編輯器中完成一些特殊的設(shè)計(jì)和修改。打開源代碼編輯器的方法是: 1. 單擊PowerBar上的Open按鈕打開Open對(duì)話框。2. 在Target下拉列表框中選擇目標(biāo),在Libraries列表框中選擇庫文件,在Using下拉列表框中選擇Source Editor(源代碼編輯器,默認(rèn)是Painter,即畫板),在Objects of Type下拉列表框中選擇DataWindows。3. 最后在Object Name文本框中選擇要打開的數(shù)據(jù)窗口對(duì)象,并單擊Ok按鈕,則在源代碼編輯器中就會(huì)打開所選擇的數(shù)據(jù)窗口對(duì)象的源代碼
7、。 13.2 動(dòng)態(tài)建立數(shù)據(jù)窗口對(duì)象 另外還可以用以下方法獲得或產(chǎn)生數(shù)據(jù)窗口對(duì)象的源代碼:1. 使用Describe函數(shù),通過訪問數(shù)據(jù)窗口對(duì)象的Syntax屬性獲得數(shù)據(jù)窗口對(duì)象的源代碼,例如語句:mle_1.text=dw_1.Describe(“datawindow.syntax”)其中mle_1是用來顯示數(shù)據(jù)窗口對(duì)象源代碼的多行編輯器。2. 使用LibraryExport函數(shù)從PowerBuilderL庫文件中導(dǎo)出數(shù)據(jù)窗口對(duì)象的源代碼,例如語句:mle_1.text=LibraryExport(“demo.PowerBuilderl”,”d_employee”, ExportDataWind
8、ow!)從庫文件demo.PowerBuilderl導(dǎo)出數(shù)據(jù)窗口對(duì)象d_employee的源代碼。 3. 在Library畫板中,使用導(dǎo)出功能(選擇了要導(dǎo)出的對(duì)象后,單擊PainterBar上的Export按鈕或者選擇菜單“EntryLibrary ItemExport”)將數(shù)據(jù)窗口對(duì)象的源代碼導(dǎo)出到一個(gè)文件中(結(jié)果為文本文件)。4. 使用DataWindows Syntax工具獲得數(shù)據(jù)窗口對(duì)象的源代碼(見13.3節(jié))。5. 使用SyntaxFromSQL函數(shù)根據(jù)SQL SELECT語句生成數(shù)據(jù)窗口對(duì)象的源代碼。 13.3 動(dòng)態(tài)修改數(shù)據(jù)窗口對(duì)象 一般使用Modify函數(shù)動(dòng)態(tài)修改數(shù)據(jù)窗口對(duì)象,該
9、函數(shù)的格式是:dwcontrol.Modify (modstring)其中參數(shù)dwcontrol是數(shù)據(jù)窗口控件名:modstring是修改數(shù)據(jù)窗口對(duì)象的源代碼(字符串),該參數(shù)有三種格式:Operty = value:修改屬性CREATE object (settings):添加新對(duì)象到數(shù)據(jù)窗口對(duì)象中DESTROY COLUMN object:從數(shù)據(jù)窗口對(duì)象中刪除列或?qū)ο?需要說明的是modstring的語法格式是非常復(fù)雜的,讓開發(fā)人員掌握這種語法幾乎是不可能的,但是PowerBuilder提供了一個(gè)內(nèi)置工具 DataWindow Syntax可以為我們生成所需要的m
10、odstring。 DataWindowSyntax工具是PowerBuilder內(nèi)置的應(yīng)用程序,它的作用就是為開發(fā)人員生成Modify、SyntaxFromSQL、Describe函數(shù)所需要的語法。DataWindowSyntax工具被集成在New對(duì)話框的Tool標(biāo)簽頁中,從Tool標(biāo)簽頁中選擇DataWindowSyntax則可以啟動(dòng)DataWindowSyntax應(yīng)用程序,該應(yīng)用程序?yàn)檫m應(yīng)Modify、SyntaxFromSQL、Describe函數(shù)有若干不同界面,可以通過syntex菜單來選擇。 可以使用Modify函數(shù)動(dòng)態(tài)向數(shù)據(jù)窗口中添加對(duì)象(如列、計(jì)算域、圖片等),添加對(duì)象的Mod
11、ify函數(shù)的語法格式如下:dwcontrol.Modify (CREATE object (Setting)其中CREATE是關(guān)鍵字,表示在數(shù)據(jù)窗口中建立新對(duì)象;object指出新建立的對(duì)象類型,如compute(計(jì)算列)、Button(命令按鈕)等;Setting給出要?jiǎng)?chuàng)建對(duì)象的一組屬性及其值。參數(shù)Setting的指定比較復(fù)雜,盡管可以從DataWindow Syntax工具中得到基本語法格式,然后進(jìn)行編輯修改。 例如:某數(shù)據(jù)窗口中有Salary(工資)列,一般情況下不需要顯示工資合計(jì)信息,但是在某些情況卻需要匯總信息,這時(shí)就可以考慮在程序運(yùn)行時(shí)為數(shù)據(jù)窗口動(dòng)態(tài)增加一個(gè)計(jì)算域,可以編寫如下程序
12、代碼:string ls_setting ls_setting = compute(band=summary alignment = 0+& expression=sum(salary for all) border=0 color=0+&x=654 y=64 height=76 width=741 format=GENERAL+& name=compute_1 font.face=Arial font.height=-12 font.weight=400+&Font.family=2 font.pitch=2 font.charset=0+&backg
13、round.mode=2 background.color=16777215)dw_1.Modify (create+ls_setting) 刪除數(shù)據(jù)窗口中的對(duì)象 程序運(yùn)行時(shí)也可以使用Modify函數(shù)動(dòng)態(tài)刪除數(shù)據(jù)窗口中的對(duì)象,Modify函數(shù)的格式是:dwcontrol.Modify (DESTROY COLUMN object)其中DESTROY是關(guān)鍵字,說明要?jiǎng)h除數(shù)據(jù)窗口中的對(duì)象;COLUMN也是關(guān)鍵字,說明要?jiǎng)h除的是數(shù)據(jù)列;object指出具體要?jiǎng)h除的對(duì)象名。例1:假設(shè)在數(shù)據(jù)窗口dw_1中有一個(gè)名稱為p_1的圖片,如下語句可以動(dòng)態(tài)刪除該圖片:dw_1.Modify (destroy p_
14、1)例2:假設(shè)在打開窗口時(shí)通過檢查用戶名,確定該用戶不能查看工資信息,那么可以用如下語句刪除窗口中的工資(salary)列:dw_1.Modify (“destroy column salary”)修改數(shù)據(jù)窗口對(duì)象的屬性 某些應(yīng)用程序可能需要在運(yùn)行時(shí)能夠動(dòng)態(tài)改變數(shù)據(jù)窗口對(duì)象的外部特征(例如在瀏覽數(shù)據(jù)窗口中的數(shù)據(jù)時(shí),為了便于瀏覽和對(duì)比可以使不同范圍的值以不同的顏色顯示),這些要求可以通過動(dòng)態(tài)修改數(shù)據(jù)窗口對(duì)象的屬性來實(shí)現(xiàn)。動(dòng)態(tài)修改數(shù)據(jù)窗口對(duì)象屬性的Modify函數(shù)的格式是:dwcontrol.Modify (“perty = value”)其中objectname指出對(duì)象名;property指出屬性名;value給出具體的屬性值。注意:如果有多層屬性,可以用圓點(diǎn)表示法表示下去。動(dòng)態(tài)修改數(shù)據(jù)窗口對(duì)象屬性的應(yīng)用非常廣泛,下面通過一個(gè)例子加以說明。例1:假設(shè)數(shù)據(jù)窗口數(shù)據(jù)源的原始SQL SELECT語句不包括WHERE子句,在應(yīng)用程序運(yùn)行時(shí)通過單行編輯框sle_1輸入任意查詢條件,然后動(dòng)態(tài)地為原始SQL SELECT語句增加WHE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度個(gè)人之間農(nóng)業(yè)貸款借款合同
- 家長與孩子二零二五年度家務(wù)勞動(dòng)責(zé)任履行協(xié)議
- 2025年度泳池救生員安全責(zé)任及應(yīng)急響應(yīng)規(guī)范協(xié)議
- 2025年度智慧城市建設(shè)預(yù)付款合作合同
- 二零二五年度酒店管理營業(yè)執(zhí)照及品牌加盟轉(zhuǎn)讓合同
- 二零二五年度房屋維修基金頂賬返還協(xié)議書
- 二零二五年度外墻保溫涂料產(chǎn)品環(huán)保認(rèn)證與綠色標(biāo)識(shí)合同
- 二零二五年度女方婚前財(cái)產(chǎn)協(xié)議婚姻安全與婚姻風(fēng)險(xiǎn)規(guī)避合同
- 二零二五年度裝配行業(yè)產(chǎn)品研發(fā)終止合同
- 石家莊市2025年度勞動(dòng)合同電子化管理規(guī)范
- 橋梁鋼筋制作安裝施工方案
- 【課件】化學(xué)與人體健康課件九年級(jí)化學(xué)人教版下冊(cè)+
- 金融類競聘主管
- 2024年688個(gè)高考英語高頻詞匯
- 《歷史地理生物》課件
- 商標(biāo)合資經(jīng)營合同
- 第六講當(dāng)前就業(yè)形勢(shì)與實(shí)施就業(yè)優(yōu)先戰(zhàn)略-2024年形勢(shì)與政策
- 酒店大堂石材養(yǎng)護(hù)專項(xiàng)方案
- 2024-2030年中國家政服務(wù)行業(yè)經(jīng)營策略及投資規(guī)劃分析報(bào)告
- 2025年護(hù)士資格證考核題庫及答案
評(píng)論
0/150
提交評(píng)論