命中测试TTreview加/减(折叠/展开)图标 - 德尔福

Ale*_*dre 3 delphi treeviewitem

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

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

谢谢!

Dav*_*nan 5

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 ......
Run Code Online (Sandbox Code Playgroud)

可能的完整列表成员中的THitTests一组是:

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