程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 第九章-Delphi拖放編程(3)

第九章-Delphi拖放編程(3)

編輯:Delphi

9.2.2 接收拖動項目 

一個控件能否接收拖動項目是由該控件的OnDragOver事件決定的。在TabSet拖動中,主要是利用鼠標的位置進行判斷。  

procedure TForm1.TabSet1DragOver(Sender, Source: TObject; X, Y: Integer;

State: TDragState; var Accept: Boolean);

var

DropPos: Integer;

begin

if Source = TabSet1 then

begin

DropPos := TabSet1.ItemAtPos(Point(X, Y));

Accept := (DropPos > -1) and (DropPos <> TabSet1.TabIndex) and

(DropPos < TabSet1.Tabs.Count);

end;

else

Accept := False;

end; 

9.2.3 放下拖動項目 

當OnDragOver事件處理過程返回的Accept為True且項目被放下時,由OnDragDrop事件處理過程來完成拖動放下後的響應。在TabSet拖放實例中是改變標簽的位置。 

procedure TForm1.TabSet1DragDrop(Sender, Source: TObject; X, Y: Integer);

var

OldPos: Integer;

NewPos: Integer;

begin

if Source = TabSet1 then

begin

OldPos := TabSet1.TabIndex;

NewPos := TabSet1.ItemAtPos(Point(X, Y));

if (NewPos > -1) and (NewPos <> OldPos) then

TabSet1.Tabs.Move(OldPos, NewPos);

end;

end; 

9.2.4 結束拖動操作 

結束拖動操作的方式有兩種:或者是用戶釋放了鼠標鍵或者是程序用EndDrag方法強行中止拖動。結束拖動操作的後果有兩種:放下被接受或放下被忽略。

拖動操作結束後源控件都要收到一條消息響應拖動結束事件OnEndDrag。 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved