![]() |
Ein MenüItem in mehrere PopUp Menüs adden
Hallo,
ich habe ca. 8 PopUp Menüs die ich teilweise dynamisch fülle und dynamisch entscheide welches genommen wird. Soweit kein Problem. Aber alle 8 bekommen jetzt einen Untermenü mit Einträgen aus einer DB. Alle 8 quasi das Gleiche. Deshalb dachte ich mir ich kann es mir einfach machen und die Daten einmal auslesen und allen Menüs zuweisen. Also in etwa so etwas:
Delphi-Quellcode:
Geht natürlich nicht, Menu2 wird nicht gefüllt. Irgendwie logisch, Item ist ja schon in Verwendung.
Item:= TMenuItem.Create(Self);
Item.Caption := 'Test'; Menu1.Add(Item); Menu2.Add(Item); Allerdings, kann ich es - mit dem selben Namen - erneut creieren und dann an Menu2 hängen. Wie mache ich das aber automatisch, so das ich nicht für jedes Menü das Gleiche per Hand schreiben muss? Gruß, Andreas |
AW: Ein MenüItem in mehrere PopUp Menüs adden
Einfach kopieren...
Delphi-Quellcode:
procedure CloneMenuItem(source, dest : TMenuItem);
begin dest.Action := source.Action; dest.Caption := source.Caption; dest.ShortCut := source.ShortCut; dest.Checked := source.Checked; dest.Enabled := source.Enabled; dest.Visible := source.Visible; dest.OnClick := source.OnClick; dest.HelpContext := source.HelpContext; dest.Hint := source.Hint; dest.RadioItem := source.RadioItem; end; procedure CopyMenuItems(source, dest : TMenuItem); var i : Integer; mi : TMenuItem; begin Assert(Assigned(source), 'no source menu item'); Assert(Assigned(dest), 'no destination menu item'); dest.Clear; for i :=0 to source.Count-1 do begin mi := TMenuItem.Create(dest); CloneMenuItem(source.Items[i], mi); dest.Add(mi); if source.Items[i].Count > 0 then CopyMenuItems(source.Items[i], mi); // rekursiver Aufruf ;-) end; end; CopyMenuItems(PopupMenu1.Items, PopupMenu2.Items); |
AW: Ein MenüItem in mehrere PopUp Menüs adden
Danke, klappt perfekt :).
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:05 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