【问题标题】:Delphi7: PageControl MouseMove while drag and dropping on itDelphi:PageControl MouseMove,同时拖放它
【发布时间】:2010-09-30 09:25:28
【问题描述】:

我有以下问题。

我的表单上有一个页面控件,我想激活某个标签页,然后拖放(从资源管理器)到标签页上的滚动框。 (每个标签页都有一个滚动框) 当您将鼠标移到页面控件上时,我有激活选项卡的代码。 (参见下面的代码)问题是当我 从资源管理器中拖动文件 时,当我将鼠标悬停/鼠标移动到页面控件上同时仍然拖动时,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;

有什么想法/解决方案吗?

谢谢。

灵魂之刃

【问题讨论】:

    标签: delphi delphi-7


    【解决方案1】:

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

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

    【讨论】:

    • 我会接受它作为答案。没有 3rd 方组件的任何其他方式?
    • @SoulBlade:当然,你可以自己实现IDropTarget 接口(参见msdn.microsoft.com/en-us/library/ms679679%28VS.85%29.aspx),但是为什么要这么麻烦呢?
    • 是的,你是对的。我自己做的太多了。无论如何,我安装了套件,它就像炸弹一样工作。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 2012-04-24
    • 2011-12-29
    • 1970-01-01
    相关资源
    最近更新 更多