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:
AIUTO VI PREGO SE CONOSCETE UNA SOLUZIONE DIVERSA.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;

Rispondi quotando