Delphi程序設(shè)計(jì)中的鼠標(biāo)控制_第1頁(yè)
Delphi程序設(shè)計(jì)中的鼠標(biāo)控制_第2頁(yè)
Delphi程序設(shè)計(jì)中的鼠標(biāo)控制_第3頁(yè)
Delphi程序設(shè)計(jì)中的鼠標(biāo)控制_第4頁(yè)
Delphi程序設(shè)計(jì)中的鼠標(biāo)控制_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Delphi 程序設(shè)計(jì)中的鼠標(biāo)控制這些事件的主要功能包括改變鼠標(biāo)指針的形狀,移動(dòng)、觸發(fā)、拖動(dòng)鼠標(biāo)等。一、改變鼠標(biāo)指針的形狀當(dāng)應(yīng)用程序在執(zhí)行一個(gè)較長(zhǎng)時(shí)間的指令或動(dòng)作時(shí),我們可以改變鼠標(biāo)指針的形狀來(lái)通知用戶程序執(zhí)行的狀態(tài),等到執(zhí)行的動(dòng)作完成之后,再把鼠標(biāo)指針的形狀變回來(lái)。此外,在拖動(dòng)的過(guò)程中我們也可以改變鼠標(biāo)指針的形狀,使拖動(dòng)的過(guò)程更加清楚。前者是記錄鼠標(biāo)指針在對(duì)象上出現(xiàn)的情況;后者是設(shè)定對(duì)象被拖動(dòng)時(shí)鼠標(biāo)指針的形狀。 二、鼠標(biāo)的移動(dòng)t 事件時(shí),最重要的就是這兩個(gè)參數(shù)。三、鼠標(biāo)按鍵鼠標(biāo)按鍵在窗口環(huán)境中也是最重要的輸入方法之一,配合 Shift,Alt,Ctrl 三個(gè)鍵而發(fā)揮不同的作用。ddle 這些

2、參數(shù)值分別代表 Shift,Alt,Ctrl 鍵、鼠標(biāo)的左、中、右鍵,及同時(shí)按下左右鍵。 例如,同時(shí)按下鼠標(biāo)的右鍵和Alt 鍵,參數(shù) Shift 的值就是ssAlt,ssRight。四、鼠標(biāo)的拖動(dòng)(細(xì)節(jié))(一)啟動(dòng)拖動(dòng)狀態(tài)拖動(dòng)狀態(tài)的方式及啟動(dòng)是根據(jù)屬性DragMode 值的設(shè)定而決定的,可以分成兩類情況: 。 TRUE,代表已進(jìn)入拖動(dòng)狀態(tài),否則就是沒有。要使對(duì)象進(jìn)入拖動(dòng)狀態(tài),可以調(diào)用對(duì)象方法BeginDrag。 (二)拖動(dòng)中的事件 參數(shù) X ,Y 代表拖動(dòng)結(jié)束時(shí)的位置坐標(biāo),此坐標(biāo)是以目標(biāo)對(duì)象的坐標(biāo)為參考的,而實(shí)際上拖動(dòng)中的對(duì)象并不是真的移動(dòng),所以以X,Y 的值將對(duì)象移到新的位置。(三)停止拖動(dòng)

3、如果要停止拖動(dòng),可以使用對(duì)象方法EndDrag 來(lái)完成;其語(yǔ)法如下: DropTure將被放置于與目前所在的位置;否則,對(duì)象的拖動(dòng)就被放棄,而回到原來(lái)的位置。例如下面的程序段就代表對(duì)象 Lable1放棄拖動(dòng),并恢復(fù)原狀:不管是放棄拖動(dòng)或是對(duì)象已經(jīng)拖動(dòng)到目標(biāo)對(duì)象,均會(huì)觸發(fā)這個(gè)事件。 DELPHI 中拖放的操作 具, Delphi 同樣支持拖放操作,而且開發(fā)應(yīng)用系統(tǒng)的拖放功能十分方便,真正體現(xiàn)了 Delphi 提供的所有控件(Control,即能獲得輸入焦點(diǎn)的部件)都支持拖放操作,并有相應(yīng)的拖放屬性、拖放事件和拖放方法。下面我們先介紹控件的拖放支持,而后再給出開 發(fā)拖放操作的一般步驟和應(yīng)用實(shí)例。9

