PowerBuilder第18講 拖放技術(shù)_第1頁
PowerBuilder第18講 拖放技術(shù)_第2頁
PowerBuilder第18講 拖放技術(shù)_第3頁
PowerBuilder第18講 拖放技術(shù)_第4頁
PowerBuilder第18講 拖放技術(shù)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第18講拖放技術(shù)結(jié)束放映第一頁上一頁下一頁最后一頁拖放是一種用來完成對象上操作的方法,它通過單擊對象并在移動鼠標(biāo)時(shí)按住鼠標(biāo)按鈕來實(shí)現(xiàn),這個(gè)過程叫做拖動(Dragging)。然后把對象移動到指定的對象并釋放鼠標(biāo),這個(gè)過程叫做釋放(Dropping)。因此,拖放是一種通過鼠標(biāo)直接操縱對象及其數(shù)據(jù)的方法。

目的要求:1.理解拖放定義2.了解拖放規(guī)則3.掌握拖放技術(shù)18.1拖放技術(shù)1.拖放拖放是一種用來完成對象上的操作的方法,它通過單擊對象并在移動鼠標(biāo)時(shí)按住鼠標(biāo)按鈕來實(shí)現(xiàn)。

2.拖動模式當(dāng)對一個(gè)可以拖動的對象單擊并在移動鼠標(biāo)時(shí)按住鼠標(biāo)按鈕,就稱為拖動模式。3.釋放模式當(dāng)把拖動的對象移動到指定的目標(biāo)對象并釋放鼠標(biāo)時(shí),就稱為釋放模式。4.被拖對象即為源對象,是希望在其上完成某個(gè)動作的對象。5.目標(biāo)對象即為拖動目的地,是被拖對象釋放到的對象。。拖放操作中要涉及兩個(gè)控件:拖放的控件和放置拖放控件的控件(目標(biāo)控件)。除了線、橢圓、矩形等繪圖對象外,PowerBuilder中的所有控件都可以拖放。所以說:拖放可以使用戶界面更加友好。拖放涉及PowerBuilder窗口上至少二個(gè)控制或?qū)ο蟆M戏偶夹g(shù)最典型的用途是直接對數(shù)據(jù)進(jìn)行插入和查詢。結(jié)束放映第一頁上一頁下一頁最后一頁18.2拖放規(guī)則正確實(shí)施拖放應(yīng)當(dāng)遵循一些規(guī)則,以便保證拖放成功。在應(yīng)用程序中經(jīng)常使用拖放技術(shù)是非常方便的。要注意的主要規(guī)則就是拖放是用來表示在特定對象上完成的某個(gè)操作的。源對象和由目標(biāo)對象完成的操作之間的關(guān)系是直觀的和有意義的。在確定了實(shí)現(xiàn)拖放的用途之后,需要標(biāo)識出哪個(gè)對象用做被拖對象,哪個(gè)對象用做目標(biāo)對象對象。適合作為被拖對象DataWindow行與列代表數(shù)據(jù)的Picture控件列表框內(nèi)的項(xiàng)目適合作為目標(biāo)對象DataWindow

代表動作的Picture控件列表框或下拉列表框命令按鈕需要修改其特性的任意對象說明:不讓拖放操作妨礙控件的正常用法是非常重要的。例如,通常命令按鈕就不適于作為被拖對象。這是因?yàn)橛脩魡螕裘畎粹o時(shí)通常要用某個(gè)處理過程,而不是要啟動拖放對話。如果對被拖對象或目標(biāo)對象使用了圖片,應(yīng)確保使用的圖片是有意義的。這種方法為用戶提供了一種更直觀的界面。另外在兩個(gè)對象之間進(jìn)行拖動時(shí),會有一個(gè)圖標(biāo)(稱為拖動圖標(biāo))來標(biāo)明對象處于拖動狀態(tài)。拖動圖標(biāo)應(yīng)該是有意義的,這樣,用戶才能確切地知道正在拖動哪個(gè)對象,以及要把對象拖動到哪里。最后要說的一點(diǎn)是,拖放不應(yīng)該成為完成為某項(xiàng)任務(wù)的唯一的方法。還應(yīng)當(dāng)提供鍵盤或菜單選項(xiàng)讓用戶完成同樣的功能,這樣能為用戶提供更多的靈活性,而且不會把用戶栓在特定的輸入設(shè)備上。18.3拖放屬性PowerBuilder中的每個(gè)可拖放控件都有兩個(gè)拖放屬性:DragAuto和DragIcon。這兩個(gè)屬性位于控件的Properties視圖的Other標(biāo)簽頁上。1.DragAuto屬性DragAuto屬性是一個(gè)布爾型變量。若某控件的DragAuto屬性為Ture,則當(dāng)單擊這個(gè)控件時(shí),它將自動處于拖動模式。若某控件的DragAuto屬性為False,則當(dāng)單擊這個(gè)控件時(shí),它不會自動處于拖動模式。而必須在適當(dāng)?shù)氖录绦蛑惺褂肈rag函數(shù)來把它置于拖動模式。在窗口畫板中定義某個(gè)控件的自動拖動模式的步驟如下:(1)打開該控件的Properties視圖的Other標(biāo)簽頁。(2)選中DragAuto復(fù)選框,即將該控件的DragAuto屬性設(shè)為True。

