2015-12-03 54 views
1

如果只有空白区域被点击,如何决定TreeView的OnClick事件?我使用代码波纹管,但在CheckNode我总是得到一个TreeNode实例,尽管我只点击了一个TreeNode旁边的空白区域。TreeView - 在空白区域点击

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; 
+1

我恢复的编辑。请不要在问题中添加答案。除了你接受答案之外,没有什么需要。显然你可以计算出如何解释命中测试信息。 –

回答

5

使用GetHitTestInfoAt方法在this example所示:

MyHitTest := TV.GetHitTestInfoAt(X, Y); 
    if htNowhere in MyHitTest then ... 
+2

欢迎。是的,当然,根据你点击的位置你会得到不同的结果。 –

+1

@tdiop我认为你应该接受这个答案。你不能指望TOndrej为你编写程序。 'GetHitTestInfoAt'返回你需要的信息,现在由你决定如何处理它。 –

+0

@DavidHeffernan因为我做了一些编辑,这并不意味着我不会接受他的回答!对不起,但我不明白你的一步。我认为我的编辑可以为新手节省一点时间。 – grinner