




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第18講拖放技術(shù)結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)拖放是一種用來完成對(duì)象上操作的方法,它通過單擊對(duì)象并在移動(dòng)鼠標(biāo)時(shí)按住鼠標(biāo)按鈕來實(shí)現(xiàn),這個(gè)過程叫做拖動(dòng)(Dragging)。然后把對(duì)象移動(dòng)到指定的對(duì)象并釋放鼠標(biāo),這個(gè)過程叫做釋放(Dropping)。因此,拖放是一種通過鼠標(biāo)直接操縱對(duì)象及其數(shù)據(jù)的方法。
目的要求:1.理解拖放定義2.了解拖放規(guī)則3.掌握拖放技術(shù)18.1拖放技術(shù)1.拖放拖放是一種用來完成對(duì)象上的操作的方法,它通過單擊對(duì)象并在移動(dòng)鼠標(biāo)時(shí)按住鼠標(biāo)按鈕來實(shí)現(xiàn)。
2.拖動(dòng)模式當(dāng)對(duì)一個(gè)可以拖動(dòng)的對(duì)象單擊并在移動(dòng)鼠標(biāo)時(shí)按住鼠標(biāo)按鈕,就稱為拖動(dòng)模式。3.釋放模式當(dāng)把拖動(dòng)的對(duì)象移動(dòng)到指定的目標(biāo)對(duì)象并釋放鼠標(biāo)時(shí),就稱為釋放模式。4.被拖對(duì)象即為源對(duì)象,是希望在其上完成某個(gè)動(dòng)作的對(duì)象。5.目標(biāo)對(duì)象即為拖動(dòng)目的地,是被拖對(duì)象釋放到的對(duì)象。。拖放操作中要涉及兩個(gè)控件:拖放的控件和放置拖放控件的控件(目標(biāo)控件)。除了線、橢圓、矩形等繪圖對(duì)象外,PowerBuilder中的所有控件都可以拖放。所以說:拖放可以使用戶界面更加友好。拖放涉及PowerBuilder窗口上至少二個(gè)控制或?qū)ο?。拖放技術(shù)最典型的用途是直接對(duì)數(shù)據(jù)進(jìn)行插入和查詢。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)18.2拖放規(guī)則正確實(shí)施拖放應(yīng)當(dāng)遵循一些規(guī)則,以便保證拖放成功。在應(yīng)用程序中經(jīng)常使用拖放技術(shù)是非常方便的。要注意的主要規(guī)則就是拖放是用來表示在特定對(duì)象上完成的某個(gè)操作的。源對(duì)象和由目標(biāo)對(duì)象完成的操作之間的關(guān)系是直觀的和有意義的。在確定了實(shí)現(xiàn)拖放的用途之后,需要標(biāo)識(shí)出哪個(gè)對(duì)象用做被拖對(duì)象,哪個(gè)對(duì)象用做目標(biāo)對(duì)象對(duì)象。適合作為被拖對(duì)象DataWindow行與列代表數(shù)據(jù)的Picture控件列表框內(nèi)的項(xiàng)目適合作為目標(biāo)對(duì)象DataWindow
代表動(dòng)作的Picture控件列表框或下拉列表框命令按鈕需要修改其特性的任意對(duì)象說明:不讓拖放操作妨礙控件的正常用法是非常重要的。例如,通常命令按鈕就不適于作為被拖對(duì)象。這是因?yàn)橛脩魡螕裘畎粹o時(shí)通常要用某個(gè)處理過程,而不是要啟動(dòng)拖放對(duì)話。如果對(duì)被拖對(duì)象或目標(biāo)對(duì)象使用了圖片,應(yīng)確保使用的圖片是有意義的。這種方法為用戶提供了一種更直觀的界面。另外在兩個(gè)對(duì)象之間進(jìn)行拖動(dòng)時(shí),會(huì)有一個(gè)圖標(biāo)(稱為拖動(dòng)圖標(biāo))來標(biāo)明對(duì)象處于拖動(dòng)狀態(tài)。拖動(dòng)圖標(biāo)應(yīng)該是有意義的,這樣,用戶才能確切地知道正在拖動(dòng)哪個(gè)對(duì)象,以及要把對(duì)象拖動(dòng)到哪里。最后要說的一點(diǎn)是,拖放不應(yīng)該成為完成為某項(xiàng)任務(wù)的唯一的方法。還應(yīng)當(dāng)提供鍵盤或菜單選項(xiàng)讓用戶完成同樣的功能,這樣能為用戶提供更多的靈活性,而且不會(huì)把用戶栓在特定的輸入設(shè)備上。18.3拖放屬性PowerBuilder中的每個(gè)可拖放控件都有兩個(gè)拖放屬性:DragAuto和DragIcon。這兩個(gè)屬性位于控件的Properties視圖的Other標(biāo)簽頁(yè)上。1.DragAuto屬性DragAuto屬性是一個(gè)布爾型變量。若某控件的DragAuto屬性為Ture,則當(dāng)單擊這個(gè)控件時(shí),它將自動(dòng)處于拖動(dòng)模式。若某控件的DragAuto屬性為False,則當(dāng)單擊這個(gè)控件時(shí),它不會(huì)自動(dòng)處于拖動(dòng)模式。而必須在適當(dāng)?shù)氖录绦蛑惺褂肈rag函數(shù)來把它置于拖動(dòng)模式。在窗口畫板中定義某個(gè)控件的自動(dòng)拖動(dòng)模式的步驟如下:(1)打開該控件的Properties視圖的Other標(biāo)簽頁(yè)。(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í)(如窗口的滾動(dòng)條上),就會(huì)顯示非放下(NO_Drop)圖標(biāo)。定義一個(gè)拖放圖標(biāo)的步驟如下:(1)打開該控件的Properties視圖的Other標(biāo)簽頁(yè)。(2)從圖標(biāo)列表中選擇一個(gè)圖標(biāo)或使用Browse按鈕選擇一個(gè)ICO文件即可。
結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)18.4控件的拖放函數(shù)每個(gè)可拖放控件都包含兩個(gè)與拖放有關(guān)的函數(shù):Drag和DraggedObject(1)Drag函數(shù)這個(gè)函數(shù)用來啟動(dòng)、結(jié)束或取消某個(gè)拖放操作。格式如下:control.Drag(dragmode)其中,control是某個(gè)可拖放的控件,dragmode表示該函數(shù)將執(zhí)行何種操作,其枚舉值如下:·begin!:使某個(gè)控件進(jìn)入Drag模式?!ancel!:結(jié)束Drag模式,但不會(huì)觸發(fā)目標(biāo)對(duì)象的DragDrop事件?!nd!:結(jié)束Drag模式,并且觸發(fā)目標(biāo)對(duì)象的DragDrop事件。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)(2)DraggedObject函數(shù)這個(gè)函數(shù)用來獲取當(dāng)前正在被拖動(dòng)的控件。格式如下:DraggedObject()該函數(shù)返回當(dāng)前正在被拖動(dòng)的控件,且返回值的數(shù)據(jù)類型為DragObject,它包含了所有可拖動(dòng)控件。如果當(dāng)前沒有任何控件處于拖動(dòng)狀態(tài),該函數(shù)將顯示一條運(yùn)行錯(cuò)誤。因此,一般是在目標(biāo)控件的拖放事件中來使用這個(gè)函數(shù)。可以使用TypeOf函數(shù)來判斷被拖動(dòng)的控件屬于什么類型,然后把DraggedObject返回值賦給一個(gè)相同類型的變量,之后就可以訪問該控件的各種屬性了。
18.4拖放事件
PowerBuilder提供了6個(gè)拖放事件如下:DragDrop事件是最重要的事件,當(dāng)應(yīng)用程序處于拖動(dòng)模式并且當(dāng)鼠標(biāo)指針在目標(biāo)對(duì)象上時(shí)釋放鼠標(biāo)時(shí),將觸發(fā)該事件。即指示一個(gè)被拖動(dòng)的控件是否已經(jīng)被放在了目標(biāo)控件上。另外三個(gè)事件當(dāng)應(yīng)用程序處于拖動(dòng)模式時(shí),以及當(dāng)被拖動(dòng)對(duì)象移動(dòng)到目標(biāo)對(duì)象上時(shí)被觸發(fā)。被拖對(duì)象的移動(dòng)方式和位置確定觸發(fā)哪個(gè)事件。DragEnter事件被拖對(duì)象的中心(也叫做“熱點(diǎn)”)通過邊沿進(jìn)入目標(biāo)對(duì)象。即指示一個(gè)被拖動(dòng)的控件是否正進(jìn)入目標(biāo)控件。DragLeave事件被拖對(duì)象的中心退出目標(biāo)對(duì)象。即指示一個(gè)被拖動(dòng)的控件是否正離開目標(biāo)控件。DragWithin事件被拖對(duì)象的中心位于目標(biāo)對(duì)象內(nèi)。即指示一個(gè)被拖動(dòng)的控件是否正在目標(biāo)控件內(nèi)移動(dòng)。
結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)BeginDrag
當(dāng)單擊鼠標(biāo)左鍵并開始拖動(dòng)一個(gè)控件時(shí)BeginrightDrag
當(dāng)單擊鼠標(biāo)右鍵并開始拖動(dòng)一個(gè)控件時(shí)前4個(gè)事件都適用于目標(biāo)控件,而不適用于被拖動(dòng)的控件。后2個(gè)事件用于被拖動(dòng)的控件。
18.5拖放操作舉例例1:某企業(yè)職工的名冊(cè)利用樹狀瀏覽窗口來顯示,數(shù)據(jù)庫(kù)中職工的基本情況利用數(shù)據(jù)窗口來瀏覽,如下頁(yè)圖所示。當(dāng)用戶用鼠標(biāo)拖動(dòng)TreeView控件中的名字到數(shù)據(jù)窗口中時(shí),便會(huì)在數(shù)據(jù)窗口中顯示該職工的詳細(xì)情況。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)1.創(chuàng)建Application對(duì)象2.創(chuàng)建數(shù)據(jù)窗口對(duì)象這里使用PowerBuilder本身所帶的EASDemoDBV4數(shù)據(jù)庫(kù)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é)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)(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)//添加第一級(jí)項(xiàng)目xt_tvitem.label="職工姓名"xt_tvitem.pictureindex=1xt_tvitem.selectedpictureindex=1xt_rootitem=tv_1.insertitemfirst(0,xt_tvitem)結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)//添加第二級(jí)項(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//獲取要拖動(dòng)的項(xiàng)目this.getitem(handle,tree_item)如果不是第二級(jí)數(shù)據(jù)項(xiàng)則取消拖放iftree_item.level<>2then this.drag(cancel!)else tv_1.drag(begin!)
ll_source=handleendif 結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)(5)在dw_1的dragdrop事件中添加如下腳本//定義變量longli_rows,li_query_rowtreeview
treeview_dragtreeviewitemtree_itemstringls_name//獲取記錄數(shù)li_rows=dw_1.rowcount()//獲取拖動(dòng)源對(duì)象treeview_drag=draggedobject()//獲取拖動(dòng)的源項(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é)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)(6)在c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年防殺病毒軟件項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 2025綠色蔬菜購(gòu)銷合同
- 2025合同法合同履行與違約責(zé)任的相關(guān)法律規(guī)定
- 2025個(gè)人的借款簡(jiǎn)單合同范本
- 2024年聚烯烴類線纜投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2024年粉末橡膠聚硫橡膠項(xiàng)目資金籌措計(jì)劃書代可行性研究報(bào)告
- 2025大慶市建筑工程施工設(shè)備采購(gòu)合同(試行)
- 2025年新版勞動(dòng)合同全面實(shí)施
- 2025寫字樓租賃合同模板2
- 2025年食品銷售合同模板
- 中考英語688高頻詞大綱詞頻表
- YY-T 0954-2015 無源外科植入物-I型膠原蛋白植入劑
- 12-2017-2021年陜西中考數(shù)學(xué)真題分類匯編之統(tǒng)計(jì)與概率
- 膿毒血癥課件
- 2024年時(shí)事政治熱點(diǎn)題庫(kù)200道含完整答案(必刷)
- 2024年北京亦莊國(guó)際投資發(fā)展有限公司招聘筆試沖刺題(帶答案解析)
- 對(duì)方當(dāng)事人送達(dá)地址及相關(guān)信息確認(rèn)書
- 屈光性白內(nèi)障手術(shù)發(fā)展
- 基于物聯(lián)網(wǎng)的智能衣柜
- 醫(yī)院政工查房
- 緩和醫(yī)療-以死觀生的生活智慧智慧樹知到期末考試答案2024年
評(píng)論
0/150
提交評(píng)論