Hallo
ich habe mal 'nen Code geschrieben um die Symbole aus einer
Dll in einem ListView aufzulisten. Man braucht dazu ein TListView und eine TImageList. Diese werden dann miteinander verknüpft (ListView.LargeImages := ImageList und ListView.SmallImages := ImageList).
Mit dem Code werden einfach Einträge erzeugt die "Symbol 1", "Symbol 2" usw. heissen und jeweils das dazugehörige Icon haben.
Delphi-Quellcode:
uses ShellApi
//...
function IconExists(ICO_DLL:
string; Position: integer): Boolean;
var i: TIcon;
begin
//Kompnente erzeugen
i:=TIcon.Create;
i.Handle:=0;
//Handle dem Symbol zuweisen
i.Handle:=ExtractIcon(Application.Handle,PAnsiChar(ICO_DLL),Position);
//Wenn Handle immer noch "0" ist "False" ausgeben
if i.Handle<>0
then Result:=True
else Result:=False;
//Speicher Freigeben
i.Free;
end;
function WriteIconList(IconDll:
string; ListView: TListView; ImageList: TImageList): Boolean;
var
i0,i1: integer;
ICO: TIcon;
L: TListItem;
begin
//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;
i0:=0;
//ImageList mit den Symbolen erzeugen
repeat
if IconExists(IconDll,i0)
then begin
ICO.Handle:=ExtractIcon(Application.Handle,PAnsiChar(IconDLL),i0);
ImageList.AddIcon(ICO);
i0:=i0+1;
end;
until not IconExists(IconDll,i0);
//Symbole in ListView schreiben
for i1:=0
to i0
do
begin
L:=ListView.Items.Add;
L.Caption:='
Symbol '+IntToStr(i1);
L.ImageIndex:=i1;
end;
//Freigabe des Speichers und setzten der Funktions ausgabe (True / False)
ICO.Free;
Result:=True;
end else Result:=False;
end;
[edit=Chakotay1308]Titel angepasst. Mfg, Chakotay1308[/edit]
Robin W.
Ein Computer kann (fast) alles.... Man muss es ihm nur beibringen