Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: MainMenu komplett durchlaufen

  Alt 13. Nov 2007, 09:38
Hallo,

ich würde es so probieren:

Delphi-Quellcode:
type
  TEnumMenuItemProc = procedure (item: TMenuItem) of object;

procedure TDemoForm.EnumMenuItem(item: TMenuItem);
begin
  with item do
  if IsLine then
  begin
    OnDrawItem := SeparatorDrawItem;
    OnMeasureitem := MeasureSeparator;
  end else
  begin
    onDrawItem := MenuItemDrawItem;
    OnMeasureitem := MenuItemMeasureItem;
  end;
end;

procedure EnumerateMenuItems(item: TMenuItem; proc: TEnumMenuItemProc);
var
  i: Integer;
  subItem: TMenuItem;
begin
  for i := 0 to Pred(item.Count) do
  begin
    subItem := item.Items[i];
    proc(subItem);
    if subItem.Count > 0 then
      EnumerateMenuItems(subItem, proc);
  end;
end;

procedure TDemoForm.Button3Click(Sender: TObject);
begin
  EnumerateMenuItems(MainMenu.Items, EnumMenuItem);
end;
Grüße vom marabu
  Mit Zitat antworten Zitat