2.DragIcon屬性如果使用DragIcon屬性為某個(gè)控件定義了一個(gè)圖標(biāo),則當(dāng)該控件處于拖放模式時(shí),這個(gè)圖標(biāo)將代替原控件顯示在屏幕上,表示其處于一個(gè)有效的拖放區(qū)。當(dāng)控件處于一個(gè)非有效區(qū)域時(shí)(如窗口的滾動條上),就會顯示非放下(NO_Drop)圖標(biāo)。定義一個(gè)拖放圖標(biāo)的步驟如下:(1)打開該控件的Properties視圖的Other標(biāo)簽頁。(2)從圖標(biāo)列表中選擇一個(gè)圖標(biāo)或使用Browse按鈕選擇一個(gè)ICO文件即可。

結(jié)束放映第一頁上一頁下一頁最后一頁18.4控件的拖放函數(shù)每個(gè)可拖放控件都包含兩個(gè)與拖放有關(guān)的函數(shù):Drag和DraggedObject(1)Drag函數(shù)這個(gè)函數(shù)用來啟動、結(jié)束或取消某個(gè)拖放操作。格式如下:control.Drag(dragmode)其中,control是某個(gè)可拖放的控件,dragmode表示該函數(shù)將執(zhí)行何種操作,其枚舉值如下:·begin!:使某個(gè)控件進(jìn)入Drag模式?!ancel!:結(jié)束Drag模式,但不會觸發(fā)目標(biāo)對象的DragDrop事件?!nd!:結(jié)束Drag模式,并且觸發(fā)目標(biāo)對象的DragDrop事件。結(jié)束放映第一頁上一頁下一頁最后一頁(2)DraggedObject函數(shù)這個(gè)函數(shù)用來獲取當(dāng)前正在被拖動的控件。格式如下:DraggedObject()該函數(shù)返回當(dāng)前正在被拖動的控件,且返回值的數(shù)據(jù)類型為DragObject,它包含了所有可拖動控件。如果當(dāng)前沒有任何控件處于拖動狀態(tài),該函數(shù)將顯示一條運(yùn)行錯誤。因此,一般是在目標(biāo)控件的拖放事件中來使用這個(gè)函數(shù)??梢允褂肨ypeOf函數(shù)來判斷被拖動的控件屬于什么類型,然后把DraggedObject返回值賦給一個(gè)相同類型的變量,之后就可以訪問該控件的各種屬性了。

18.4拖放事件

PowerBuilder提供了6個(gè)拖放事件如下:DragDrop事件是最重要的事件,當(dāng)應(yīng)用程序處于拖動模式并且當(dāng)鼠標(biāo)指針在目標(biāo)對象上時(shí)釋放鼠標(biāo)時(shí),將觸發(fā)該事件。即指示一個(gè)被拖動的控件是否已經(jīng)被放在了目標(biāo)控件上。另外三個(gè)事件當(dāng)應(yīng)用程序處于拖動模式時(shí),以及當(dāng)被拖動對象移動到目標(biāo)對象上時(shí)被觸發(fā)。被拖對象的移動方式和位置確定觸發(fā)哪個(gè)事件。DragEnter事件被拖對象的中心(也叫做“熱點(diǎn)”)通過邊沿進(jìn)入目標(biāo)對象。即指示一個(gè)被拖動的控件是否正進(jìn)入目標(biāo)控件。DragLeave事件被拖對象的中心退出目標(biāo)對象。即指示一個(gè)被拖動的控件是否正離開目標(biāo)控件。DragWithin事件被拖對象的中心位于目標(biāo)對象內(nèi)。即指示一個(gè)被拖動的控件是否正在目標(biāo)控件內(nèi)移動。

