2017年自考《物流軟件開(kāi)發(fā)工具》章節(jié)復(fù)習(xí)題:用戶(hù)自定義事件
1. 用戶(hù)對(duì)象有哪幾種?如何創(chuàng)建與使用?
答:在PowerBuilder中用戶(hù)對(duì)象分為兩類(lèi):可視用戶(hù)對(duì)象(Visual User Object)和類(lèi)(非可視)用戶(hù)對(duì)象(Class User Object)。可視用戶(hù)對(duì)象又分為標(biāo)準(zhǔn)可視用戶(hù)對(duì)象、定制可視用戶(hù)對(duì)象、外部可視用戶(hù)對(duì)象。類(lèi)用戶(hù)對(duì)象又分為標(biāo)準(zhǔn)類(lèi)用戶(hù)對(duì)象和定制類(lèi)用戶(hù)對(duì)象。
在PowerBuilder中,單擊PowerBar工具條欄中的【New】圖標(biāo),在彈出的對(duì)話(huà)框中選擇【PB Object】標(biāo)簽頁(yè),選中要?jiǎng)?chuàng)建的用戶(hù)對(duì)象的類(lèi)型,單擊【OK】按鈕即可創(chuàng)建用戶(hù)對(duì)象。
【Standard Visual】項(xiàng)創(chuàng)建標(biāo)準(zhǔn)可視用戶(hù)對(duì)象;【Custom Visual】項(xiàng)創(chuàng)建定制可視用戶(hù)對(duì)象;【External Visual】項(xiàng)創(chuàng)建外部可視用戶(hù)對(duì)象;【Standard Class】項(xiàng)創(chuàng)建標(biāo)準(zhǔn)類(lèi)用戶(hù)對(duì)象;【Custom Class】項(xiàng)創(chuàng)建定制類(lèi)用戶(hù)對(duì)象。
可視用戶(hù)對(duì)象同其他控件一樣放置到窗口或其他定制可視用戶(hù)對(duì)象上使用,類(lèi)用戶(hù)對(duì)象則需要在代碼中通過(guò)編寫(xiě)程序同其他系統(tǒng)類(lèi)一樣來(lái)使用。
2. 為什么要使用用戶(hù)事件?怎樣創(chuàng)建和使用用戶(hù)事件?
答:用戶(hù)事件是用戶(hù)給PowerBuilder 的窗口對(duì)象或窗口上的控件對(duì)象定義的除標(biāo)準(zhǔn)事件之外的事件。在下列情況下經(jīng)常使用用戶(hù)事件:
(1) 窗口與用戶(hù)對(duì)象之間的通信。窗口和用戶(hù)對(duì)象之間可以通過(guò)用戶(hù)事件進(jìn)行通信。
(2) 按鍵處理問(wèn)題。應(yīng)用程序需要截獲除標(biāo)準(zhǔn)事件之外的操作信息。
(3) 代碼放置的合理性。比如前面介紹菜單時(shí)曾經(jīng)說(shuō)過(guò),菜單是一個(gè)相當(dāng)脆弱的對(duì)象,盡量不要在它上面放置過(guò)多的代碼。如果要對(duì)某些菜單項(xiàng)做一些復(fù)雜的操作,可以在擁有這個(gè)菜單的窗口上定義一個(gè)相應(yīng)的用戶(hù)事件。然后只要在該菜單項(xiàng)的Clicked事件中觸發(fā)窗口相應(yīng)的用戶(hù)事件就可以了。在這種情況下,對(duì)用戶(hù)事件的定義更加簡(jiǎn)單。因?yàn)樗静恍枰詣?dòng)觸發(fā),所以不需要定義它的事件標(biāo)識(shí)。
要?jiǎng)?chuàng)建用戶(hù)事件,首先在Windows畫(huà)板中選中一個(gè)對(duì)象,可以是當(dāng)前打開(kāi)的窗口對(duì)象或窗口上的一個(gè)控件對(duì)象。然后選擇【Insert】|【Event】命令,PowerBuilder將打開(kāi)一個(gè)名為“Untitled”的窗口,用于創(chuàng)建一個(gè)用戶(hù)事件。用戶(hù)可以在其中修改這個(gè)用戶(hù)事件的名字、返回值類(lèi)型、參數(shù)信息和權(quán)限,它們的操作界面和函數(shù)畫(huà)板的窗口完全相同。
定義用戶(hù)事件后,就需要設(shè)計(jì)事件處理程序。就像其他系統(tǒng)常用事件一樣,沒(méi)有事件處理程序,即使發(fā)生了該事件,應(yīng)用程序也不做任何處理。如果使用的是PowerBuilder提供的標(biāo)準(zhǔn)事件標(biāo)識(shí),那么它會(huì)在該標(biāo)識(shí)對(duì)應(yīng)的操作進(jìn)行時(shí)被觸發(fā)。如果PowerBuilder沒(méi)有使用任何事件標(biāo)識(shí),那么它永遠(yuǎn)不會(huì)自動(dòng)觸發(fā),只能用戶(hù)自己編程對(duì)它進(jìn)行觸發(fā)。