Bonsoir,
j'aurais besoin d'un petit coup de pouce car là, je sèche !
Voilà, je suis en ce moment sur un logiciel qui charge dynamiquement un popupmenu à partir d'un fichier INI et je voudrais récupérer l'icône (en 16*16 pixels) du logiciel chargé dans l'item nouvellement créé du popupmenu et l'affecter à cet item.
J'ai déjà quelques bout de codes :
récupérer l'icône :
Code delphi : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 function TForm2.GetIconHandle(const P_FileName : string; const P_Modifier : integer): HIcon; var Sfi: TSHFileInfo; begin SHGetFileInfo(PChar(P_FileName), 0, Sfi, SizeOf(TSHFileInfo), SHGFI_SYSICONINDEX or SHGFI_ICON or P_Modifier); Result := Sfi.hIcon; end;
la transformer en bitmap :
Code delphi : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 procedure IconToBitmap(hIcon: THandle; var ABmp:TBitmap); begin ABmp.Width := 16; ABmp.Height := 16; ABmp.PixelFormat := pf24bit; DrawIconEx(ABmp.Canvas.Handle, 0, 0, hIcon, 16, 16, 0, 0, DI_NORMAL); end;
et enfin, l'affecter au nouvel item :
Code delphi : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 begin Bitmap := TBitmap.Create; try hIcon := GetIconHandle(diritem, SHGFI_SHELLICONSIZE); IconToBitmap(hIcon, Bitmap); menuitem.Bitmap := Bitmap; finally Bitmap.Free; end;
Mon problème ? Où ajouter mon code permettant d'affecter le bitmap ?
J'ai tenté dans ma procédure d'ajout des items :
mais delphi me retourne pas mal d'erreur du genre "'(' expected but ':=' found"...
Code delphi : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 procedure AjouterUnItem(PopupMenu:TMenuItem;FichierIniACharger,Section,Cle,default:String); begin INI:=TIniFile.Create(FichierIniACharger); MenuItem:=TMenuItem.Create(PopupMenu); MenuItem.Caption:=nomitem; PopupMenu.Add(menuItem); if section='Playlist' then begin MenuItem.OnClick := Form5.PlaylistClic end else if section='Item_Prog' then begin Bitmap := TBitmap.Create; try hIcon := GetIconHandle(diritem, SHGFI_SHELLICONSIZE); IconToBitmap(hIcon, Bitmap); menuitem.Bitmap := Bitmap; finally Bitmap.Free; end; MenuItem.OnClick := Form5.AjoutClicExe end else MenuItem.OnClick := Form5.AjoutClicDir; end;
J'ai récupéré ces codes dans un de mes anciens programmes et il marchait très bien
Quelqu'un aurait une idée pour faire marcher ma procédure ?
Merci.
Partager