Delphi TreeView-在空白区域单击

Delphi TreeView-在空白区域单击,delphi,treeview,Delphi,Treeview,如何在TreeView的OnClick事件中决定是否只单击了一个空白区域?我使用下面的代码,但在CheckNode中,我总是得到一个TreeNode实例,尽管我只单击了TreeNode旁边的空白区域 procedure TfrmDevTree.TreeView1Click(Sender: TObject); var p: TPoint; CheckNode: TTreeNode; begin GetCursorpos(p); p := TreeView1.screentoclie

如何在TreeView的OnClick事件中决定是否只单击了一个空白区域?我使用下面的代码,但在CheckNode中,我总是得到一个TreeNode实例,尽管我只单击了TreeNode旁边的空白区域

procedure TfrmDevTree.TreeView1Click(Sender: TObject);
var
  p: TPoint;
  CheckNode: TTreeNode;
begin
  GetCursorpos(p);
  p := TreeView1.screentoclient(p);
  CheckNode := TreeView1.GetNodeAt( p.X, p.Y );
  if CheckNode = nil then
    Exit;
  ...
end;
使用方法如下所示:

使用方法如下所示:


欢迎是的,当然,根据你点击的位置,你会得到不同的结果。@t点击我想你应该接受这个答案。您不能指望TOndrej为您编写程序
GetHitTestInfo
返回您需要的信息,现在由您决定如何处理这些信息。@DavidHeffernan因为我做了一些编辑,但这并不意味着我不会接受他的答案!对不起,我听不懂你的脚步声。我认为我的编辑可以为新手节省一点时间。答案是答案,而不是问题。你的特定条件并没有那么有趣。每个人都有不同的需求。例如,在我的代码中,我可以看到:
如果(HitTests中的htOnLabel)或(HitTests中的htOnIcon),那么它与您选择的测试不同。事实上,如果我一直在写答案,那么我就不会包括一个具体的测试。当TOndrej在笑话中击败我时,我已经写了一半了,这个答案没有包括一个测试。欢迎。是的,当然,根据你点击的位置,你会得到不同的结果。@t点击我想你应该接受这个答案。您不能指望TOndrej为您编写程序
GetHitTestInfo
返回您需要的信息,现在由您决定如何处理这些信息。@DavidHeffernan因为我做了一些编辑,但这并不意味着我不会接受他的答案!对不起,我听不懂你的脚步声。我认为我的编辑可以为新手节省一点时间。答案是答案,而不是问题。你的特定条件并没有那么有趣。每个人都有不同的需求。例如,在我的代码中,我可以看到:
如果(HitTests中的htOnLabel)或(HitTests中的htOnIcon),那么它与您选择的测试不同。事实上,如果我一直在写答案,那么我就不会包括一个具体的测试。当TOndrej在笑话中击败我时,我正在写一部分的答案没有包括测试。我恢复了编辑。请不要在问题中添加答案。没有什么比你更需要接受答案了。很明显,你可以解决如何解释命中测试信息。我还原了编辑。请不要在问题中添加答案。没有什么比你更需要接受答案了。显然,您可以了解如何解释命中测试信息。
  MyHitTest := TV.GetHitTestInfoAt(X, Y);
  if htNowhere in MyHitTest then ...