Cómo pasar un menú a un árbol o TTreeView.

Este procedimiento hace lo que quieres. Tan sólo tienes que llamarlo pasando como parámetros el menú a copiar y el TTreeView destino. No elimina cualquier contenido anterior que tuviese el árbol.

//-----------------------------------------------------------

// Procedimiento para copiar un TMainMenu a TTreeView
Procedure CopiaMenuATreeView(Menu: TMainMenu; Arbol: TTreeView);
Var
Contador: Integer;
Nodo: TTreeNode;

// Procedimiento interno recursivo que se encarga de
// recorrer las opciones
Procedure AnadeOpcion(Opcion: TMenuItem; Nodo: TTreeNode);
Var
Contador: Integer;
NuevoNodo: TTreeNode;
Begin
// Añadimos la opción recibida
NuevoNodo := Arbol.Items.AddChild(Nodo, Opcion.Caption);
// y recorremos todas las que pudiera tener
For Contador := 0 To Opcion.Count-1 Do
// llamándonos de forma recursiva
AnadeOpcion(Opcion.Items[Contador], NuevoNodo);

End;
Begin
// Añadimos un primer nodo raíz
Nodo := Arbol.Items.Add(Nil, Menu.Name);
// y recorremos las opciones principales llamando
// a AnadeOpcion por cada una de ellas
For Contador := 0 To Menu.Items.Count-1 Do
AnadeOpcion(Menu.Items[Contador], Nodo);
End;
//-----------------------------------------------------------