結(jié)束放映第一頁上一頁下一頁最后一頁BeginDrag

當(dāng)單擊鼠標(biāo)左鍵并開始拖動一個(gè)控件時(shí)BeginrightDrag

當(dāng)單擊鼠標(biāo)右鍵并開始拖動一個(gè)控件時(shí)前4個(gè)事件都適用于目標(biāo)控件,而不適用于被拖動的控件。后2個(gè)事件用于被拖動的控件。

18.5拖放操作舉例例1:某企業(yè)職工的名冊利用樹狀瀏覽窗口來顯示,數(shù)據(jù)庫中職工的基本情況利用數(shù)據(jù)窗口來瀏覽,如下頁圖所示。當(dāng)用戶用鼠標(biāo)拖動TreeView控件中的名字到數(shù)據(jù)窗口中時(shí),便會在數(shù)據(jù)窗口中顯示該職工的詳細(xì)情況。結(jié)束放映第一頁上一頁下一頁最后一頁1.創(chuàng)建Application對象2.創(chuàng)建數(shù)據(jù)窗口對象這里使用PowerBuilder本身所帶的EASDemoDBV4數(shù)據(jù)庫Employee表。3.創(chuàng)建窗口和添加控件4.腳本說明(1)在Application的Open事件中添加腳本//ProfileEASDemoDBV4SQLCA.DBMS="ODBC"SQLCA.AutoCommit=FalseSQLCA.DBParm="ConnectString=‘DSN=EASDemoDBV4;UID=dba;PWD=sql'"Open(w_newtv)(2)聲明實(shí)例變量longll_source,xt_rootitem結(jié)束放映第一頁上一頁下一頁最后一頁(3)窗口的Open事件中添加腳本connect;//定義變量longli_rowsint

li_cntstringls_nametreeviewitem

xt_tvitem//顯示數(shù)據(jù)dw_1.settransobject(sqlca)li_rows=dw_1.retrieve()tv_1.setredraw(false)tv_1.deleteitem(xt_rootitem)//添加第一級項(xiàng)目xt_tvitem.label="職工姓名"xt_tvitem.pictureindex=1xt_tvitem.selectedpictureindex=1xt_rootitem=tv_1.insertitemfirst(0,xt_tvitem)結(jié)束放映第一頁上一頁下一頁最后一頁//添加第二級項(xiàng)目:職工姓名forli_cnt=1toli_rows

ls_name=dw_1.getitemstring(li_cnt,"emp_fname")

xt_tvitem.label=ls_name

xt_tvitem.pictureindex=2

xt_tvitem.selectedpictureindex=2tv_1.insertitemlast(xt_rootitem,xt_tvitem)nexttv_1.setredraw(true)(4)在tv_1的clicked事件中添加如下腳本treeviewitemtree_item//獲取要拖動的項(xiàng)目this.getitem(handle,tree_item)如果不是第二級數(shù)據(jù)項(xiàng)則取消拖放iftree_item.level<>2then this.drag(cancel!)else tv_1.drag(begin!)

ll_source=handleendif 結(jié)束放映第一頁上一頁下一頁最后一頁(5)在dw_1的dragdrop事件中添加如下腳本//定義變量longli_rows,li_query_rowtreeview

treeview_dragtreeviewitemtree_itemstringls_name//獲取記錄數(shù)li_rows=dw_1.rowcount()//獲取拖動源對象treeview_drag=draggedobject()//獲取拖動的源項(xiàng)目treeview_drag.getitem(ll_source,tree_item)//獲取職工姓名ls_name=tree_item.label//檢索記錄li_query_row=dw_1.find("emp_fname=‘"+ls_name+"'",1,li_rows)dw_1.scrolltorow(li_query_row)結(jié)束放映第一頁上一頁下一頁最后一頁(6)在c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論