AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Icons aus Shell32.dll

Ein Thema von Tpercon · begonnen am 12. Jul 2002 · letzter Beitrag vom 22. Aug 2004
 
MathiasSimmack
(Gast)

n/a Beiträge
 
#12
  Alt 13. Jul 2002, 14:51
@Chris: Nö.

@Tpercon: Wenn du unter dem Imageindex 48 bleibst, dann kannst du die Icons getrost verwenden. Soweit ich das gesehen habe, sind diese identisch. Insofern dürfte es bei dir (Laufwerks-Icons) keine Probleme geben.

Generell wäre aber sicher sakuras Beitrag interessant, weil diese Variante unabhängig von eigenen Zugriffen auf die "shell32.dll" ist. Ich habe mir mal die Freiheit genommen, den für dich wahrscheinlich wichtigen Teil zu extrahieren. sakura wird hoffentlich nicht schimpfen.

Folgendes (gebasteltes ) Beispiel liest die vorhandenen Laufwerke mit den korrekten Icons in eine ListView ein. Die Routinen "DriveExists" und "DriveType" stehen in der DP-Library und sind -natürlich!- auch von sakura:

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : integer;
  FileInfo: TSHFileInfo;
  ImageListHandle: THandle;
  aIcon: TIcon;
begin
  for i := 0 to 25 do
    if(DriveExists(i)) then
      begin
        fillchar(FileInfo,sizeof(FileInfo),#0);
          ImageListHandle := SHGetFileInfo(pchar(CHR(i+65) + ':\'),
          0, FileInfo, sizeof(FileInfo), SHGFI_ICON or SHGFI_LARGEICON);

        try
          aIcon := TIcon.Create;
          try
            aIcon.Handle := FileInfo.hIcon;

            ListView1.Items.Add;
            ListView1.Items[ListView1.Items.Count-1].Caption   :=
              CHR(i+65) + ':\  (' + DriveType(i) + ')';
            ListView1.Items[ListView1.Items.Count-1].ImageIndex :=
              ImageList1.AddIcon(aIcon);
          finally
            FreeAndNil(aIcon);
          end;
        finally
          DestroyIcon(FileInfo.hIcon);
          ImageList_Destroy(ImageListHandle);
        end;
      end;
end;
Codebasis, Copyright by Sakura.
(Das nur, damit er mich nicht auf 10 Mio US-Dollar verklagt. )

<Edit>

"ShellAPI" und "CommCtrl" (für ImageList_Destroy) nicht vergessen! Außerdem sollte die Imageliste natürlich die Maße 32x32 besitzen. Andernfalls kann man aber auch das Flag SHGFI_SMALLICON benutzen.

Hatte ich doch glatt vergessen zu erwähnen.

</Edit>


Gruß,
Mathias.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz