Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Pfade parsen um Icons zu extrahieren

  Alt 29. Sep 2016, 15:10
Ich habe es nochmal geändert aber irgendwie ist das ein Hack weil Hardgecoded.
Delphi-Quellcode:
procedure TSkinComboBox.FillList(Path: WideString);
var
  FileInfo: SHFILEINFO;
  IntI: Integer;
  PathRecursive: TSplitStrArray;
  s: string;
begin

  SetLength(PathRecursive, 0);

  PathRecursive := Split(Path, '\');
  // PathRecursive + 3 der erste Eintrag in der Combo beginnt bei 1
  // 0 ist weg bleiben noch 2
  // 1 für den Desktop und 2 für Computer
  SetLength(IconHandle, High(PathRecursive) + 3);

  for IntI := 1 to High(IconHandle) do
  begin
    if IntI = 1 then
      s := GetSpecialFolder(CSIDL_DESKTOPDIRECTORY)
    else if IntI = 2 then
    s := GetSpecialFolder(CSIDL_DRIVES)
    else
    // - 3 damit wir wieder auf 0 gelangen.
    // 0 ist der erste Eintrag im Split Array PathRecursive
    s := s + PathRecursive[IntI - 3] + '\';

    SHGetFileInfo(PWideChar(s), FILE_ATTRIBUTE_NORMAL, FileInfo, sizeof(FileInfo),
      SHGFI_DISPLAYNAME Or SHGFI_SYSICONINDEX or SHGFI_SMALLICON or SHGFI_ICON);

    IconHandle[IntI] := FileInfo.HIcon;
  end;
end;
Bei Computer gibt er mir ein Folder Icon und das Letzte ist auch irgendwie daneben.
Sieht nach einem Icon mit "Wait Cursor aus."
CSIDL_DRIVES für Computer scheint falsch zu sein. Muss noch mal schaun.

Die anderen sind soweit in Ordnung.
Die Icons sind etwas nach unten gerutscht sollte aber das kleinste Problem sein.

gruss

Geändert von EWeiss (11. Jul 2019 um 16:45 Uhr)
  Mit Zitat antworten Zitat