2012-04-15 2 views

Antwort

10

Verwenden Sie den Parameter Handled aus dem Ereignis OnContextPopup. Wenn Sie diesen Parameter auf True setzen, unterdrücken Sie das anzuzeigende Kontextmenü. Der folgende Code zeigt, wie die TTreeNode von der Cursorposition an das OnContextPopup-Ereignis übergeben wird und das Popup-Menü nur dann anzeigt, wenn Sie mit der rechten Maustaste auf die TTreeNode klicken, die sich von der oberen unterscheidet.

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, ich habe nur die gleiche Antwort eingeben. – RRUZ

+2

+1. Beat mich dazu. :) –

1

Dies kann hilfreich sein:

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

Es gibt eine bessere Antwort seit fast zwei Jahren. –

Verwandte Themen