Delphi7:PageControl鼠标在拖放时移动

Delphi7:PageControl鼠标在拖放时移动,delphi,delphi-7,Delphi,Delphi 7,我有以下问题 我的表单上有一个页面控件,我想激活某个选项卡,然后将拖放到选项卡上的滚动框中。(每个选项卡页都有一个滚动框) 当你将鼠标移动到页面控件上时,我有激活选项卡的代码。(请参阅下面的代码)问题在于,当我将/mousemove悬停在页面控件上,同时仍在拖动时,当我从资源管理器中拖动文件时,mousemove不会触发。 还尝试设置DragAcceptFiles(pagecontrol.Handle,true)但这也没有帮助 procedure TForm2.PageControlMouseM

我有以下问题

我的表单上有一个页面控件,我想激活某个选项卡,然后拖放到选项卡上的滚动框中。(每个选项卡页都有一个滚动框) 当你将鼠标移动到页面控件上时,我有激活选项卡的代码。(请参阅下面的代码)问题在于,当我将/mousemove悬停在页面控件上,同时仍在拖动时,当我从资源管理器中拖动文件时,mousemove不会触发。 还尝试设置
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;
有什么想法/解决方案吗

谢谢

使用
DragAcceptFiles()
的SoulBlade

您无法获得必要的信息,只有当数据最终放置到放置目标上时,才会向使用
DragAcceptFiles()注册的窗口句柄发送
WM\u DROPFILES
消息


如果使用OLE拖放,您将获得更多的控制。Anders Melander通过一组易于安装的组件实现了所有功能。使用任何拖放目标对象,将其
target
属性设置为要拖放的页面控件,并使用其
OnDragOver
事件激活正确的选项卡页。

我接受它作为答案。没有第三方组件还有其他方法吗?@SoulBlade:当然,你可以自己实现
IDropTarget
接口(请参阅),但是为什么要这么麻烦呢?是的,你是对的。我自己做的事太多了。不管怎么说,我安装了这个套件,它工作得很好。谢谢