Einzelnen Beitrag anzeigen

Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#1

Icon mit bestimmtem Index aus Datei lesen...

  Alt 18. Nov 2006, 01:08
Ich benutze die folgende Funktion um Dateiicons in eine in eine Systemimagelist zu laden und anschkießend den Index für die Anzeige in einer Treeview zu bekommen. Ich würde jetzt gern bei einigen Dateien den Iconindex mitgeben, d.h. es soll dann z.B. das 3. Icon geladen werden... wie mache ich das am besten?
Delphi-Quellcode:
function GetShellIcon(FileName: string; NoFile: boolean): integer;
var
  SHFileInfo: TSHFileInfo;
  Tmp: string;
  Txt: textfile;
begin
  Result := 0;
  //Falls ein Laufwerksbuchstabe übergeben wurde...
  if Length(FileName) = 1 then
    FileName := FileName + ':';
  //Laufwerke sollten mit \ enden...
  if (Length(FileName) = 2) and (copy(FileName, length(FileName), 1) = ':')
    and (copy(FileName, length(FileName), 1) <> '\') then
    FileName := FileName + '\';

  // CoInitialize has to be called before SHGetFileInfo (done by Delphi)
  FillChar(SHFileInfo, SizeOf(TSHFileInfo), 0);

  //Dateiino lesen...
  if NoFile = False then
    ShGetFileInfo(PChar(FileName), 0, SHFileInfo, SizeOf(TSHFileInfo),
      SHGFI_SYSICONINDEX or SHGFI_SMALLICON or SHGFI_ICON)
  else
    ShGetFileInfo(PChar(FileName), FILE_ATTRIBUTE_ARCHIVE, SHFileInfo,
      SizeOf(TSHFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON or
      SHGFI_ICON or SHGFI_USEFILEATTRIBUTES);

  try
    //IconIndex liefern...
    Result := SHFileInfo.iIcon;
  finally
    // icon handle freigeben
    DestroyIcon(SHFileInfo.hIcon);
  end;
end;
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat