Guten Tag,
meine Anwendung speichert alle wichtigen Anwendungen, Dokumente und Ordner, die man so braucht unter Windows.
Ich ermitteln mit GetFileIcon das Icon (kleines Icon) und lade es in ein TImage. Funktioniert auch wunderbar und sieht gut aus.
Delphi-Quellcode:
function GetFileIcon(const FileName: string; const Icon: TIcon; const FileMustExist: Boolean): Boolean;
var
FI: TSHFileInfo;
Attributes: DWORD;
Flags: Word;
begin
if FileMustExist then
begin
Attributes := 0;
//Flags := SHGFI_ICON or SHGFI_LARGEICON;
Flags := SHGFI_ICON or SHGFI_SMALLICON;
end
else
begin
Attributes := FILE_ATTRIBUTE_NORMAL;
//Flags := SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_LARGEICON;
Flags := SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_SMALLICON;
end;
if SHGetFileInfo(PChar(FileName), Attributes, FI, SizeOf(FI), Flags) <> 0 then
begin
Icon.ReleaseHandle;
Icon.Handle := FI.hIcon;
Result := True;
end
else
Result := False;
end;
...
// Aufruf
icon := TIcon.Create;
if GetFileIcon(iconpath, icon, True) = True then
img_icon.Picture.Icon := icon;
icon.Free;
...
Danach füge ich das Icon in eine ImageList und speichere sie.
Delphi-Quellcode:
frm_main.imgl_variable.AddIcon(img_icon.Picture.Icon);
// ImageList Variable speichern
WriteComponentResFile(frm_main.AppPath + 'icons.imgl', frm_main.imgl_variable);
Die Icons werden in einem ListView im vsIcon Modus angezeigt. Leider sieht das Icon dann nicht mehr so schön aus und der Hintergrund des Icons ist schwarz gezackt. Wenn ich z.B.: mit IconConverterr das Icon erstelle und als ICON abspeichere und dann in meinem Program verwende, sieht es wesentlich besser aus aber auch noch nicht perfekt. Siehe Anhang. Bild 5 ist mit einem IconConverter und Bild 6 ist mit meinem Programm erzeugt wurden. Im 3. roten Kreis sieht man das Icon in der TImage Komponente.
Weiß einer wie ich den Hintergrund besser hinbekomme, so dass das Icon wieder so aussieht wie in der TImage Komponete?