Hallo! Ich verwende folgenden Code, um alle Items UND SubItems eines Popup-Menüs rekursiv zu durchlaufen und zu verarbeiten:
Delphi-Quellcode:
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;
Gibt es dafür auch eine einfachere Methode?