【问题标题】:Hit Test TTreview plus/minus (collapse/expand) icon - Delphi命中测试 TTreview 加/减(折叠/展开)图标 - Delphi
【发布时间】:2012-03-27 01:28:41
【问题描述】:

我在 Delphi 中使用了一个 TTreeview 组件,并且我自定义了拖放功能。 我开始向下拖动鼠标(因为它是一种自定义行为),但我不想在用户单击 +/- 或展开和折叠图标时开始拖动事件。

有没有办法知道用户是否点击了节点的标题或展开/折叠图标?

谢谢!

【问题讨论】:

    标签: delphi treeviewitem


    【解决方案1】:

    TTreeView 组件包含用于此目的的 GetHitTestInfoAt 方法。

    procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
      HitTests: THitTests;
    begin
      HitTests := TreeView1.GetHitTestInfoAt(X, Y);
      if htOnButton in HitTests then
        //do something
      else if htOnLabel in HitTests then
        //do something else
      else if ......
    

    THitTests 集合中可能的members 的完整列表是:

    • htAbove
    • htBelow
    • htNowhere
    • htOnItem
    • htOnButton
    • htOnIcon
    • htOnIndent
    • htOnLabel
    • htOnRight
    • htOnStateIcon
    • htToLeft
    • htToRight

    【讨论】:

    • 如果我只点击展开/折叠图标,如何选择树节点?谢谢。
    • @tdiop 检测到适当的 htXXX。用户不会感谢你。
    • 好的,htOnButton 和 TreeView1.GetNodeAt(X, Y) 成功了。 (:
    • @tdiop 你的用户仍然会讨厌失去他们的选择!
    • 这是什么意思? Node := tw.GetNodeAt(X, Y),然后 node.selected := true;
    猜你喜欢
    • 2015-06-07
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 2011-09-29
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    相关资源
    最近更新 更多