首页 / 软件开发 / Delphi / 第九章-Delphi拖放编程(3)
第九章-Delphi拖放编程(3)2007-05-079.2.2 接收拖动项目 一个控件能否接收拖动项目是由该控件的OnDragOver事件决定的。在TabSet拖动中,主要是利用鼠标的位置进行判断。 procedure TForm1.TabSet1DragOver(Sender, Source: TObject; X, Y: Integer;State: TDragState; var Accept: Boolean);varDropPos: Integer;beginif Source = TabSet1 thenbeginDropPos := TabSet1.ItemAtPos(Point(X, Y));Accept := (DropPos > -1) and (DropPos <> TabSet1.TabIndex) and(DropPos < TabSet1.Tabs.Count);end;elseAccept := False;end; 9.2.3 放下拖动项目 当OnDragOver事件处理过程返回的Accept为True且项目被放下时,由OnDragDrop事件处理过程来完成拖动放下后的响应。在TabSet拖放实例中是改变标签的位置。 procedure TForm1.TabSet1DragDrop(Sender, Source: TObject; X, Y: Integer);varOldPos: Integer;NewPos: Integer;beginif Source = TabSet1 then beginOldPos := TabSet1.TabIndex;NewPos := TabSet1.ItemAtPos(Point(X, Y));if (NewPos > -1) and (NewPos <> OldPos) thenTabSet1.Tabs.Move(OldPos, NewPos);end;end; 9.2.4 结束拖动操作 结束拖动操作的方式有两种:或者是用户释放了鼠标键或者是程序用EndDrag方法强行中止拖动。结束拖动操作的后果有两种:放下被接受或放下被忽略。拖动操作结束后源控件都要收到一条消息响应拖动结束事件OnEndDrag。