Ich habe etwas gefunden und es klappt auch schon ganz gut.
Vorweg, ich arbeite mit 3 ImageListen. Eine Fixe(enthält 5 Icons), eine Variable und Ein, die alles enthält. Desweiteren benutze ich 2 Forms, die diese ImageListen benutzen. Die 2. Form ist eine Art Icon Übersicht (auswählen, hinzufügen, löschen).
Delphi-Quellcode:
procedure Tfrm_main.FormCreate(Sender: TObject);
var
SHFileInfo: TSHFileInfo;
SysIcons: THandle;
begin
try
SysIcons := SHGetFileInfo(PChar(copy(ParamStr(0), 1, 3)), 0, SHFileInfo,
SizeOf(SHFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON or
SHGFI_ICON);
finally
DestroyIcon(SHFileInfo.hIcon);
end;
imgl_all.Handle := SysIcons;
imgl_all.Clear;
...
// ImageList Variable laden
if FileExists(AppPath + 'icons.imgl') then
ReadComponentResFile(AppPath + 'icons.imgl', imgl_variable);
...
// ImageList zusammensetzen
imgl_all.Clear;
imgl_all.AddImages(imgl_fix);
imgl_all.AddImages(imgl_variable);
End;
Die Icons werden jetzt ohne scharzen Rand angezeigt. Aber wenn ich einen OpenDialog öffne werden einige System / Standard Icons falsch dargestellt. Öffne ich die 2. Form erneut und möchte ein Icon aus einer Datei mit Hilfe des OpenDialog ermitteln, sind die Standard Icons zum größten Teil weg. Sehr merkwürdig.
Wie muss ich das OnCreate Event anpassen?