Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit TreeView und PopupMenu (https://www.delphipraxis.net/19888-problem-mit-treeview-und-popupmenu.html)

silentAMD 10. Apr 2004 12:46


Problem mit TreeView und PopupMenu
 
Hi,
ich möchte eine TTreeNode direkt per kontextmenü löschen. nur wie bekomme ich es hin, dass ich weiss, von welchem eintrag das popupmenu aufgeklappt wurde und dass es bei keinem eintrag nicht aufklappt?

PLEASE HELP

mirage228 10. Apr 2004 12:58

Re: Problem mit TreeView und PopupMenu
 
Du könntest das MenuItem des PopUp Menüs einfach ausgrauen (disablen), wenn kein Node selektiert ist.

z.B.

Delphi-Quellcode:
begin
  MenuEintrag.Enabled := TreeView.Selected <> nil;
;

Den aktuell ausgewähltem Knoten bekommst du mit der Selected Eigenschaft der TreeView. Ist kein Knoten selektiert ist Selected = nil.

mfG
mirage228

silentAMD 10. Apr 2004 13:11

Re: Problem mit TreeView und PopupMenu
 
@mirage 228: Sorry, aber das ist leider nicht das was ich gesucht habe. nimm dir den windows explorer zum beispiel: da kann man mit rechtem klick auf eine node das jeweilige kontextmenü aufrufen, so möchte ich das auch machen.

Christian Seehase 10. Apr 2004 13:48

Re: Problem mit TreeView und PopupMenu
 
Moin SilentAMD,

Du kannst die Prüfung ja in das OnContextPopup des TreeView legen.
Dann kannst Du nicht nur die Menüpunkte vor der Anzeige des PopupMenüs manipulieren, sondern sogar dessen Anzeige ggf. ganz unterdrücken.

silentAMD 10. Apr 2004 15:01

Re: Problem mit TreeView und PopupMenu
 
danke :dancer2: :mrgreen:

nur wie bekomme ich das item heraus, über dem das kontextmenü aufgeklappt wird? bringt auch rightclickselect etwas? hat jemand ein beispiel?

Niko 10. Apr 2004 15:08

Re: Problem mit TreeView und PopupMenu
 
Das müsste eigentlich gehen, in dem du die Koordinaten des Mausklicks speicherst und über TreeView.GetNodeAt(...) den entsprechenden Knoten ermittelst.

silentAMD 10. Apr 2004 15:24

Re: Problem mit TreeView und PopupMenu
 
so wie ich das gemacht habe, löst das eine exception aus :wall: :wall: :wall:

ich habs ungefähr so gemacht

Delphi-Quellcode:
procedure MenuItem1Click(Sender: TObject);
begin
with popupmenu1 do
TreeView1.GetNodeAt(mousepos.x, mousepos.y).delete;
end;
naja so ungefähr (habs nicht getestet)

kann erst nachher wieder proggen.

PLEASE HELP!!!!

Niko 10. Apr 2004 15:35

Re: Problem mit TreeView und PopupMenu
 
Überprüf mal vor dem delete, ob du überhaupt einen Knoten zurückbekommst oder vielleicht nil.
Wo setzt du eigentlich den Inhalt von mousepos?

Christian Seehase 10. Apr 2004 15:38

Re: Problem mit TreeView und PopupMenu
 
Moin SilentAMD,

das
Delphi-Quellcode:
with Popupmenu1 do
müsstest Du wohl weglassen können.

Die Exception rührt wohl daher, dass GetNodeAt nil zurückliefert, da an der gesuchten Stelle keiner ist.
Am Besten das Ergebnis von GetNodeAt in eine lokale Arbeitsvariable einlesen, und dann erst einmal prüfen, ob mit dem Wert überhaupt etwas gemacht werden kann (<> nil).


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz