Etwas optimiert.
function WriteIconList liefert nun die Anzahl der gefundenen Icons.
function IconExists vereinfacht.
Delphi-Quellcode:
function IconExists(
const ICO_DLL:
string; Position: integer): Boolean;
var
handle : HICON;
begin
handle:=ExtractIcon(Application.Handle,PAnsiChar(ICO_DLL),Position);
Result :=
handle <> 0;
DeleteObject(
handle);
end;
function WriteIconList(IconDll:
string; ListView: TListView; ImageList: TImageList): integer;
var
i: integer;
ICO: TIcon;
L: TListItem;
begin
Result := 0;
//Pruefen ob TListView und TImageList "verbunden" sind
if (Assigned(ListView))
and (Assigned(ImageList))
then
begin
//Erzeugen der Komponenten / Leeren der ImageList / Startparameter setzten
ImageList.Clear;
ICO:= TIcon.Create;
//ImageList mit den Symbolen erzeugen
while IconExists(IconDll, Result)
do
begin
ICO.Handle:=ExtractIcon(Application.Handle,PAnsiChar(IconDLL),result);
ImageList.AddIcon(ICO);
Inc(Result);
end;
//Symbole in ListView schreiben
for i:=0
to Result-1
do
begin
L:=ListView.Items.Add;
L.Caption:='
Symbol '+IntToStr(i);
L.ImageIndex:=i;
end;
//Freigabe des Speichers
ICO.Free;
end;
end;