Einzelnen Beitrag anzeigen

Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#3

Re: SHGetFileInfo nervt/funktioniert nicht so wie es soll...

  Alt 27. Mär 2004, 06:57
Hi,

ich habe das auf folgende Weise realisiert (funktioniert einwandfrei)

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  SHFileInfo: TSHFileInfo;
  SysIcons: THandle;
begin
  GlobalImageList := TImageList.Create(Self); // ist im private feld des forms
  try
    SysIcons := SHGetFileInfo(PChar(copy(ParamStr(0), 1, 3)), 0, SHFileInfo,
      SizeOf(SHFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON or
      SHGFI_ICON);
  finally
    DestroyIcon(SHFileInfo.hIcon);
  end;
  GlobalImageList.Handle := SysIcons;
end;
und dann der Code der mir das Icon holt
Delphi-Quellcode:
function GetAssociatedIcon(const AExtension: string; ASmall: Boolean): HIcon;
var
  Info: TSHFileInfo;
  Flags: Cardinal;
begin
  if ASmall then
    Flags := SHGFI_ICON or SHGFI_SMALLICON or SHGFI_USEFILEATTRIBUTES
  else
    Flags := SHGFI_ICON or SHGFI_LARGEICON or SHGFI_USEFILEATTRIBUTES;

  SHGetFileInfo(PChar(AExtension), FILE_ATTRIBUTE_NORMAL, Info, SizeOf(TSHFileInfo), Flags);
  Result := Info.hIcon;
end;
so etwa siehts dann beim hinzufügen aus
Delphi-Quellcode:
  
procedure TForm1.Datei_Hinzufuegen(const Datei: String);
var
  Icon: TIcon;
  Item: TListItem;
begin
  lwFileExplorer.Items.Clear;
  lwFileExplorer.SmallImages := GlobalImageList;
  Icon := TIcon.Create;
  try
    Icon.Handle := GetAssociatedIcon(ExtractFileExt(Datei), True);
    Icon.Transparent := True;
    Item := lwFileExplorer.Items.Add;
    Item.ImageIndex := GlobalImageList.AddIcon(Icon);
    Item.Caption := ExtractFileName(Datei);
  finally
    Icon.Free;
  end;
end;
Bei mir (Delphi7) klappen alle Codes ohne Probleme, ich bekomme immer das Handle des Icons zurück.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat