点击测试TTreview加号/减号(折叠/展开)图标-Delphi

点击测试TTreview加号/减号(折叠/展开)图标-Delphi,delphi,treeviewitem,Delphi,Treeviewitem,我在Delphi中使用TTreeview组件,并自定义了拖放功能。 我启动鼠标向下拖动(因为这是一种自定义行为),但我不想在用户单击+/-或展开和折叠图标时启动拖动事件 有没有办法知道用户是否单击了节点的标题或展开/折叠图标 谢谢 查看组件包括用于此目的的方法 procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var

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

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


谢谢

查看组件包括用于此目的的方法

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 ......
该套设备的所有可能部件清单如下:

  • 以上
  • HTDOWN
  • 无处可去
  • 托尼泰姆
  • 纽顿
  • 赫托尼康
  • 忍者
  • 图兰贝尔
  • t安装图标
  • htToLeft
  • 赫托莱特

如果仅单击展开/折叠图标,如何选择树节点?谢谢。@t请检测合适的htXXX。用户不会感谢你的。好的,htOnButton和TreeView1.GetNodeAt(X,Y)完成了这个技巧。(:@tdiop您的用户仍然不愿意失去他们的选择!这是什么意思?Node:=tw.GetNodeAt(X,Y),然后Node.selected:=true;