tut mir leid ich habe gestern leider die frage vollkommen falsch gestellt. die icons bekomme ich auch ohne PitmIDlist weil damit kenne ich mich überhaupt nicht aus(leider) und ich finde auch nichts brauchbars das aussieht wie ein tutorial oder so mit den ich was anfangen könnte.
Zum icon problem: das habe ich mit hilfer diese funktion(die ich aus diesem forum habe) gelöst:
Delphi-Quellcode:
function GetIndex(Datei:String):integer;
var
SFI: TSHFileInfo;
SysIL, Flags: Cardinal;
i,z:integer;
ext,ext2:String;
begin
Result := -1; z:=-1;
// Die erweiterung in kleine buchstaben umwandeln
ext:=LowerCase (extractFileExt(datei));
// Schauen ob das lezte icon noch passt
if (index >-1) and (ext <> '') then
ext2:=LowerCase(iconListIndex[index].ext);
// Wenn nicht neue suchen
if (ext <> ext2) then
index:=-1;
// in der IconListIndex schauen ob das geuchte icon schon vorhanden ist
if index = -1 then begin
for i:=0 to high(iconListIndex) do begin
ext2:='';
ext2:=iconListIndex[i].ext;
// nach schauen ob ein eintrag passt und dabei unterscheiden ob sich um eine datei oder ein verzeichnis handelt
if (ext = ext2) and (ext2 <> '') then begin
// In Z wird der index zum icon gespeichert !
z:=iconListIndex[i].index;
break;
end;
end;
end;
// Wurde das icon schonmal verwendet dann wird das hier nicht ausgefürht und ich spare zeit
if z = -1 then begin
// index ein höhrer zählen(weil der ist ja noch -1)
if index +1 > 6 then
inc(index)
else // ist der index+1 größer als 6 dann wieder auf 0 stellen
index:=0;
// Die erweiterung in kleine buchstaben umwandeln und in die liste speichern
iconListIndex[index].ext:=LowerCase(extractFileExt(datei));
// Windows mitteiln was ich haben möchte, in meinem fall nur den sysiconindex und die Smallicon
Flags := SHGFI_SYSICONINDEX or SHGFI_SMALLICON;
// Infos anfordern
SysIL := SHGetFileInfo(@Datei[1] , 0, SFI, SizeOf(SFI), Flags);
// Wenn gefunden den index entsprechend eintragen
if SysIL <> 0 then begin
iconListIndex[index].index:=SFI.iIcon;
z:=SFI.iIcon;
end;
end;
// z zurückgeben
Result := z;
// Sysil evlt. wieder freigeben
DestroyIcon(SysIL);
end;
damit hole ich mir den index(wie gesagt der kern stammt aus diesem forum ich habe es nur etwas verändern)
damit nicht alle icons gesucht werden müssen führer ich ein liste mit den zulestzt 5 gefunden:
Delphi-Quellcode:
tIconIndex = record
index:Integer;
ext:String;
test:Cardinal;
end;
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
var
hImgSm,
hImgBig : HIMAGELIST;
fi : TSHFileInfo;
begin
SetLength(Files,0);
ListView1.Items.Count:=20;
DG:=0;
GG:=ListView1.Height+listview1.Width;
// Imageliste mit kleinen Symbolen ermitteln
hImgSm := HIMAGELIST(SHGetFileInfo('',0,fi,sizeof(fi),
SHGFI_SYSICONINDEX or SHGFI_SMALLICON));
// und an die Imageliste auf der Form übergeben
if(hImgSm <> 0) then
ilSmall.Handle := hImgSm;
// Imageliste mit großen Symbolen ermitteln
hImgBig := HIMAGELIST(SHGetFileInfo('',0,fi,sizeof(fi),
SHGFI_SYSICONINDEX or SHGFI_ICON));
// und an die Imageliste auf der Form übergeben
if(hImgBig <> 0) then
ilBig.Handle := hImgBig;
SetLength(iconListIndex,6);
und bei den imagelist die Shareimages auf true schalten und die namen anpassen.....
ich glaube das war jetzt alles !
vielen dank für eure hilfe !