![]() |
Re: Reihenfolge Menüeinträge für TMainMenu
Wich ich das jetzt gemacht habe ? So :
Delphi-Quellcode:
Der Trick ist eigentlich nur, dass das Menü nach den Captions sortiert werden soll und auch der Name gebraucht wird. Und die hänge ich einfach hintereinander. Die Prozedur NeuerMenuEintrag und alles andere bleibt unverändert.
procedure TfrmMenue.FormCreate(Sender: TObject);
var i : Integer; c : TComponent; NewItem: TMenuItem; begin inherited; sl := TStringList.Create; men := TMainMenu.Create(self); for i := 0 to ComponentCount - 1 do begin c := Components [i]; if c is TMyPanel then sl.Add(lb ((c as TMyPanel).Caption,50)+(c as TMyPanel).Name); end; sl.Sort; for i := 0 to sl.Count - 1 do begin c := FindComponent (Copy (sl[i],51,Length (sl[i]))); NeuerMenueEintrag (men,c as TMyPanel); end; sl.Free; end; P.S.: hatte auch mit TObjectList spekuliert. Dazu müsste man dann aber noch die Sortierroutinen selber bauen. So wars eben einfacher. :P |
Re: Reihenfolge Menüeinträge für TMainMenu
Dann finde ich meine Lösung mit den Objects aber eleganter, da Du ja auf FindComponent zurückgreifen musst, wie ich bereits vermutet hatte.
|
Re: Reihenfolge Menüeinträge für TMainMenu
Was heisst schon eleganter ? Dafür ist mein Quelltext auf die Schnelle wohl eher verständlich. :stupid: Allerdings : er ist zu starr. D.h., sofern eine Caption länger als 50 Zeichen ist, dann krachts. Man könnte den Wert nun hochschrauben, aber so was war moch nie mein Ding. Und siehe an : da ich das, wie gesagt in alle Forms eingebaut habe, mind. eine Caption war tatsächlich länger. 8-) Konsequenz : lieber doch die AddObject Variante verwendet.
|
Re: Reihenfolge Menüeinträge für TMainMenu
Über die Verständlichkeit kann man sich jetzt streiten 8-) . Auf jeden Fall war Deine Variante (übertragen): "Nimm von allen Paar Socken den linken und sortiere diese (die rechten wirfst Du auf einen Haufen). Nach dem Sortieren suchst Du zu jedem linken Socken den rechten aus dem Haufen und steckst das Paar in die Waschmaschine." Dagegen meine: "Nimm alle Sockenpaare und sortiere nach den linken. Anschließend alle Paare in die Waschmaschine". :zwinker:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 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