![]() |
Problem mit dynamischem PopUp Menu
Hallo,
ich erstelle aus einem Treeview ein PopUpMenÜ:
Delphi-Quellcode:
Leider klappt das OnClick-Ereignis im Menü nicht so wie es soll. Schon im der oberen Ebene
if not Assigned(Node) then
begin Temp := AdvTreeComboBox1.Treeview.Items[0]; while Assigned(Temp) do begin Item := TMenuItem.Create(Self); Item.Caption := Temp.Text; Item.OnClick := MenuItemClick; PopupMenu1.Items.Add(Item); if Temp.Count > 0 then AddMenu(Temp, Item); Temp := Temp.GetNextSibling; end; end else begin Temp := Node.GetFirstChild; while Assigned(Temp) do begin Item := TMenuItem.Create(Self); Item.Caption := Temp.Text; Item.OnClick := MenuItemClick; Menu.Add(Item); if Temp.Count > 0 then AddMenu(Temp, Item); Temp := Temp.GetNextSibling; end; end; und: procedure TForm1.MenuItemClick(sender : TObject); var s : string; begin with Sender as TMenuItem do begin s := caption; end; ShowMessage(s); end; wird die Mesage beim MouseOver angezeigt?!? Viele Grüße... |
Re: Problem mit dynamischem PopUp Menu
Niemand eine Ahnung? :|
|
Re: Problem mit dynamischem PopUp Menu
Hallo Stefan,
du solltest den menu items, welche als Untermenü fungieren, nicht den gleichen OnClick() event handler zuordnen, wie den items auf der untersten Ebene. Zumindest solltest du im event handler unterscheiden:
Delphi-Quellcode:
Hintergrund ist, dass deine submenu items beim Überfahren mit der Maus automatisch das event OnClick() auslösen.
procedure TForm1.MenuItemClick(Sender: TObject);
var s: String; begin with Sender as TMenuItem do if Count = 0 then ShowMessage(Caption); end; Grüße vom marabu |
Re: Problem mit dynamischem PopUp Menu
Hallo,
danke für deine Antwort. Leider komme ich jetzt nicht an die Caption von der obersten Ebene. Gibt es da eine bessere Lösung? Viele Grüße... |
Re: Problem mit dynamischem PopUp Menu
Du kannst die Items in einem Menü durchaus auch als Baum begreifen. Insofern gibt es routing items (inner nodes) und action items (leaf nodes). Wenn du ein action item anklickst, hast du über die Parent-Eigenschaft die Möglichkeit alle übergeordneten Captions zu ermitteln. Ist das nicht wunderbar? Wenn dich das nicht glücklich macht, dann beschreibe mal, wann du wozu den top level node benötigst.
Grüße |
Re: Problem mit dynamischem PopUp Menu
Hi,
ich möchte mit den Einträgen meine Datenbank filtern. Der Treeview ist: Firma A - Abteilung A - Abteilung B - Abteilung C Firma B - Abteilung A - Abteilung B - Abteilung C ..... Ich brauch also z. B.: |Firma A| oder |Firma A - Abteilung B|. Durch den String filtere ich die Datenbank. In der alten Programmversion hatte ich nur eine ebene, was natürlich einfacher war :roll: Viele Grüße... |
Re: Problem mit dynamischem PopUp Menu
Für deinen Anwendungsfall könnte ich mir einen zusätzlichen Total-Selektor vorstellen:
Code:
Wenn dein Datenmodell stimmig ist, dann harmoniert dieser Ansatz ausgezeichnet mit diesem.
A-Firma >> [b]Alle[/b]
[color=#cccccc]B-Firma[/color] ----------- [color=#cccccc]C-Firma[/color] A-Abteilung B-Abteilung Gute Nacht |
Re: Problem mit dynamischem PopUp Menu
Ich kann dir nicht ganz folgen... :?
|
Re: Problem mit dynamischem PopUp Menu
Hallo Stefan,
nochmal mit anderen Worten: wenn deine Daten vollständig normalisiert sind, dann hast du sowieso nur Referenzen auf die Abteilung und in einer gesonderten Tabelle ORGEINHEITEN (bei rekursivem Ansatz, ansonsten zwei Tabellen FIRMEN und ABTEILUNGEN) die Beziehung von Abteilung zu Firma. Damit alle Befehle nur auf der Blatt-Ebene des Menübaums ausgeführt werden, nimmst du zusätzlich zu den Abteilungen einer Firma einfach noch das Item "Alle" mit auf und selektierst entsprechend. Besser so? |
Re: Problem mit dynamischem PopUp Menu
Jetzt hats geklingelt :stupid:.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:00 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