Delphi:PageControl MouseMove同时拖放它

时间:2010-09-30 09:25:28

标签: delphi delphi-7

我有以下问题。

我的表单上有一个页面控件,我想激活某个标签页,然后拖放(从资源管理器中)到标签页上的滚动条。 (每个标签页都有一个滚动框) 当你鼠标移动到页面控件上时,我有代码来激活选项卡。 (请参阅下面的代码)问题是,当我从资源管理器中拖动文件时,当我在拖动时将鼠标移动/鼠标移动到页面控件上时,鼠标移动永远不会触发。 还尝试设置DragAcceptFiles(pagecontrol.Handle,true);,但这也无济于事。

procedure TForm2.PageControlMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var 
  tabindex : Integer;
begin
  tabindex := PageControl.IndexOfTabAt( X, Y );
  PageControl.ActivePageIndex := tabindex;
end;

任何想法/解决方案的男人和女孩?

感谢。

SoulBlade

1 个答案:

答案 0 :(得分:4)

使用DragAcceptFiles(),您无法获得必要的信息,只有当数据最终被丢弃到放置目标时,才会将WM_DROPFILES消息发送到使用DragAcceptFiles()注册的窗口句柄。

如果使用OLE拖放,您将获得更多控制权。 Anders Melander的Drag and Drop Component Suite for Delphi在一组易于安装的组件中实现了所有功能。使用任何放置目标对象,将其Target属性设置为要放弃的页面控件,并使用其OnDragOver事件激活正确的标签页。