2011-06-16 41 views
1

有沒有一種快速的方法來創建5個樹視圖項的5個子項的自定義提示?德爾福:樹視圖的自定義提示

我有TreeView,1個項目和5個子項目。我需要爲每個子項目(第一個 - 「F1」,第二個 - 「F2」等)提供一個特殊的提示。

我不能把這個應用到我的目的:http://delphi.about.com/od/vclusing/a/treenode_hint.htm

+0

你能提供更多的細節嗎?你試過的代碼會很好。 – Sorrow 2011-06-16 18:44:49

+0

請更具體地瞭解它對於那些不適合您的代碼。我們並不熱衷於整天猜測。 – 2011-06-16 19:01:25

+0

Rob Kenned,完成 – maxfax 2011-06-16 19:51:06

回答

2

這聽起來像你只是想OnHint事件:

procedure TMyForm.TreeView1Hint(Sender: TObject; const Node: TTreeNode; var Hint: string); 
begin 
    Hint := Node.Text; 
end; 

有時,這種方法可能有點粗糙,並提供了一個Node你是不是明顯的上空盤旋。如果你想要更多的控制,你可以使用GetNodeAtGetHitTestInfoAt

procedure TMyForm.TreeView1Hint(Sender: TObject; const Node: TTreeNode; var Hint: string); 
var 
    P: TPoint; 
    MyNode: TTreeNode; 
    HitTestInfo: THitTests; 
begin 
    P := TreeView1.ScreenToClient(Mouse.CursorPos); 
    MyNode := TreeView1.GetNodeAt(P.X, P.Y); 
    HitTestInfo := TreeView1.GetHitTestInfoAt(P.X, P.Y) ; 
    if htOnItem in HitTestInfo then begin 
    Hint := MyNode.Text; 
    end else begin 
    Hint := ''; 
    end; 
end; 

THitTests的定義如下:

type 
    THitTest = (htAbove, htBelow, htNowhere, htOnItem, htOnButton, htOnIcon, 
    htOnIndent, htOnLabel, htOnRight, htOnStateIcon, htToLeft, htToRight); 
    THitTests = set of THitTest; 

正如你可以看到這個給你很多細粒度的控制權何時你作爲提示展示的內容。

+1

'TTreeView'沒有'OnHint'事件。 – 2011-06-16 20:10:25

+0

也許你正在考慮'TListView.OnInfoTip'? – 2011-06-16 20:11:53

+0

@Andreas我在Delphi 2010上用['TTreeView.OnHint'](http://docwiki.embarcadero.com/VCL/en/ComCtrls.TTreeView.OnHint)運行這段代碼。我確信它在那裏。 – 2011-06-16 20:19:02

1

我會設置組件的提示以響應OnMouseMove(或者那個給你鼠標座標的其他事件,從中你可以得到鼠標已經結束的項目 - 我可能誤會了這個名字,此刻我與我沒有德爾福)。

+0

這樣的事情http://delphi.about.com/od/vclusing/a/treenode_hint.htm? – maxfax 2011-06-16 16:49:22

+0

是的,確切地說。我相信這是最快和有點標準的方式。 – Sorrow 2011-06-16 16:52:04