2012-04-15 2 views
4

私はTopreeViewに関連付けられたTPopupMenuを持っていますが、ユーザーが特定のノードをクリックしたときにのみメニューを呼び出す(ポップアップしたい)ようになりました。だから、どのように私はツリービューでコンテキストメニューをポップアップすることができますが、いくつかの特定のtreenodesだけで?どのように私はツリービューのコンテキストメニューをポップアップすることができますが、いくつかの特定のtreenodesだけで?

答えて

10

OnContextPopupイベントのHandledパラメータを使用します。このパラメータをTrueに設定すると、コンテキストメニューが表示されなくなります。次のコードは、TTreeNodeOnContextPopupイベントに渡されたカーソル位置から取得する方法を示しています。先頭から異なるTTreeNodeを右クリックすると、ポップアップメニューが表示されます。

procedure TForm1.TreeView1ContextPopup(Sender: TObject; MousePos: TPoint; 
    var Handled: Boolean); 
begin 
    if TreeView1.GetNodeAt(MousePos.X, MousePos.Y) = TreeView1.TopItem then 
    Handled := True; 
end; 
+2

+1、私はちょうど同じ答えを入力しました。 – RRUZ

+2

+1。それに私を打つ。 :) –

1

これが役に立つかもしれません:

procedure TForm1.TreeView1ContextPopup(Sender: TObject; MousePos: TPoint; 
    var Handled: Boolean); 
    var node : TTreeNode; 
begin 
    node := TreeView1.GetNodeAt(MousePos.X, MousePos.Y); 
    if not Assigned (node) then 
    Abort; 
end; 
+3

ほぼ2年間でより良い答えがあります。 –

関連する問題