Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Icons nicht existierender Dateien holen

  Alt 28. Aug 2019, 13:02
bei den Attributen musst du noch SHGFI_USEFILEATTRIBUTES angeben.
Danke! Schubs hat gereicht
Delphi-Quellcode:
function GetFileInfo(AExt: string; var AInfo: TSHFileInfo): Boolean;
begin
  ZeroMemory(@AInfo, SizeOf(TSHFileInfo));
  Result := (
    SHGetFileInfo(
      PChar(AExt), FILE_ATTRIBUTE_NORMAL, AInfo, SizeOf(TSHFileInfo),
      SHGFI_ICON + SHGFI_TYPENAME + SHGFI_USEFILEATTRIBUTES + SHGFI_LARGEICON
    ) <> 0
  );
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  I: Integer;
  LExt, LStr: string;
  LIcon: TIcon;
  LInfo: TSHFileInfo;
  LItem: TListItem;
  LList: TStringList;
begin
  LList := TStringList.Create;
  try
    LList.Add('test.txt');
    LList.Add('test.exe');
    LList.Add('test.xls');
    ImageList1.Clear;
    ListView1.Clear;
    for LStr in LList do begin
      LExt := ExtractFileExt(LStr);
      if GetFileInfo(LExt, LInfo) then begin
        I := -1;
        LIcon := TIcon.Create;
        try
          LIcon.Handle := LInfo.hIcon;
          LIcon.Transparent := true;
          I := ImageList1.AddIcon(LIcon);
        finally
          LIcon.Free;
        end;
        LItem := ListView1.Items.Add;
        LItem.Caption := LStr;
        LItem.ImageIndex := I;
      end;
    end;
  finally
    FreeAndNil(LList);
  end;
end;
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat