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