Einzelnen Beitrag anzeigen

Benutzerbild von robinWie
robinWie

Registriert seit: 26. Okt 2005
Ort: Lippcity
404 Beiträge
 
Delphi 2005 Personal
 
#1

Inhalt einer "Icon-DLL" auflisten

  Alt 20. Mär 2006, 18:37
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
  Mit Zitat antworten Zitat