亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 023.htm

?? Delphi基礎(chǔ)知識講座
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->DELPHI基礎(chǔ)教程-->第九章 Delphi拖放編程</TITLE>
<META NAME="keywords" CONTENT=" DELPHI基礎(chǔ)教程 第九章 Delphi拖放編程">
<META NAME="description" CONTENT=" - DELPHI基礎(chǔ)教程 - 第九章 Delphi拖放編程">

<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋體"}
.tt2 {font: 12pt/15pt "宋體"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 background="bg.gif" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">

<TR>
<TD CLASS="tt3" VALIGN="top" width="8%"  background="bg.gif"><strong><A HREF="024.htm" ><FONT style="FONT-SIZE: 9pt">后一頁</font></A><BR>
<A HREF="022.htm" ><FONT style="FONT-SIZE: 9pt">前一頁</font></A><BR>

<A HREF="index.html" ><FONT style="FONT-SIZE: 9pt">回目錄</font></A><BR>
<A HREF="../../../../../index.htm"><FONT style="FONT-SIZE: 9pt">回首頁</font></A><BR>
</strong>
</TD>
<TD class="tt2" background="bg.gif" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷體_GB2312">第九章 Delphi拖放編程</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
<p>  拖放</font>(DragDrop)<font face="宋體" lang="ZH-CN">是</font>Windows<font
face="宋體" lang="ZH-CN">提供的一種快捷的操作方式。作為基于</font>Windows<font
face="宋體" lang="ZH-CN">的開發(fā)工具,</font>Delphi<font face="宋體" lang="ZH-CN">同樣支持拖放操作,而且開發(fā)應(yīng)用系統(tǒng)的拖放功能十分方便,真正體現(xiàn)了</font>Delphi<font
face="宋體" lang="ZH-CN">的強大功能和方便性。</p>
<p>  </font>Delphi<font face="宋體" lang="ZH-CN">提供的所有控件</font>(Control<font
face="宋體" lang="ZH-CN">,即能獲得輸入焦點的部件</font>)<font face="宋體"
lang="ZH-CN">都支持拖放操作,并有相應(yīng)的拖放屬性、拖放事件和拖放方法。下面我們先介紹控件的拖放支持,而后再給出開發(fā)拖放操作的一般步驟和應(yīng)用實例。 </p>
</font><p align="center">9.1<font face="宋體" lang="ZH-CN"> 控件的拖放支持 </p>
<p>  拖放操作中控件可以分為源控件和目標控件兩類。絕大部分控件既可以作為源控件也可以作為目標控件。但也有一部分控件只能支持其中的一種。 </p>
</font><p>9.1.1 <font face="宋體" lang="ZH-CN">拖放屬性 </p>
<p>  拖放屬性主要有兩個:</p>
<p>  ●</font> DragMode <font face="宋體" lang="ZH-CN">:</font> <font
face="宋體" lang="ZH-CN">拖動模式</p>
<p>  ●</font> DragCursor <font face="宋體" lang="ZH-CN">:</font> <font
face="宋體" lang="ZH-CN">拖動光標 </p>
<p>  它們都是在拖放的源控件中設(shè)置。</font>DragMode<font face="宋體"
lang="ZH-CN">控制用戶在運行時間內(nèi)當在控件上按下鼠標時控件如何反應(yīng)。如果</font>DragMode<font
face="宋體" lang="ZH-CN">置為</font>dmAutomatic<font face="宋體" lang="ZH-CN">,那么當用戶在控件上按下鼠標時拖動自動開始;如果</font>DragMode<font
face="宋體" lang="ZH-CN">置為</font>dmManual(<font face="宋體" lang="ZH-CN">這是缺省值</font>)<font
face="宋體" lang="ZH-CN">,則將通過處理鼠標事件來判斷一個拖動是否可以開始。</p>
<p>  </font>DragCursor<font face="宋體" lang="ZH-CN">用于選擇拖動時顯示的光標,缺省值是</font>CrDrag<font
face="宋體" lang="ZH-CN">,一般不要去修改它。在程序設(shè)計過程中通用的界面規(guī)范應(yīng)該得到開發(fā)者的尊重。但有時候為了特定的目的,開發(fā)者也可以把自己設(shè)計的光標賦給</font>DragCursor<font
face="宋體" lang="ZH-CN">。 </p>
</font><p>9.1.2 <font face="宋體" lang="ZH-CN">拖放事件 </p>
<p>  拖放事件主要有三個:</p>
<p>  ●</font>OnDragOver<font face="宋體" lang="ZH-CN">:拖動經(jīng)過時激發(fā)</p>
<p>  ●</font>OnDragDrop<font face="宋體" lang="ZH-CN">:拖動放下時激發(fā)</p>
<p>  ●</font>OnEndDrop <font face="宋體" lang="ZH-CN">:拖動結(jié)束時激發(fā) </p>
<p>  前兩個事件由目標控件響應(yīng),后一個事件由源控件響應(yīng)。</p>
<p>  </font>OnDragOver<font face="宋體" lang="ZH-CN">事件最主要的功能是確定當用戶就地放下拖動時控件是否可以接受。它的參數(shù)包括: </p>
</font><p>Source <font face="宋體" lang="ZH-CN">:</font> TObject<font face="宋體"
lang="ZH-CN">; </font> {<font face="宋體" lang="ZH-CN">源控件}</font></p>
<p>X<font face="宋體" lang="ZH-CN">,</font>Y <font face="宋體" lang="ZH-CN">:</font>
Integer; {<font face="宋體" lang="ZH-CN">光標位置}</font></p>
<p>State <font face="宋體" lang="ZH-CN">:</font> TDragState<font face="宋體"
lang="ZH-CN">;</font> {<font face="宋體" lang="ZH-CN">拖動狀態(tài)}</font></p>
<p>var Accept <font face="宋體" lang="ZH-CN">:</font> Boolean {<font face="宋體"
lang="ZH-CN">能否接受} </p>
<p>  </font>TDragState<font face="宋體" lang="ZH-CN">是一個枚舉類型,表示拖放項目與目標控件的關(guān)系。 </p>
<p>  </font> type</p>
<p>TDragState = (dsDragEnter, dsDragLeave, dsDragMove);</p>
<font face="宋體" lang="ZH-CN"><p>  不同取值的意義如下表:</font></p>
<p><font face="宋體" lang="ZH-CN">表</font>9.1 DragState <font face="宋體"
lang="ZH-CN">的取值與意義</font></p>
<p><font face="宋體" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p>  取 值</font> <font face="宋體" lang="ZH-CN">意 義</p>
<p>───────────────────────────</p>
</font><p>dsDragEnter <font face="宋體" lang="ZH-CN">拖動對象進入一個允許拖動對象放下</p>
<p>的控件中。為缺省狀態(tài)。</p>
</font><p>dsDragLeave <font face="宋體" lang="ZH-CN">拖動對象離開一個允許拖動對象放下</p>
<p>的控件。</font></p>
<p>dsDragMove <font face="宋體" lang="ZH-CN">拖動對象在一個允許拖動對象放下的</p>
<p>控件內(nèi)移動。</font></p>
<p><font face="宋體" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━
 </p>
<p>  用戶可以利用提供的參數(shù)來確定放下的拖動是否可被接受,如:</p>
<p>  ●</font> <font face="宋體" lang="ZH-CN">判斷源控件類型: </p>
<p>  </font> Accept := Source is TLabel;</p>
<font face="宋體" lang="ZH-CN"><p>  ●</font> <font face="宋體" lang="ZH-CN">判斷源控件對象: </p>
<p>  </font> Accept := (Source = TabSet1); </p>
<font face="宋體" lang="ZH-CN"><p>  ●</font> <font face="宋體" lang="ZH-CN">判斷光標位置:</font></p>
<p><font face="宋體" lang="ZH-CN">見</font>(9.2),(9.3)<font face="宋體" lang="ZH-CN">中的例程。 </p>
</font><p><font face="宋體" lang="ZH-CN">●</font> <font face="宋體" lang="ZH-CN">判斷拖動狀態(tài): </p>
<p>  </font> If (Source is TLabel) and (State = dsDragMove) then</p>
<font face="宋體" lang="ZH-CN"><p>  </font> begin</p>
<p>source.DragIcon := ' New.Ico ';</p>
<p>Accept := True;</p>
<font face="宋體" lang="ZH-CN"><p>  </font> end</p>
<font face="宋體" lang="ZH-CN"><p>  </font> else</p>
<font face="宋體" lang="ZH-CN"><p>  </font> Accept := False;</p>
<font face="宋體" lang="ZH-CN"><p>  當</font>Accept=True<font face="宋體"
lang="ZH-CN">時,目標控件可以響應(yīng)</font>OnDragDrop<font face="宋體"
lang="ZH-CN">事件,用于確定拖動被放下后程序如何進行處理。</p>
<p>  </font>OnDragDrop<font face="宋體" lang="ZH-CN">事件處理過程的參數(shù)包括源控件和光標位置。這些信息可用于處理方式的確定。</p>
<p>  </font>OnEndDrag<font face="宋體" lang="ZH-CN">事件是在拖動操作結(jié)束后由源控件來進行響應(yīng)的,用于源控件進行相應(yīng)的處理。拖動操作結(jié)束既包括拖動放下被接受,也包括用戶在一個不能接受放下的控件上釋放了鼠標。該事件處理過程的參數(shù)包括目標控件</font>(Target)<font
face="宋體" lang="ZH-CN">和放下位置的坐標。如果</font>Target=nil, <font
face="宋體" lang="ZH-CN">表示拖動項目沒有被任何控件接受。</p>
<p>  在第</font>3<font face="宋體" lang="ZH-CN">節(jié)將介紹的文件拖放移動、拖放拷貝操作中,如果操作成功,則文件列表框應(yīng)更新顯示內(nèi)容。下面這段程序用于實現(xiàn)這一功能。 </p>
</font><p>procedure TFMForm.FileListEndDrag(Sender, Target: TObject; X, Y: Integer);</p>
<p>begin</p>
<p>if Target &lt;&gt; nil then FileList.Update;</p>
<p>end;</p>
<font face="宋體" lang="ZH-CN"><p>  除以上介紹的三個事件外,還有一個事件</font>OnMouseDown
<font face="宋體" lang="ZH-CN">也常用于拖放操作的響應(yīng)。</font>OnMouseDown<font
face="宋體" lang="ZH-CN">雖然不是一個專門的拖放事件,但在人工模式下拖動的開始是在這一事件的處理過程中實現(xiàn)的。 </p>
</font><p>9.1.3 <font face="宋體" lang="ZH-CN">拖放方法 </p>
<p>  拖放方法有三個:</p>
<p>  ●</font>BeginDrag <font face="宋體" lang="ZH-CN">:</font> <font
face="宋體" lang="ZH-CN">人工方式下開始一個拖動</p>
<p>  ●</font>EndDrag <font face="宋體" lang="ZH-CN">: 結(jié)束一個拖動</p>
<p>  ●</font>Dragging <font face="宋體" lang="ZH-CN">:</font> <font
face="宋體" lang="ZH-CN">判斷一個控件是否正被拖動 </p>
<p>  這三個方法都被源控件使用。</p>
<p>  當</font>DragMode<font face="宋體" lang="ZH-CN">置為</font>dmManual<font
face="宋體" lang="ZH-CN">時,拖動必須調(diào)用控件的</font>BeginDrag<font
face="宋體" lang="ZH-CN">方法才能開始。</font>BeginDrag<font face="宋體"
lang="ZH-CN">有一個布爾參數(shù)</font>Immediate<font face="宋體" lang="ZH-CN">。如果輸入?yún)?shù)為</font>True<font
face="宋體" lang="ZH-CN">,拖動立即開始,光標改變到</font>DragCursor<font
face="宋體" lang="ZH-CN">的設(shè)置。如果輸入?yún)?shù)為</font>False<font
face="宋體" lang="ZH-CN">,直到用戶將光標移動了一定的距離</font>(5<font
face="宋體" lang="ZH-CN">個象素點</font>)<font face="宋體" lang="ZH-CN">后才改變光標,開始拖動。這就允許控件接受一個</font>OnClick<font
face="宋體" lang="ZH-CN">事件而并不開始拖動操作。</p>
<p>  </font>EndDrag<font face="宋體" lang="ZH-CN">方法中止一個對象的被拖動狀態(tài)。它有一個布爾參數(shù)</font>Drop<font
face="宋體" lang="ZH-CN">。如果</font>Drop<font face="宋體" lang="ZH-CN">設(shè)置為</font>True<font
face="宋體" lang="ZH-CN">,被拖動的對象在當前位置放下</font>(<font
face="宋體" lang="ZH-CN">能否被接受由目標控件決定</font>)<font face="宋體"
lang="ZH-CN">;如果</font>Drop<font face="宋體" lang="ZH-CN">設(shè)置為</font>False<font
face="宋體" lang="ZH-CN">,則拖動就地被取消。</p>
<p>  下面一段程序表明當拖動進入一控制面板時拖動被取消。     </p>
</font><p>procedure TForm1.Panel1DragOver(Sender, Source: TObject; X, Y: Integer;</p>
<p>State: TDragState; var Accept: Boolean);</p>
<p>begin</p>
<p>Accept := False;</p>
<p>if (Source is TLabel) and (State = dsDragEnter) then</p>
<p>(Source as TLabel).EndDrag(False);</p>
<p>end;</p>
<font face="宋體" lang="ZH-CN"><p>  </font>Draging<font face="宋體" lang="ZH-CN">方法判斷一個控件是否正被拖動。在下面的例子中當用戶拖動不同的檢查框時窗口改變?yōu)椴煌念伾!?lt;/p>
</font><p>procedure TForm1.FormActivate(Sender: TObject);</p>
<p>begin</p>
<p>CheckBox1.DragMode := dmAutomatic;</p>
<p>CheckBox2.DragMode := dmAutomatic;</p>
<p>CheckBox3.DragMode := dmAutomatic;</p>
<p>end; </p>
<p>procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;</p>
<p>State: TDragState; var Accept: Boolean);</p>
<p>begin</p>
<p>if CheckBox1.Dragging then</p>
<p>Color := clAqua;</p>
<p>if CheckBox2.Dragging then</p>
<p>Color := clYellow;</p>
<p>if CheckBox3.Dragging then</p>
<p>Color := clLime;</p>
<p>end; </p>
<p align="center">9.2 <font face="宋體" lang="ZH-CN">開發(fā)拖放功能的一般步驟 </p>
<p>  拖放作為</font>Windows<font face="宋體" lang="ZH-CN">提供的一種方便操作對象的功能,在</font>Delphi<font
face="宋體" lang="ZH-CN">中可以很容易地開發(fā)出來。根據(jù)拖放操作的過程可以把開發(fā)步驟劃分為四個階段,即:</p>
<p>  ●</font> <font face="宋體" lang="ZH-CN">開始拖動操作</p>
<p>  ●</font> <font face="宋體" lang="ZH-CN">接收拖動項目</p>
<p>  ●</font> <font face="宋體" lang="ZH-CN">放下拖動項目</p>
<p>  ●</font> <font face="宋體" lang="ZH-CN">終止拖動操作 </p>
<p>  在介紹過程中我們將結(jié)合一個</font>TabSet(<font face="宋體"
lang="ZH-CN">標簽集</font>)<font face="宋體" lang="ZH-CN">的拖放操作實例。界面設(shè)計如圖。在運行時當用戶把一個標簽拖動到另一個標簽的位置時,該標簽將移動到該位置并引起標簽集的重新布置。</font></p>
<p>9.2.1 <font face="宋體" lang="ZH-CN">開始拖動操作 </p>
<p>  當拖動模式</font>(DragMode)<font face="宋體" lang="ZH-CN">設(shè)置為</font>dmAutomatic<font
face="宋體" lang="ZH-CN">時,用戶在源控件上按下鼠標時拖動自動開始;當設(shè)置為</font>dmManual<font
face="宋體" lang="ZH-CN">時通過處理鼠標事件來決定拖動是否開始。如果想開始拖動調(diào)用</font>BeginDrag<font
face="宋體" lang="ZH-CN">方法。</p>
<p>  在</font>TabSet<font face="宋體" lang="ZH-CN">拖放中,我們用下面的</font>MouseDown<font
face="宋體" lang="ZH-CN">事件處理過程來開始一個標簽的拖動。首先判斷按下的是否是左鍵,而后再判斷項目是否合法。 </p>
</font><p>procedure TForm1.TabSet1MouseDown(Sender: TObject; Button: TMouseButton;</p>
<p>Shift: TShiftState; X, Y: Integer);</p>
<p>var</p>

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re在线精品| 26uuu国产电影一区二区| 中文字幕在线观看一区二区| 成人深夜福利app| 国产精品美女一区二区三区| 不卡视频在线看| 亚洲欧美影音先锋| 91蝌蚪porny九色| 自拍偷拍国产亚洲| 91久久精品一区二区| 亚洲成av人影院| 在线不卡一区二区| 久久99精品国产.久久久久久| 欧美成人精品高清在线播放| 国产一区二区视频在线| 国产女人18毛片水真多成人如厕| 成人教育av在线| 亚洲男女毛片无遮挡| 欧美日韩在线综合| 老司机免费视频一区二区| 日本一区二区三区免费乱视频| 99国产精品久久久久久久久久久| 亚洲一区二区影院| 精品国产髙清在线看国产毛片| 成人免费视频视频在线观看免费 | 欧美日韩免费电影| 精品一区二区在线看| 国产精品―色哟哟| 欧美猛男超大videosgay| 久久国产精品无码网站| 国产精品久久久久aaaa樱花| 欧美日韩成人激情| 国产成人精品影视| 亚洲bt欧美bt精品777| 久久无码av三级| 在线观看区一区二| 国产美女av一区二区三区| 亚洲欧美偷拍卡通变态| 精品久久久久久久人人人人传媒| 97精品国产97久久久久久久久久久久 | 中文字幕日韩精品一区| 欧美精品三级在线观看| 国产成人亚洲综合a∨婷婷图片| 亚洲女同一区二区| 久久久三级国产网站| 在线观看亚洲精品视频| 国产黄色成人av| 婷婷丁香久久五月婷婷| 中文字幕一区二区不卡| 欧美一区二区在线观看| 色偷偷久久人人79超碰人人澡| 精品一区二区三区久久| 一区二区三区在线免费| 中文字幕免费不卡| 5566中文字幕一区二区电影| 色综合久久中文综合久久牛| 国产乱码精品1区2区3区| 日本中文字幕一区二区有限公司| 亚洲免费观看高清| 久久久99精品免费观看不卡| 在线成人免费观看| 欧美网站大全在线观看| 91丝袜美腿高跟国产极品老师 | 99精品国产视频| 国产乱国产乱300精品| 青青草97国产精品免费观看无弹窗版 | 中文字幕av资源一区| 日韩视频一区二区三区在线播放| 91久久精品网| 99久久免费视频.com| 久久国产精品72免费观看| 亚洲美女屁股眼交3| 欧美一区二区三区四区视频| 成人小视频在线| 精品午夜一区二区三区在线观看| 亚洲免费看黄网站| 中文一区二区完整视频在线观看| 777a∨成人精品桃花网| 色88888久久久久久影院按摩| 国产成人啪免费观看软件| 日韩和欧美的一区| 一区二区高清在线| 一区在线播放视频| 91精品欧美一区二区三区综合在| 日本高清视频一区二区| 不卡av免费在线观看| 国产精品18久久久| 精品亚洲国内自在自线福利| 日本不卡不码高清免费观看| 日本伊人精品一区二区三区观看方式| 一级日本不卡的影视| 最新热久久免费视频| 国产午夜亚洲精品不卡| 欧美精品一区二区久久久| 7777精品伊人久久久大香线蕉完整版| 在线观看一区二区视频| 欧美午夜精品久久久久久孕妇| 色88888久久久久久影院按摩| 91香蕉视频mp4| 91在线精品一区二区| aa级大片欧美| 成人黄色一级视频| 不卡欧美aaaaa| 国产美女久久久久| 91亚洲精品乱码久久久久久蜜桃| 成人爱爱电影网址| 91香蕉国产在线观看软件| 91日韩一区二区三区| 91国偷自产一区二区开放时间| 在线观看一区二区视频| 91网址在线看| 欧美一级一区二区| 久久久久久久久久看片| 国产香蕉久久精品综合网| 欧美激情中文不卡| 一色桃子久久精品亚洲| 亚洲黄色免费网站| 亚洲午夜电影网| 国产一区二区三区精品视频| 国产成人精品1024| 99久久久国产精品| 欧美日韩色一区| 日韩精品在线网站| 国产欧美日韩视频在线观看| 中文字幕电影一区| 日韩中文字幕1| 国产一区二区三区电影在线观看| 国产91丝袜在线播放| 日本道在线观看一区二区| 亚洲精品中文字幕乱码三区| 久久成人久久鬼色| 国产麻豆视频精品| 国产精品一区二区久久精品爱涩| 在线观看成人小视频| 日韩一区二区三区电影在线观看| 久久久久国产免费免费 | 国产日产欧美精品一区二区三区| 亚洲午夜羞羞片| 国产在线视视频有精品| 91在线无精精品入口| 91超碰这里只有精品国产| 亚洲国产精品av| 视频一区在线视频| 丝袜美腿亚洲色图| 色综合久久中文综合久久97| 欧美一区2区视频在线观看| 国产精品乱码一区二区三区软件| 五月婷婷激情综合网| 成人免费精品视频| 91麻豆精品国产91久久久久| 一区二区三区中文免费| 国产成人免费av在线| 欧美性猛片aaaaaaa做受| 国产网站一区二区| 午夜精品一区二区三区电影天堂 | 亚洲一区中文日韩| 国产剧情av麻豆香蕉精品| 欧美日韩中文精品| 久久综合一区二区| 麻豆91精品视频| 在线精品视频一区二区| 中文字幕精品一区二区三区精品| 午夜精品视频一区| 99热这里都是精品| 久久综合色婷婷| 日本不卡视频一二三区| 日本久久电影网| 国产精品美女久久久久aⅴ| 免费日韩伦理电影| 欧美三级日韩三级| 亚洲少妇屁股交4| 国产精品一色哟哟哟| 国产亚洲精品7777| 精品一二三四区| 日韩一级完整毛片| 亚洲高清久久久| 91国产精品成人| 久久综合色天天久久综合图片| 久久97超碰色| 日韩一区二区三区观看| 午夜精品久久久久久不卡8050| 99精品久久久久久| 国产精品美女久久久久aⅴ国产馆| 国产成人亚洲综合a∨婷婷| 精品免费视频.| 国产精品一区免费在线观看| 久久综合色之久久综合| 九色综合国产一区二区三区| 日韩欧美国产一二三区| 蜜桃av噜噜一区| 日韩精品一区二区三区中文不卡| 狠狠色丁香久久婷婷综合丁香| 日韩一级黄色大片| 美女视频一区在线观看| 欧美xxxxxxxx| 精品在线观看免费| 91精品国产全国免费观看| 国产精品自拍在线| 国产精品免费视频一区| 91小视频免费观看|