




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第18講拖放技術結束放映第一頁上一頁下一頁最后一頁拖放是一種用來完成對象上操作的方法,它通過單擊對象并在移動鼠標時按住鼠標按鈕來實現(xiàn),這個過程叫做拖動(Dragging)。然后把對象移動到指定的對象并釋放鼠標,這個過程叫做釋放(Dropping)。因此,拖放是一種通過鼠標直接操縱對象及其數(shù)據(jù)的方法。
目的要求:1.理解拖放定義2.了解拖放規(guī)則3.掌握拖放技術18.1拖放技術1.拖放拖放是一種用來完成對象上的操作的方法,它通過單擊對象并在移動鼠標時按住鼠標按鈕來實現(xiàn)。
2.拖動模式當對一個可以拖動的對象單擊并在移動鼠標時按住鼠標按鈕,就稱為拖動模式。3.釋放模式當把拖動的對象移動到指定的目標對象并釋放鼠標時,就稱為釋放模式。4.被拖對象即為源對象,是希望在其上完成某個動作的對象。5.目標對象即為拖動目的地,是被拖對象釋放到的對象。。拖放操作中要涉及兩個控件:拖放的控件和放置拖放控件的控件(目標控件)。除了線、橢圓、矩形等繪圖對象外,PowerBuilder中的所有控件都可以拖放。所以說:拖放可以使用戶界面更加友好。拖放涉及PowerBuilder窗口上至少二個控制或對象。拖放技術最典型的用途是直接對數(shù)據(jù)進行插入和查詢。結束放映第一頁上一頁下一頁最后一頁18.2拖放規(guī)則正確實施拖放應當遵循一些規(guī)則,以便保證拖放成功。在應用程序中經(jīng)常使用拖放技術是非常方便的。要注意的主要規(guī)則就是拖放是用來表示在特定對象上完成的某個操作的。源對象和由目標對象完成的操作之間的關系是直觀的和有意義的。在確定了實現(xiàn)拖放的用途之后,需要標識出哪個對象用做被拖對象,哪個對象用做目標對象對象。適合作為被拖對象DataWindow行與列代表數(shù)據(jù)的Picture控件列表框內的項目適合作為目標對象DataWindow
代表動作的Picture控件列表框或下拉列表框命令按鈕需要修改其特性的任意對象說明:不讓拖放操作妨礙控件的正常用法是非常重要的。例如,通常命令按鈕就不適于作為被拖對象。這是因為用戶單擊命令按鈕時通常要用某個處理過程,而不是要啟動拖放對話。如果對被拖對象或目標對象使用了圖片,應確保使用的圖片是有意義的。這種方法為用戶提供了一種更直觀的界面。另外在兩個對象之間進行拖動時,會有一個圖標(稱為拖動圖標)來標明對象處于拖動狀態(tài)。拖動圖標應該是有意義的,這樣,用戶才能確切地知道正在拖動哪個對象,以及要把對象拖動到哪里。最后要說的一點是,拖放不應該成為完成為某項任務的唯一的方法。還應當提供鍵盤或菜單選項讓用戶完成同樣的功能,這樣能為用戶提供更多的靈活性,而且不會把用戶栓在特定的輸入設備上。18.3拖放屬性PowerBuilder中的每個可拖放控件都有兩個拖放屬性:DragAuto和DragIcon。這兩個屬性位于控件的Properties視圖的Other標簽頁上。1.DragAuto屬性DragAuto屬性是一個布爾型變量。若某控件的DragAuto屬性為Ture,則當單擊這個控件時,它將自動處于拖動模式。若某控件的DragAuto屬性為False,則當單擊這個控件時,它不會自動處于拖動模式。而必須在適當?shù)氖录绦蛑惺褂肈rag函數(shù)來把它置于拖動模式。在窗口畫板中定義某個控件的自動拖動模式的步驟如下:(1)打開該控件的Properties視圖的Other標簽頁。(2)選中DragAuto復選框,即將該控件的DragAuto屬性設為True。
2.DragIcon屬性如果使用DragIcon屬性為某個控件定義了一個圖標,則當該控件處于拖放模式時,這個圖標將代替原控件顯示在屏幕上,表示其處于一個有效的拖放區(qū)。當控件處于一個非有效區(qū)域時(如窗口的滾動條上),就會顯示非放下(NO_Drop)圖標。定義一個拖放圖標的步驟如下:(1)打開該控件的Properties視圖的Other標簽頁。(2)從圖標列表中選擇一個圖標或使用Browse按鈕選擇一個ICO文件即可。
結束放映第一頁上一頁下一頁最后一頁18.4控件的拖放函數(shù)每個可拖放控件都包含兩個與拖放有關的函數(shù):Drag和DraggedObject(1)Drag函數(shù)這個函數(shù)用來啟動、結束或取消某個拖放操作。格式如下:control.Drag(dragmode)其中,control是某個可拖放的控件,dragmode表示該函數(shù)將執(zhí)行何種操作,其枚舉值如下:·begin!:使某個控件進入Drag模式。·cancel!:結束Drag模式,但不會觸發(fā)目標對象的DragDrop事件?!nd!:結束Drag模式,并且觸發(fā)目標對象的DragDrop事件。結束放映第一頁上一頁下一頁最后一頁(2)DraggedObject函數(shù)這個函數(shù)用來獲取當前正在被拖動的控件。格式如下:DraggedObject()該函數(shù)返回當前正在被拖動的控件,且返回值的數(shù)據(jù)類型為DragObject,它包含了所有可拖動控件。如果當前沒有任何控件處于拖動狀態(tài),該函數(shù)將顯示一條運行錯誤。因此,一般是在目標控件的拖放事件中來使用這個函數(shù)。可以使用TypeOf函數(shù)來判斷被拖動的控件屬于什么類型,然后把DraggedObject返回值賦給一個相同類型的變量,之后就可以訪問該控件的各種屬性了。
18.4拖放事件
PowerBuilder提供了6個拖放事件如下:DragDrop事件是最重要的事件,當應用程序處于拖動模式并且當鼠標指針在目標對象上時釋放鼠標時,將觸發(fā)該事件。即指示一個被拖動的控件是否已經(jīng)被放在了目標控件上。另外三個事件當應用程序處于拖動模式時,以及當被拖動對象移動到目標對象上時被觸發(fā)。被拖對象的移動方式和位置確定觸發(fā)哪個事件。DragEnter事件被拖對象的中心(也叫做“熱點”)通過邊沿進入目標對象。即指示一個被拖動的控件是否正進入目標控件。DragLeave事件被拖對象的中心退出目標對象。即指示一個被拖動的控件是否正離開目標控件。DragWithin事件被拖對象的中心位于目標對象內。即指示一個被拖動的控件是否正在目標控件內移動。
結束放映第一頁上一頁下一頁最后一頁BeginDrag
當單擊鼠標左鍵并開始拖動一個控件時BeginrightDrag
當單擊鼠標右鍵并開始拖動一個控件時前4個事件都適用于目標控件,而不適用于被拖動的控件。后2個事件用于被拖動的控件。
18.5拖放操作舉例例1:某企業(yè)職工的名冊利用樹狀瀏覽窗口來顯示,數(shù)據(jù)庫中職工的基本情況利用數(shù)據(jù)窗口來瀏覽,如下頁圖所示。當用戶用鼠標拖動TreeView控件中的名字到數(shù)據(jù)窗口中時,便會在數(shù)據(jù)窗口中顯示該職工的詳細情況。結束放映第一頁上一頁下一頁最后一頁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)聲明實例變量longll_source,xt_rootitem結束放映第一頁上一頁下一頁最后一頁(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)//添加第一級項目xt_tvitem.label="職工姓名"xt_tvitem.pictureindex=1xt_tvitem.selectedpictureindex=1xt_rootitem=tv_1.insertitemfirst(0,xt_tvitem)結束放映第一頁上一頁下一頁最后一頁//添加第二級項目:職工姓名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//獲取要拖動的項目this.getitem(handle,tree_item)如果不是第二級數(shù)據(jù)項則取消拖放iftree_item.level<>2then this.drag(cancel!)else tv_1.drag(begin!)
ll_source=handleendif 結束放映第一頁上一頁下一頁最后一頁(5)在dw_1的dragdrop事件中添加如下腳本//定義變量longli_rows,li_query_rowtreeview
treeview_dragtreeviewitemtree_itemstringls_name//獲取記錄數(shù)li_rows=dw_1.rowcount()//獲取拖動源對象treeview_drag=draggedobject()//獲取拖動的源項目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)結束放映第一頁上一頁下一頁最后一頁(6)在c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 眼科學考試題含參考答案
- 新一代信息技術產(chǎn)業(yè)園投資協(xié)議
- 浙江國企招聘2025紹興諸暨市水務集團有限公司招聘57人筆試參考題庫附帶答案詳解
- 2025蒙維公司招聘筆試參考題庫附帶答案詳解
- 紡織工程師考試應試技能試題及答案
- 紡織品設計師職業(yè)交流試題及答案
- 紡織品設計師證書筆試知識試題及答案
- 教師個人年終總結模版
- 柜子合同協(xié)議書
- 供貨加工合同協(xié)議書
- 保溫隔熱工程腳手架工程分包協(xié)議
- 勞務雇傭免責協(xié)議書范本兩篇
- 非中醫(yī)類別醫(yī)師學習中醫(yī)藥專業(yè)知識管理辦法(試行)
- 第20課 社會主義國家的發(fā)展與變化 課件歷史下學期統(tǒng)編版(2019)必修中外歷史綱要下
- 科學讀書分享
- 2024年學??照{租賃服務條款
- 《基于渦激振動的陣列式壓電風能采集系統(tǒng)》
- 先兆性早產(chǎn)的護理
- 幼兒園班本課程中班花樣籃球
- 充電樁運營管理協(xié)議
- 設備吊裝作業(yè)施工方案
評論
0/150
提交評論