![]() |
Alle Items UND SubItems eines Popup-Menüs rekursiv durchlaufen
Hallo! Ich verwende folgenden Code, um alle Items UND SubItems eines Popup-Menüs rekursiv zu durchlaufen und zu verarbeiten:
Delphi-Quellcode:
Gibt es dafür auch eine einfachere Methode?
procedure TForm1.IterateMenuItems(AObject: TObject);
var i: Integer; begin if AObject is TPopupMenu then begin for i := 0 to TPopupMenu(AObject).Items.Count - 1 do begin DoSomething(TPopupMenu(AObject).Items[i]); if TPopupMenu(AObject).Items[i].Count > 0 then IterateMenuItems(TPopupMenu(AObject).Items[i]); end; end else if AObject is TMenuItem then begin for i := 0 to TMenuItem(AObject).Count - 1 do begin DoSomething(TMenuItem(AObject).Items[i]); if TMenuItem(AObject).Count > 0 then IterateMenuItems(TMenuItem(AObject).Items[i]); end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin IterateMenuItems(PopupMenu1); end; |
AW: Alle Items UND SubItems eines Popup-Menüs rekursiv durchlaufen
ich würde es so machen
Delphi-Quellcode:
Procedure DoSomeThing(mi:TMenuItem);
begin Form2.Memo1.Lines.Add(mi.Caption); end; Procedure Iterate(mi:TMenuItem); var i:Integer; begin DoSomeThing(mi); for I := 0 to mi.Count - 1 do Iterate(mi.Items[i]); end; procedure TForm2.Button1Click(Sender: TObject); var i:Integer; begin For i := 0 to popupmenu1.Items.Count -1 do Iterate(popupmenu1.Items[i]); end; |
AW: Alle Items UND SubItems eines Popup-Menüs rekursiv durchlaufen
Vielen Dank! Habe gerade
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:52 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