Delphi7:PageControl鼠标在拖放时移动
我有以下问题 我的表单上有一个页面控件,我想激活某个选项卡,然后将拖放到选项卡上的滚动框中。(每个选项卡页都有一个滚动框) 当你将鼠标移动到页面控件上时,我有激活选项卡的代码。(请参阅下面的代码)问题在于,当我将/mousemove悬停在页面控件上,同时仍在拖动时,当我从资源管理器中拖动文件时,mousemove不会触发。 还尝试设置Delphi7:PageControl鼠标在拖放时移动,delphi,delphi-7,Delphi,Delphi 7,我有以下问题 我的表单上有一个页面控件,我想激活某个选项卡,然后将拖放到选项卡上的滚动框中。(每个选项卡页都有一个滚动框) 当你将鼠标移动到页面控件上时,我有激活选项卡的代码。(请参阅下面的代码)问题在于,当我将/mousemove悬停在页面控件上,同时仍在拖动时,当我从资源管理器中拖动文件时,mousemove不会触发。 还尝试设置DragAcceptFiles(pagecontrol.Handle,true)但这也没有帮助 procedure TForm2.PageControlMouseM
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
接口(请参阅),但是为什么要这么麻烦呢?是的,你是对的。我自己做的事太多了。不管怎么说,我安装了这个套件,它工作得很好。谢谢