Az eljárást egy külön unit-ban hoztuk létre a könnyebb felhasználhatóság kedvéért.

MenuToTreeView
Osztály:
procedure MenuToTreeView(
Menu: TMainMenu;
TreeView: TTreeView
);
Ez a függvény a megadott menü szerkezetét beolvassa egy szintén megadott TreeView komponensbe.
Paraméterek
Menu: TMainMenu
Ebben a paraméterben kell megadni annak a menünek az objektumát, amelyet a TreeView komponensben meg szeretnénk jeleníteni.
TreeView: TTreeView
Ebben a paraméterben annak a TreeView komponensnek az objektumát adhatjuk meg, amelyben a menü szerkezetét szeretnénk megjeleníteni.
Maga a MenuToTreeView eljárás elég egyszerű. Először is a TreeView Images property-jébe beírjuk a menü Images property-jében megadott TImageList objektumot (ha van ilyen). Ezzel azt érjük el, hogy ha a TreeView elemeinél ugyanazt az ImageIndex-et állítjuk be, mint az elemhez tartozó menüpont ImageIndex-e, akkor a TreeView-ben is a megfelelő kép jelenik meg.
A következő lépés a TreeView tartalmának törlése, valamint az Items objektum BeginUpdate eljárásának meghívása. Ez utóbbi a feldolgozást gyorsítja, mert az elemek hozzáadásánál nem fogja frissíteni a komponens képét. Ezután meghívjuk az AddItems eljárást. Az AddItems lefutása után meghívjuk az EndUpdate eljárást, amivel újra engedélyezzük a TreeView elemeinek megjelenítését.
A menüpontok felvételét a fent említett Additems eljárás végzi el.

AddItems
Osztály:
procedure AddItems(
TreeView: TTreeView;
ParentNode: TTreeNode;
MenuItem: TMenuItem
);
Mivel a menü szerkezete hierarchikus felépítésű, és gyakorlatilag minden menüponthoz tartozhatnak almenük is, így ezek bejárása csak rekurzív eljárással lehetséges. Ez az eljárás az AddItems, amely elvégzi a menüpontok beolvasását és felvételét a TreeView-ba.
Paraméterek
TreeView: TTreeView
Ebben a paraméterben kell megadni a TreeView komponens objektumát. Erre csak azért van szükség, hogy az objektumot ne kelljen egy globális változóban eltárolni.
ParentNode: TTreeNode
A megadott menüpontokat tartalmazó TreeView elem. A főmenünél (menüsor) még nincs ilyen elem, tehát az eljárás első meghívásakor ennek a paraméternek az értéke nil.
MenuItem: TMenuItem
Ebben a paraméterben adjuk meg az aktuális almenü menüpontjait tartalmazó TMenuItem típusú objektumot.
Megjegyzés
Az eljárásban egy ciklusban végigmegyünk a TMenuItem objektumban tárolt menüpontokon. Egy változóban kitesszük az aktuális menüpont Caption property-jének értékét (c). Ebből a sztringből töröljük az egyedül álló „&” karaktereket, amelyek az utána álló betű aláhúzását hivatott jelezni. A dupla „&” betűket viszont nem törölhetjük, mivel azok egy darab „&” karaktert jelenítenek meg a Caption-ban.
Ha a Caption property értéke nem „-”, akkor felvesszük a TreeView-ba. Az AddChild függvénnyel felvesszük a TreeView elemet, majd beállítjuk a képek indexeit. Ha az adott menüponthoz tartozik almenü (ezt a Count property-jéből tudhatjuk meg), akkor rekurzívan meghívjuk az AddItems eljárást úgy, hogy a ParentNode paraméterben az új TreeView elem objektumát adjuk meg, a MenuItem objektumban pedig az aktuális menüpont objektumát.