版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、用PBPB做一個通用右鍵菜單做一個通用右鍵菜單對象被右鍵單擊就彈出一個功能菜單是Windows應用程序一項不可缺少的功能。在PowerBuilder應用開發(fā)中,可在需彈出右鍵菜單對象的rbuttondown事件中調用該菜單的Popmenu()方法實現(xiàn)這一功能。但多數(shù)情況下,應用中有多處要用到不同的彈出式菜單,如一一用這種方法就需要做大量的工作。能不能做一個通用的菜單,可以用任何對象的rbuttondown事件激發(fā)彈出,并在彈出前動態(tài)改變
2、彈出菜單項的內容,當點擊菜單項時又可執(zhí)行被右擊對象的相應用戶事件?由于這一技術最大的特點是當函數(shù)創(chuàng)建成功后,可在任何應用的任何對象中隨心所欲的使用,隨時隨地彈出自己想要顯示的菜單項,并執(zhí)行相應的自己需要的功能腳本,但目前各種資料上鮮有系統(tǒng)、成型的介紹。一、創(chuàng)建彈出菜單m_popup1、創(chuàng)建一個菜單m_popup定義菜單條m_main,其下有十五個菜單項,分別命名為m_item1m_item2……m_item1,各項的顯示文本(text)
3、分別為item1item2……item15;2、為m_popup菜單定義一個Powerobject類型的InstanceVariables變量:Anyobject,腳本為:PowerobjectAnyobject3、給m_item1m_item2……m_item15各菜單項的Clicked事件下分別輸入腳本:Anyobject.triggerevent(“ue_item1“)m_item1的clicked事件Anyobject.trig
4、gerevent(“ue_item2“)……Anyobject.triggerevent(“ue_item15“)4、定義幾個菜單函數(shù):1)setmenuitem(stringitemstring)返回值為Null。參數(shù)Itemstring是由多個子串組成的。各個子串間用“|”間隔,每個子串為一個菜單項的顯示文本(text)。該函數(shù)功能是把itemstring分解為多個子串,并把子串賦給相應菜單項的text。腳本如下:intitempo
5、sitemder=1listringcurrentitemmessagebox(“l(fā)en(itemstring)“string(len(itemstring)))iflen(itemstring)=0thenreturnelseitempos=pos(itemstring“|“)messagebox(“itempos“string(itempos))DOWHILEitempos0itempos為間隔符“|“的位置currentitem=
6、left(itemstringitempos1)取出子串messagebox(“currentitem“string(currentitem))itemstring=(itemstringitempos1)this.m_main.item[itemder].text=currentitemitempos=pos(itemstring“|“)messagebox(“itempos=pos(itemstring“string(itempos
7、))返回值全為默認的NULL事件ue_item1腳本:dw_1.retrieve()事件ue_item2腳本:longnewrownewrow=dw_1.row(0)dw_1.scrolltow(newrow)事件ue_item3腳本:dw_1.row(0)事件ue_item4腳本:dw_1.update()這樣,只要用戶單擊dw_1彈出的右鍵菜單,就可完成對dw_1的插入、刪除、修改等功能。三、推廣為全程函數(shù)如果應用中有許多地方要用此
8、功能,我們可以把dw_1的rbuttondown事件腳本改造成一個全程函數(shù)。1、將變量om_1定義為global變量:m_popupom_12、定義一個全程函數(shù)pupmenu(powerobjectsenderstringitemstringintegerxintegery)返回值Null。其中參數(shù)sender為被右擊的對象,itemstring為彈出菜單的菜單項字符串,x、y為菜單彈出的坐標位置。腳本如下:ifnotisvalid(o
9、m_1)thenom_1=CREATEm_popupendifom_1.anyobject=senderom_1.setmenuitem(itemstring)sender.triggerevent(“ue_befepop“)激活sender用戶事件。om_1.popupmenu(xy)這樣,上述dw_1的rbuttondown事件腳本就可改寫為:stringitems=“刷新插入刪除修改“popmenu(thisitemsthis.x
10、this.pointerx()this.ythis.pointery())注意:在MDI應用中,popmenu()函數(shù)需要改為:popmenu(thisitemsw_frame.pointerx()w_frame.pointery())其中w_frame為MDI主窗口名。在函數(shù)popmenu中又激活了被右擊對象的ue_befepop用戶事件。如有必要,你可以給被右擊對象定義一個ue_befepop事件,在該事件中可調用om_1.seti
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論