2015-12-03 90 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