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

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

谢谢!

最佳答案

为此,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 ......


members集的可能的THitTests的完整列表为:


ht以上
ht以下
ht无处
htOnItem
htOnButton
htOnIcon
htOnIndent
htOnLabel
htOnRight
htOnStateIcon
htToLeft
htToRight

关于delphi - 点击测试TTreview加/减(折叠/展开)图标-Delphi,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9636728/

10-10 02:46