Um nicht nur den Toplevel zu ändern, sondern auch alle Submenus:
Delphi-Quellcode:
procedure RefreshMenuItem(aMenuItem: TMenuItem);
var
lTempItem: TMenuItem;
i: Integer;
begin
lTempItem := TMenuItem.Create(aMenuItem);
try
lTempItem.Caption := 'tempitem';
aMenuItem.Add(lTempItem);
aMenuItem.Delete(aMenuItem.Count - 1);
finally
lTempItem.Free
end;
// and rekursiv through all sub menus of the current menu item
for i := 0 to aMenuItem.Count - 1 do
begin
RefreshMenuItem(aMenuItem.Items[i]);
end;
end;
procedure RefreshMainMenu(aMenu: TMainMenu);
var
i: Integer;
lTempItem: TMenuItem;
begin
// toplevel
lTempItem := TMenuItem.Create(aMenu);
try
lTempItem.Name := 'tempitem';
aMenu.Items.Add(lTempItem);
aMenu.Items.Remove(lTempItem);
finally
lTempItem.Free;
end;
// sublevels
for i := 0 to aMenu.Items.Count - 1 do
begin
RefreshMenuItem(aMenu.Items[i]);
end;
end;