Einzelnen Beitrag anzeigen

Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#20

AW: Application.CreateForm in einem Thread

  Alt 10. Mai 2017, 07:20
Angezeigt bekomme ich zwar ein Icon, aber für alle Nodes dasselbe. Ein ganz komisches, teils grünes mit Anführungszeichen.
Moin,

ich habe mir deinen Code zwar jetzt nicht eingebaut, aber du solltest beim OnGetImageIndex() Event folgendes beachten:

Prüfe immer den ImageKind der übergeben wird. Es gibt insgesamt 4 (?) Typen. (Habe den Source gerade nicht vorliegen, daher aus dem Kopf)
Delphi-Quellcode:
ikNormal, // Wird angezeigt wenn die Node keinen speziellen Zustand hat
ikSelected, // Wird angezeigt wenn die Node ausgewählt ist (Sei es durch FocusedNode oder das die Node in einer Selection enthalten ist)
ikState, // Habe ich bisher nie verwendet. Gibt aber wohl einen speziellen Status der Node an den man wohl wieder abfragen kann (bspw. wird gerade editiert oder so) (genauere Infos im SourceCode des VST)
ikOverlay // Das Image, dass nochmal über das eigentliche Image drübergepinselt werden soll (auch hier genauere Infos im SourceCode des VST)
In der Regel sind ikNormal und ikSelected die beiden meist benötigten Typen. Deshalb solltest du in dein OnGetImageIndex() Event die folgende Abfrage mit aufnehmen. Eventuell ist dadurch dein Problem schon behoben. Wenn nicht, dann solltest du dir die Images in der ImageList eventuell mal alle in einer PaintBox nebeneinander malen und sie dir anschauen.

Delphi-Quellcode:
procedure TfrmDirectoryBrowser.vstDirectoryBrowserGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer);
var
 NodeData: PDirectory;
 Info: TSHFileInfo;
begin
  if (Kind in [ikNormal, ikSelected]) then begin // Die Zeile hinzufügen (es sei denn du wolltest die speziellen Typen behandeln)
    NodeData := Sender.GetNodeData(Node);
    ImageIndex := NodeData^.iIconIndex;
  end;
end;
@Jaenicke: Ja kann man so machen.
Ich konnte mich allerdings bisher nicht an die Umstellung auf Generics in Bezug auf den VST gewöhnen. Überall anders im Programm wird massiv mit Generics gearbeitet. Die Einführung kam ja irgendwann mit Version 6.X. Ich bin dabei seit den frühereren 4.X Versionen als er noch von Mike Lischke programmiert wurde. Und da war das alles noch ganz anders

Geändert von Aviator (10. Mai 2017 um 07:23 Uhr)
  Mit Zitat antworten Zitat