Die Funktion sollte doch rekursiv sein, denn du kannst ja mehrere Untermenüs haben.
Sprich als Pseudocode ca. so:
Delphi-Quellcode:
Funktion XYZ(AItem);
begin
Gehe alle Items von AItem druch ...
begin
Setze Eigenschaften des aktuelle Items.
Rufe XYZ auf und übergebe das aktuelle Item als Parameter.
end;
end;