Wich ich das jetzt gemacht habe ? So :
Delphi-Quellcode:
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;
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.
P.S.: hatte auch mit TObjectList spekuliert. Dazu müsste man dann aber noch die Sortierroutinen selber bauen. So wars eben einfacher.