Der Code da ist unwichtig, ist ein Fehler beim Kopieren passiert.
Es funktioniert ja ohnehin nicht, egal was ich mache und ob da jetzt eine Zuweisung fehlt.
Ich habe dieses Minimalbeispiel nur gebaut um grob zu zeigen wie alles aufgebaut ist. Und in der Hoffnung, dass ihr mir helfen könnt, SHGetFileInfo() dort richtig einzubauen.
So bekomme ich was angezeigt aber es ruckelt, zuckelt und führt sicher wieder zu Fehlern.
Was ich gerade bestätigen konnte: ein Doppelklick auf den Trenner nach Spalte 1 führt zum Einfrieren und OutOfResources; aus
Vcl.Graphics wird aufgerufen.
Delphi-Quellcode:
procedure TForm1.VSTGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: TImageIndex);
var
Info: TSHFileInfo;
begin
if (not(Column in [0, 1])) or (not Assigned(TreeDataKlassen)) then
Exit;
if Kind in [ikNormal, ikSelected] then
begin
if TreeDataKlassen[Node^.Index].IconIndexSpalte1 = -1 then
begin
SHGetFileInfo(PChar(TreeDataKlassen[Node^.Index].PfadSpalte1), FILE_ATTRIBUTE_NORMAL, Info, SizeOf(TSHFileInfo), SHGFI_SYSICONINDEX or SHGFI_ICON or SHGFI_SMALLICON) ;
TreeDataKlassen[Node^.Index].IconIndexSpalte1 := Info.iIcon;
end;
ImageIndex := TreeDataKlassen[Node^.Index].IconIndexSpalte1;
end;
end;
Zitat:
Übrigens:
procedure AddAllFilesInDir(const Dir: string; var List: TStringList);
List sollte const
sein, nicht var
, denn es soll ja nicht der Zeiger zur Liste geändert werden (können) sondern nur deren Inhalt.
Die Funktion verwende ich im Originalprojekt nicht. Die hab ich nur auf die Schnelle reingekloppt.