ImageList niepoprawnie wyświetla ikonki XP. Co robić

Standardowy ImageList nie radzi sobie z 32 bitowymi ikonkami.
Jest sposób, aby to naprawić. Niestety... zadziała tylko na WinXP.
Dodatkowo ImageList nie moze zawierać ikon. Musisz dodać je po wykonaniu
poniższej procedury (np. z zasobów, z dysku).

Program musi zawierać manifest XP.
Do listy uses dodaj CommCtrl.

procedure ImageListTo32Bit(const ImageList: TImageList);
begin
  if Assigned(ImageList) then
  begin
    // czyscimy ikonki:
    ImageList.Clear;                     
    ImageList.Handle := ImageList_Create(16, 16, ILC_COLOR32 or ILC_MASK, 0, 0);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ImageListTo32bit(ImageList1);
  // tu do listy musisz dodac ikonki
  ImageList1.AddIcon(Image1.Picture.Icon);
end;

FAQ

2 komentarzy

Nie... CommCtrl :-P

do listy uses dodaj CommCtrl

CHYBA ComCtrl???