Use this code:
USES Menus; TYPE TItemArr = ARRAY OF TMenuItem; FUNCTION AllItems(MainMenu : TMainMenu) : TItemArr; VAR I : Cardinal; PROCEDURE Parse(VAR Result : TItemArr ; Item : TMenuItem); VAR I : Cardinal; BEGIN SetLength(Result,SUCC(LENGTH(Result))); Result[HIGH(Result)]:=Item; FOR I:=1 TO Item.Count DO Parse(Result,Item.Items[PRED(I)]) END; BEGIN SetLength(Result,0); FOR I:=1 TO MainMenu.Items.Count DO Parse(Result,MainMenu.Items[PRED(I)]) END;
Use it as:
VAR MI : TMenuItem; FOR MI IN AllItems(MainMenu) DO ProcessMenuItem(MI);
Heartware
source share