




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第3章章 窗口窗口3.1 創建新的窗口對象創建新的窗口對象3.2 窗口屬性窗口屬性 3.3 窗口函數窗口函數3.4 窗口事件窗口事件3.5 窗口編程窗口編程3.6 小結小結3.1.1 創建窗口對象的過程創建窗口對象的過程 創建一個空白窗口:按下工具欄上“New”圖標按鈕,彈出 New屬性頁對 話 框 , 選 擇Object頁,雙擊Windows圖標或選中Windows圖標后單擊OK按鈕即可。窗口對象命名時的默認前綴為w_。3.1.2 窗口的繼承窗口的繼承 實現窗口繼承的方法實現窗口繼承的方法:點擊繼承按鈕,選擇對象類型(Object Type)為窗口(Windows),在窗口對象列表單中選擇
2、要繼承的祖先窗口,雙擊左鍵選中或單擊后按OK按鈕確定。 窗口繼承應用在以下幾種情況,一種是需要創建若干個窗口,另一種是有一個或多個窗口,這兩種情況,都比較適合于應用窗口的繼承。使用窗口的繼承建立窗口對象時,祖先對象中的所有內容全部被它的后代繼承。在后代窗口中,可以引用祖先的函數、事件以及結構,改變窗口的屬性以及窗口和控件的大小和位置,修改現有的控件以及添加新的控件,編寫新的腳本,聲明新的變量、函數、事件以及結構。使用窗口的繼承,需要注意以下二點:使用窗口的繼承,需要注意以下二點:(1)后代窗口中所有繼承來的控件,都不允許刪除。遇到 不需要的祖先控件,可以采用將該控件的可視性屬性(Visible
3、)不選中,讓其在后代窗口中不可見的方法使其消失。(2)祖先和后代窗口中的控件名稱必須唯一,不能使用相同的控件名稱。3.1.2 窗口的繼承窗口的繼承3.1.3 窗口畫板窗口畫板 窗口畫板是由 布局視圖區、 窗口屬性區、 函數列表區、 腳本編輯區、 結構列表區、 結構定義區、 控件列表區、 事件列表區 以及非可視 對象列表區 等區域組成。 3.1.3 窗口畫板窗口畫板區域的打開可以在View菜單項下進行選擇。 新窗口產生后,隨后就需要對其屬性進行設置,以滿足不同應用的需要。3.1.4 預覽窗口預覽窗口 在窗口的設計過程中,可以隨時預覽設計窗口在實際運行時的外貌,方法是點擊工具欄上的Preview圖
4、標,或點擊菜單標題Design下的Preview菜單項,也可以直接使用快捷鍵Ctrl+Shift+P。3.2 窗口屬性窗口屬性窗口的作用見表。其中最重要的是基本特征屬性頁。3.2.1 窗口的類型和基本屬性窗口的類型和基本屬性窗口標題欄用于設置窗口標題;窗口標記欄用于輸入窗口標識;窗口菜單名稱用于配置窗口菜單,窗口本身沒有菜單,通過選擇菜單,可以方便地將所需要的菜單掛接到窗口上,在窗口與菜單的組合上具有很大的靈活性。窗口的背景顏色和MDI子窗口的顏色可以從下拉菜單中提供的背景顏色中選擇。 3.2.1 窗口的類型和基本屬性窗口的類型和基本屬性窗口的基本特征屬性頁見圖。3.2.1 窗口的類型和基本屬
5、性窗口的類型和基本屬性 窗口的基本特征屬性頁中有12個復選框,控制著12個布爾變量。 3.2.1 窗口的類型和基本屬性窗口的類型和基本屬性 窗 口 的 類 型是 按照窗口具有不完全相同的外部和內部特征劃分的。 窗 口 的 類 型有六種,缺省為主窗口類型。3.2.1 窗口的類型和基本屬性窗口的類型和基本屬性說明:說明:(1) 模式化是指在關閉當前響應窗口之前,不能切換到應用程序的其它窗口。(2) 多文檔窗口與帶微幫助的多文檔窗口特性基本一致,只是后者增加了MicroHelp功能,即在MDI框架底部的狀態行中,可以顯示幫助信息。 3.2.2 窗口的滾動屬性窗口的滾動屬性窗口的滾動屬性頁見圖。 3.
6、2.2 窗口的滾動屬性窗口的滾動屬性滾動屬性頁中兩個復選框HscrollBar和VScrollBar決定窗口是否采用水平或垂直滾動條,其余四個帶微調按鈕的數字編輯框設置滾動速度。PowerBuidler使用自己的屏幕尺寸度量方法PBU,單位為units,PBU與屏幕像素之間通過系統提供的兩個函數可以相互轉換, UnitsToPixels(Units,type)實現PBU到屏幕像素的轉換;PixelsToUnits (Pixels,type)實現屏幕像素到PBU的轉換。 3.2.3 應用程序窗口的工具欄應用程序窗口的工具欄注意注意:這里所說的工具欄并非在PowerBuilder編程環境中系統提供
7、的 工具欄,而是指應用程序制作的、在應用程序中使用的工具欄。 工具欄放置位置有5種。3.2.3 應用程序窗口的工具欄應用程序窗口的工具欄 應用程序窗口的工具欄屬性頁見圖3-6。 3.2.4 窗口的其它屬性頁窗口的其它屬性頁 窗口的其它屬性頁見圖。 3.2.4 窗口的其它屬性頁窗口的其它屬性頁 窗口的其它屬性頁包含了兩個功能窗口的其它屬性頁包含了兩個功能:一個是調整窗口的位置和幾何尺寸;另一個是選擇在窗口內的光標形狀。 調整窗口的幾何尺寸有兩種方法調整窗口的幾何尺寸有兩種方法:一種是在窗口畫板的布局視圖區中用鼠標來實現,將鼠標移動到布局視圖區中窗口的外邊沿處,使鼠標指針變為雙向箭頭,然后按下鼠標
8、左鍵并拖動鼠標來改變窗口的大小。窗口尺寸改變較大時,需要借助布局視圖區的水平或垂直滾動條來完成。另一種調整窗口的幾何尺寸的方法就是在本屬性頁中修改窗口的尺寸,所有尺寸均采用PBU 的單位units。3.3.1 PowerBuidler窗口函數窗口函數幾個常用窗口函數及其使用方法幾個常用窗口函數及其使用方法:1. 窗口的操作窗口的操作 :打開窗口(無參數) Open(windowvar ,Parent) windowvar:窗口變量名; parent:父窗口變量名 1:打開窗口成功;-1:出錯 打開窗口(帶參數) OpenWithParm ( windowvar, parameter , par
9、ent ) 關閉窗口 Close(wndname) wndname:窗口變量名 1:成功 -1:出錯 關閉窗口(帶返回值) CloseWithReturn(Wndname,rtnval) wndname: 窗口變量名; rtnval: 要返回的值 1:成功 -1:出錯顯示窗口 objectname.Show() objectname:窗口、控件或其它對象的名稱 1:成功 -1:出錯3.3.1 PowerBuidler窗口函數窗口函數顯示窗口 objectname.Show() objectname:窗口、控件或其它對象的名稱 1:成功 -1:出錯隱藏窗口 objectname.Hide ( )
10、 objectname:窗口、控件或其它對象的名稱 1:成功 -1:出錯移動窗口 objectname.Move ( x, y ) objectname:窗口、控件或其它對象的名稱;(x,y):移動目標點位置PBU 1:成功 -1:出錯改變窗口大小 objectname.Resize ( width, height ) objectname:窗口、控件或其它對象的名稱; width:新的寬度 height:新的高度 1:成功 -1:出錯2.MDI窗口窗口 打 開 表 單 窗 口 O p e n S h e e t ( s h e e t r e f v a r , windowtype ,md
11、iframe, position ,arrangeopen ) Sheetrefvar:MDI窗口外的任何窗口類型的變量; windowtype:要打開窗口的類型; mdiframe: MDI框架窗口名稱; position: 要打開表單在菜單中的編號; arrangeopen: 要打開表單出現的格式,取值Cascaded!,Layer!或Original! 1:成功 -1:出錯3.3.1 PowerBuidler窗口函數窗口函數返回當前活動表單窗口 mdiframewindow.GetActiveSheet ( ) mdiframewindow: MDI框架窗口 成功返回window對象;
12、一般用IsValid ()函數判斷返回窗口是否有效返回第一個表單窗口 mdiframewindow.GetFirstSheet ( ) mdiframewindow: MDI框架窗口 成功返回window對象;一般用IsValid ()函數判斷返回窗口是否有效返回下一個表單窗mdiframewindow.GetNextSheet ( sheet ) mdiframewindow: MDI框架窗口 成功返回window對象;一般用IsValid ()函數判斷返回窗口是否有效狀態行中顯示字符串 windowname.SetMicroHelp ( string ) Windowname:帶微幫助的M
13、DI框架窗口名稱 String:要顯示的字符串 1:成功 -1:出錯3.3.1 PowerBuidler窗口函數窗口函數3. 觸發事件觸發事件 觸發事件 objectname.TriggerEvent ( event , word, long ) objectname:對象名稱; event:要觸發的事件; word和和long: 傳遞的事件參數 TRUE:成功 FALSE:失敗觸發事件(放入事件隊列) objectname.PostEvent ( event, word, long ) objectname:對象名稱; event:要觸發的事件;word和和long: 傳遞的事件參數 TRU
14、E:成功 FALSE:失敗傳遞參數的具體要求傳遞參數的具體要求: (1) 傳遞參數只能是字符串、數值或PowerBuilder對象; (2) 傳遞參數存儲在Message對象的相應屬性中,即在Message.StringParm中,數值在Message.DoubleParm中,PowerBuilder對象在Message.PowerObjectParm中; (3) 要返回多個值,應創建存放傳遞參數的用戶自定義結構,訪問Message對象的PowerObjectParm屬性。 (4) 傳遞事件參數為word或long數據類型,傳遞參數存儲在Message對象的相應屬性中,即WordParm和Lo
15、ngParm中。如果Long參數值為字符串,可在被觸發的事件中,使用String函數,并用address關鍵字指定參數的格式。 3.3.2 用戶自定義窗口函數用戶自定義窗口函數 定義和使用用戶自定義函數的步驟:定義和使用用戶自定義函數的步驟:如果函數定義區沒有打開,則可以用下列兩種辦法之一將其打開。(1) 單擊Insert菜單標題下的Function菜單項;3.3.2 用戶自定義窗口函數用戶自定義窗口函數(2) 點擊腳本子窗口左上邊的下拉列表框的小三角,選擇彈出列表選項中的Function項。 3.3.2 用戶自定義窗口函數用戶自定義窗口函數 2. 函數定義區函數定義區 彈出的函數定義區見圖。
16、 3.3.2 用戶自定義窗口函數用戶自定義窗口函數 在Access中選擇函數返回值的訪問控制范圍,在Return Value欄中選擇返回值的數據類型。在Function Name 欄中輸入函數的名稱。定義函數的入口參數,在Value下拉列表框中選擇入參的傳遞方式。在Argument Type下拉列表框中選擇入參的數據類型,在Argument Name欄中輸入入參的名稱。3.3.2 用戶自定義窗口函數用戶自定義窗口函數3. 函數的使用函數的使用函數的使用有靜態調用和動態調用兩種方式函數的使用有靜態調用和動態調用兩種方式 前者是系統缺省的函數調用方式,靜態調用,就是系統在編譯代碼時就對函數進行徹底
17、地編譯,對返回值以及入參進行檢查和匹配,出現問題立即報告錯誤。例如,在窗口w_1中定義了一個整型數的加法運算函數 integer AddFunc(integer add1,integer add2)。則靜態調用的方法為: int value=w_1.AddFunc(123,456) 動態調用的函數在執行的時候才會去查找和調用相應的函數,在程序編譯時可以沒有該函數。優點是程序的開發具有極大的靈活性,缺點是降低了應用程序執行的速度,缺少調試編譯中的錯誤檢查功能。動態調用的方法是在函數名稱前加上DYNAMIC。動態調用的方法示例: int value=w_1.DYNAMIC AddFunc(123,
18、456)3.4 窗口事件窗口事件 程序設計的一個顯著特點是客戶程序和函數大都是由事件觸發的,編程者需要在某一事件發生的時候進行相關的處理。 窗口的主要事件窗口的主要事件 : Activate :在激活(Active)窗口前發生 該事件發生后, 窗口中第一個跳轉次序號最小的對象首先得到焦點。如果窗口中沒有這樣的對象,則窗口本身得到焦點Clicked:參數 Unsigned Long flags、Integer xpos 、 Integer ypos 用戶單擊窗口中空白區域時發生。 flags指明用戶按了鼠標的哪個鍵及按鍵時用戶是否按住了Alt或Ctrl鍵; xpos指明單擊時鼠標指針離窗口左邊緣
19、的距離; ypos指明單擊時鼠標指針離窗口上邊緣的距離Close無窗口被關閉時發生。觸發該事件后,沒有辦法能夠阻止窗口關閉操作 CloseQuery :開始關閉窗口時,發生該事件,返回值為0或1。 執行該事件的事件處理程序后,檢查返回值,返回值為1,窗口不被關閉,緊隨其后發生的Close事件不被產生;返回值為0,窗口被關閉。用該事件程序能夠根據當前狀態提醒保存數據、詢問是否真要關閉窗口。窗口被關閉時,關閉任何與之相關的子窗口和彈出窗口Deactivate:窗口變為不活動時發生DoubleClicked :參數參數: Unsigned Long flags , Integer xpos , In
20、teger ypos 當雙擊窗口客戶區中任何未被有效控件占用的部分時發生。各參數的意義與Clicked事件相同3.4 窗口事件窗口事件DragEnter:參數參數: DragObject source 當可拖放對象進入窗口客戶區時發生。 參數source是個引用,指明被拖動的是哪個對象DragLeave:參數參數: DragObject source 當可拖放對象離開窗口客戶區時發生。 參數source是個引用,指明被拖動的是哪個對象 DragWithin :參數參數: DragObject source 當可拖放對象在窗口客戶區中被拖動時發生。 參數source是個引用,指明被拖動的是哪個對
21、象 HotLinkAlarm:在動態數據交換(DDE)服務器應用發送了新的(修改后的)數據、且客戶DDE應用程序已經接收到數據時發生Key : 參數參數 :key (枚舉型鍵碼) ULong keyflags 在鍵盤上按下一個鍵且插入點不在編輯區域中時發生。 參數key是個枚舉型數據,指示按下了哪個鍵;參數keyflags指明按鍵時是否同時按住了Alt和/或Ctrl鍵 MouseDown :參數參數 : Unsigned Long flags, Integer xpos, Integer ypos 在窗口客戶區中未被有效控件占用的部分按下左鍵時發生。各參數的意義與Clicked事件相同,fla
22、gs的值總為1 MouseMove :參數參數 : Unsigned Long flags, Integer xpos ,Integer ypos當鼠標在窗口內移動時發生。 各參數的意義與Clicked事件相同MouseUp :參數參數 : Unsigned Long flags ,Integer xpos ,Integer ypos當用戶在窗口客戶區中任何未被有效控件占用的部分放開鼠標左鍵時發生。各參數的意義與Clicked事件相同3.4 窗口事件窗口事件Open :在窗口打開之后、顯示之前發生。 下述函數觸發窗口的Open事件:Open、OpenWithParm、OpenSheet、Ope
23、nSheetWithParm RButtonDown :參數參數 :Unsigned Long flags , Integer xpos , Integer ypos 當用戶在窗口客戶區中任何未被有效控件占用的部分按下鼠標右鍵時發生。各參數的意義與Clicked事件相同RemoteExec:一個DDE客戶應用程序發送了一條命令時發生RemoteHotLinkStart:一個DDE客戶應用程序要開始一個熱連接時發生RemoteHotLinkStop:一個DDE客戶應用程序要結束一個熱連接時發生RemoteRequest:一個DDE客戶應用程序請求數據時發生 RemoteSend :一個DDE客戶
24、應用程序已經發送了數據時發生 Resize:參數參數 :ULong sizetype,Integer newwidth, Integer newheight 窗口大小發生變化、窗口被打開時產生此事件。 參數sizetype指明改變窗口大小的類型; newwidth指明窗口的新寬度; newheight指明窗口的新高度 SystemKey :參數參數 :key(枚舉型鍵碼)ULong keyflags 插入點不在編輯框中且用戶按下Alt或Alt+其它鍵時發生。 各參數的含義與Key事件類似 Timer :調用Timer函數啟動定時器、設定時間后發生 ToolbarMoved :MDI窗口上的工具
25、欄被移動時發生3.4 窗口事件窗口事件當第一次打開窗口時,在窗口顯示之前系統觸發Open(打開)事件,在Open事件發生時,系統已經創建了窗口及窗口中的控件.窗口被打開后,窗口類型(Window Type)屬性不能再被更改 .編寫窗口的事件處理程序的步驟為:編寫窗口的事件處理程序的步驟為:(1)打開該窗口;(2)如果腳本編輯區沒有打開,可右鍵單擊視圖編輯區中設計的窗口(不要單擊窗口上的任何控件,該步操作的目的是選中窗口,打開右鍵菜單),單擊菜單中Script菜單項,即可打開腳本編輯區。(3)在“選擇事件”列表框中選擇要編程的事件,例如Open(),然后根據應用需要編寫特定的程序。一般,窗口Op
26、en事件中,要安排窗口中控件和數據窗口的初始化程序,有關編程方法將在窗口控件中介紹。3.5.1 在窗口中編寫腳本在窗口中編寫腳本 腳本采用PowerScript 語言編寫,腳本中可以使用各種窗口函數、系統函數、自定義函數和API函數,可以直接對窗口對象的屬性賦值,改變它們的外觀或行為。可以測試屬性的值,獲取窗口對象的信息。 例如,在窗口的Key事件中,捕捉用戶的按鍵,并根據按鍵的類型進行不同的處理。可以在窗口的Key事件腳本區中編寫如下代碼: / key為系統捕捉到的用戶按鍵,keyenter!為“回車”鍵的枚舉值 if key=keyenter! then cb_ok.triggerEvent(Clicked!) / 觸發cb_ok控件的Clicked事件 end if 窗口的Open事件是對窗口以及窗口中控件進行初始化的地方,編寫腳本的機會最多。 3.5.2 窗口設計實例窗口設計實例 設計一個窗口應用程序,運行程序時打開主窗口,在主窗口中單擊鼠標右鍵后,每隔10秒彈出一個消息對話框,再次單擊右鍵則停止彈出消息對話框;在主窗口中單
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能醫療設備研發制造協議
- 建筑結構設計與施工技術知識小結卷
- 農戶與農場主合作協議
- 市場營銷消費者行為學模擬題卷設計思路解析
- 銷售代理委托協議及傭金支付
- 軟件開發測試與驗收交付協議
- 低空經濟時代的商業廣告與傳播方式創新
- DB14-T 3411-2025 草種質資源普查技術規程
- 建筑機器人技術的應用現狀與未來發展潛力
- 互聯網游戲服務合同
- 綠色農村人居環境整治建設宜居美麗鄉村環境整治是關鍵動態PPT模板
- LANTEK蘭特鈑金軟件手冊(下)
- 套管開窗側鉆技術
- 礦區1∶2000地質填圖工作細則
- 嶺南版二年級美術下冊知識點
- 回彈模量原始記錄表格及計算
- “文明宿舍”評比方案
- 小學數學人教課標版二年級下冊9數學廣角──推理 教學反思
- 就遠原則和就近原則
- 智能除濕裝置施工方案
- 東方海外 OOCL船公司介紹課件
評論
0/150
提交評論