4、.1 控件的拖放支持拖放操作中控件可以分為源控件和目標(biāo)控件兩類。絕大部分控件既可以作為源控件 也可以作為目標(biāo)控件。但也有一部分控件只能支持其中的一種。 下鼠標(biāo)時(shí)控件如何反應(yīng)。 來(lái)判斷一個(gè)拖動(dòng)是否可以開始。用于選擇拖動(dòng)時(shí)顯示的光標(biāo),缺省值是CrDrag,一般不要去修改它。在程序設(shè)計(jì)過(guò)程中通用的界面規(guī)范應(yīng)該得到開發(fā)者的尊重。但有時(shí)候?yàn)榱颂囟ǖ哪康?,開發(fā)者也可以把自己設(shè)計(jì)的光標(biāo)賦給DragCursor。拖放事件主要有三個(gè)(?):前兩個(gè)事件由目標(biāo)控件響應(yīng),后一個(gè)事件由源控件響應(yīng)。OnDragOver 事件最主要的功能是確定當(dāng)用戶就地放下拖動(dòng)時(shí)控件是否可以接受。 X ,Y:Integer; 光標(biāo)位置取值

5、意義 dsDragEnter Move用戶可以利用提供的參數(shù)來(lái)確定放下的拖動(dòng)是否可被接受,如:p OnDragDrop 事件處理過(guò)程的參數(shù)包括源控件和光標(biāo)位置。這些信息可用于處理方式的確 OnEndDrag 事件是在拖動(dòng)操作結(jié)束后由源控件來(lái)進(jìn)行響應(yīng)的,用于源控件進(jìn)行相應(yīng)的 處理。拖動(dòng)操作結(jié)束既包括拖動(dòng)放下被接受,也包括用戶在一個(gè)不能接受放下的控件上釋 放了鼠標(biāo)。該事件處理過(guò)程的參數(shù)包括目標(biāo)控件(Target)和放下位置的坐標(biāo)。如果 Target=nil, 表示拖動(dòng)項(xiàng)目沒有被任何控件接受。在第 3 節(jié)將介紹的文件拖放移動(dòng)、拖放拷貝操作中,如果操作成功,則文件列表框應(yīng)更新顯示內(nèi)容。下面這段程序用于

6、實(shí)現(xiàn)這一功能。 除以上介紹的三個(gè)事件外,還有一個(gè)事件OnMouseDown 也常用于拖放操作的響應(yīng)。OnMouseDown 雖然不是一個(gè)專門的拖放事件,但在人工模式下拖動(dòng)的開始是在這一事件的處理過(guò)程中實(shí)現(xiàn)的。式這三個(gè)方法都被源控件使用。 (5 個(gè)象素點(diǎn))后才改變光標(biāo),開始拖動(dòng)。這就允許控件接受一個(gè)OnClick 事件而并不開始DragDropDrop 下面一段程序表明當(dāng)拖動(dòng)進(jìn)入一控制面板時(shí)拖動(dòng)被取消。rDraging 方法判斷一個(gè)控件是否正被拖動(dòng)。在下面的例子中當(dāng)用戶拖動(dòng)不同的檢查框 時(shí)窗口改變?yōu)椴煌念伾?。w例子:對(duì)于上述的鼠標(biāo)操作,我舉一個(gè)例子。就不再留下痕跡)。 R .DFM兩種方式實(shí)現(xiàn)拖曳:用七個(gè)事件分裂成兩種方法(七武器)delphi 下如何實(shí)現(xiàn)動(dòng)態(tài)對(duì)象的拖拽昨天上午寫了一個(gè)小程序,模仿 delphi 設(shè)計(jì)階段組件的拖拽,實(shí)現(xiàn)了動(dòng)態(tài)創(chuàng)建對(duì)象的拖拽。 首先動(dòng)態(tài)創(chuàng)建三個(gè) TLabel 對(duì)象,并且保存到 TList 中,分別設(shè)置他們的 onmousedown, lstMyRect : TList; /類似于控件數(shù)組NowRectTRect /組件對(duì)象的邊框當(dāng)鼠標(biāo)按下時(shí),記錄下開始點(diǎn),并得到組件對(duì)象的邊框,在移動(dòng)的時(shí)候給用戶以參照,并 且把該邊框畫出當(dāng)鼠標(biāo)移動(dòng)的時(shí)候,計(jì)算出移動(dòng)的距離,消隱上一個(gè)位置的邊框,計(jì)算新位置的邊框并畫 出 Y框的位置當(dāng)鼠標(biāo)放開時(shí),不用再畫邊框,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論