Salve,
ho una form MDI contenenti le ImageList e un MainMenu, ove all'interno di quest'ultimo sono associati per ogni item di Menu, è associata un'icona corrispondente nella ImageList.

Il mio problema è questo:
Devo prelevare da il MainMenu, sia la voce di menu che l'icona corrispondente e mettere il tutto su di una TreeView.

questo è una parte di codice che ho fatto:

codice:
procedure TFormTreeView.FillTreeView(aMenu: TMenu; var ListName : TStringList);
//
// sub procedure: elimina la & dalla caption
function Etichetta(aStr: string):string;
begin
  Delete(aStr, pos('&', aStr),1);
  Result:= aStr;
end;
//
// riempie i nodi ricorsivamete
procedure FillN(aMenuItem: TMenuItem; var ListName: TStringList);
var
  lNodoF: TTreeNode;
  lMenuItemS: TMenuItem;
  j, NodeCount : integer;
  lTag: integer;
  AImageList: TImageList;
  tmpBMP:TBitmap;

begin
  try
    NodeCount:=TreeViewMain.Items.Count - 1 ;
    for j := 0 to aMenuItem.Count -1 do
    begin
      lMenuItemS:= aMenuItem.Items[j];
      if not (lMenuItemS.Caption ='-') or (lMenuItemS.visible) then
      begin
        lNodoF:= TreeViewMain.Items[NodeCount];
        TreeViewMain.Items.AddChild(lNodoF, Etichetta(lMenuItemS.Caption));
        if lMenuItemS.Enabled and aMenuItem.Enabled then
        begin
          tmpBMP:=TBitmap.Create;
          if lMenuItemS.ImageIndex >= 0 then
          begin
            AImageList.GetBitmap(lMenuItemS.ImageIndex, tmpBMP);
            TreeViewMain.Items[j].ImageIndex := imgAlberoMenu.Add(tmpBMP, nil);;
            TreeViewMain.Items[j].SelectedIndex := imgAlberoMenu.Add(tmpBMP, nil);;
            tmpBMP.Free;
          end;
        end
        else begin
          TreeViewMain.Items[TreeViewMain.Items.Count - 1].ImageIndex:= _disabledImage;
          TreeViewMain.Items[TreeViewMain.Items.Count - 1].SelectedIndex := _disabledImage;
        end;
        ListName.Add(lMenuItemS.Name);
        if lMenuItemS.Count > 0 then
          FillN(lMenuItemS,ListName);
      end;
    end;

  except
  end;
end;
//
// procedure principale FillTreeView
var
  lNodoP : TTreeNode;
  lMenuItem: TMenuItem;
  lTag: integer;
  i: integer;
  tmpBMP:TBitmap;
begin
  try
    lMenuItem:= aMenu.Items[0];
    if (not (lMenuItem.Caption ='-')) or (lMenuItem.visible) then
    begin
      lNodoP:=TTreenode.Create(TreeViewMain.Items);
      TreeViewMain.Items.Add(lNodoP, Etichetta(lMenuItem.Caption));
      if lMenuItem.Enabled then
      begin
        TreeViewMain.Items[TreeViewMain.Items.Count - 1].ImageIndex := 0;
        TreeViewMain.Items[TreeViewMain.Items.Count - 1].SelectedIndex := 0;
      end
      else begin
        TreeViewMain.Items[TreeViewMain.Items.Count - 1].ImageIndex:= _disabledImage;
        TreeViewMain.Items[TreeViewMain.Items.Count - 1].SelectedIndex := _disabledImage;
    end;
    ListName.Add(lMenuItem.Name);
    if lMenuItem.Count > 0 then
      FillN(lMenuItem, ListName);
    end;
  except end;
end;
AIUTO VI PREGO SE CONOSCETE UNA SOLUZIONE DIVERSA.