![]() |
Treeview & PopupMenue & GetNodeAt
Moin,
Ich möchte das wenn man mit der rechten Maustaste auf ein Treenode klickt sich ein PopupMenue öffnet. Das klappt auch soweit, jedoch öffnet sich auch das PopupMenue, wenn ich neben das Treenode klicke.(GetNodeAt rufe ich in dem Ereignis OnContextPopup auf)Kann ich das irgendwie abfangen? Ich benutze für dieses Projekt Delphi 6. Geht das vielleicht bei Delphi 7,..? Mfg Sidores |
Re: Treeview & PopupMenue & GetNodeAt
Du könntest das Ereignis OnMouseDown verwenden und von dort das PopupMenu manuell anzeigen.
Delphi-Quellcode:
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var p: TPoint; n: TTreeNode; begin n := TreeView1.GetNodeAt(X, Y); if (Button = mbRight) and (n <> nil) and (X in [n.DisplayRect(True).Left..n.DisplayRect(True).Right]) then if GetCursorPos(p) then PopupMenu1.Popup(p.X, p.Y); end; |
Re: Treeview & PopupMenue & GetNodeAt
Hallo,
oder so:
Delphi-Quellcode:
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var p : TPoint; begin if (htOnItem in TreeView1.GetHitTestInfoAt(x,y)) then begin p.x := X; p.y := Y; p := TreeView1.ClientToScreen(p); PopupMenu1.Popup(p.x,p.y); end; end; |
Re: Treeview & PopupMenue & GetNodeAt
Hallo Leute,
in D7 kann man TreeView.RightClickSelect auf TRUE setzen, ordnet der TreeView ein PopupMenu zu und schreibt einen Event-Handler für OnPopup():
Delphi-Quellcode:
Grüße vom marabu
procedure TDemoForm.TreeMenuPopup(Sender: TObject);
begin with TreeView.ScreenToClient(Mouse.CursorPos) do if not (htOnItem in TreeView.GetHitTestInfoAt(x, y)) then Abort; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz