Zitat von
mirage228:
Hi,
der ImageList_Create() Befehl ist nicht in der
Unit ShellAPI, sondern in der CommCtrl
Unit deklariert.
mfG
mirage228
Hallo!
Stimmt... Ich hatte bei mir den Befehl nur an falscher Stelle platziert.
Aber funktionieren tut es so
Code:
Handle := ImageList_Create(16,16,ILC_COLOR32,255,0);
trotzdem nicht.
Aber ich habe mir jetzt dieses Convert ImageList (XP Fix) angeschaut und eingebunden:
Code:
//Diese Procedure habe ich hinzugefügt...
procedure ConvertTo32BitImageList(const ImageList: TImageList);
const
Mask: array[Boolean] of Longint = (0, ILC_MASK);
var
TemporyImageList: TImageList;
begin
if Assigned(ImageList) then
begin
TemporyImageList := TImageList.Create(nil);
try
TemporyImageList.Assign(ImageList);
with ImageList do
begin
ImageList.Handle := ImageList_Create(Width, Height, ILC_COLOR32 or Mask[Masked], 0, AllocBy);
if not ImageList.HandleAllocated then
begin
raise EInvalidOperation.Create(SInvalidImageList);
end;
end;
ImageList.AddImages(TemporyImageList);
finally
TemporyImageList.Free;
end;
end;
end;
//...und hier eingebunden.
constructor TNewImageList.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ConvertTo32BitImageList(Self);
end;
Gruß,
Timon.