在XP下使用XP格式的图标
//unit must have Consts and CommCtrl in its uses, and the XP theming (Manifest or the XPMan component for Delphi 7 users)
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);
end;
ImageList.AddImages(TemporyImageList);
finally
TemporyImageList.Free;
end;
end;
end;
就这段代码了,使用的时候,先清空 ImageList,再 调用本函数,最后添加进去的 XP 格式的图标就会变成 真正的XP格式……
如果ImageList是空的,并且ShareImages=False则只要简单地调用:
ImageList.Handle := ImageList_Create(ImageList.Width, ImageList.Height, ILC_COLOR32 or ILC_MASK, 0, ImageList.AllocBy);
就可以了。