![]() |
VirtualTreeView, no image list was supplied
Hallo,
ich habe auf Delphi XE 10.2 und VirtualTreeView 6.6 upgedatet. Jetzt bekomme ich bei einem Projekt folgende Fehlermeldung Zitat:
Delphi-Quellcode:
Danke für eure Unterstützung
procedure Tfo1ProjNr.vrdbtProjNrGetImageIndex(Sender: TBaseVirtualTree;
Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: TImageIndex); var Data: PTreeData; begin Data := Sender.GetNodeData(Node); { Rote LED vor Projekte, bei denen Meilensteinen überschritten sind } if Column=1 then begin if (Data^[4].asString = 'O') then begin if (Data^[6].asString='1') then // sehr wichtig ImageIndex:=5 //ROT mit ! else ImageIndex:=4; //ROT end else if (Data^[4].asString = 'Y') then begin if (Data^[6].asString='1') then ImageIndex:=3 //GELB mit ! else ImageIndex:=2; //GELB end else if (Data^[3].asString = 'A') then begin if (Data^[6].asString='1') then ImageIndex:=1 //GRÜN mit ! else ImageIndex:=0; //GRÜN end else if (Data^[3].asString = 'T') then begin if (Data^[6].asString='1') then ImageIndex:=7 //blau mit ! else ImageIndex:=6; //blau end; end; end; |
AW: VirtualTreeView, no image list was supplied
Du musst der Komponente auch eine ImageList zuweisen aus der du die Images laden möchtest. Entweder per OI oder per Code
Delphi-Quellcode:
. Natürlich angepasst an deinen ImageList Komponenten Namen.
vrdbtProjNr.ImageList := ImageList1;
Zusätzlich solltest du auch noch den ImageKind abfragen. Du kannst je nach Status der Node einen anderen ImageIndex übergeben. Also in etwa so:
Delphi-Quellcode:
Alternativ zu der Abfrage kannst du der Property SelectedImages auch die gleiche ImageList nochmal zuweisen.
procedure Tfo1ProjNr.vrdbtProjNrGetImageIndex(Sender: TBaseVirtualTree;
Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: TImageIndex); var Data: PTreeData; begin Data := Sender.GetNodeData(Node); if (Kind <> ikSelected) then begin // Das solltest du noch einfügen, da du ansonsten die Meldung nochmal bekommst. Nur mit der Meldung "An Image Index was supplied for TTVImagekind.ikSelected but no image list was supplied" // Hier dann deine Images zuweisen end; end; |
AW: VirtualTreeView, no image list was supplied
Ich habe die TreeView seit Jahren nicht mehr angefasst. Bisher war die ImageList nur dem Property
Delphi-Quellcode:
zugewiesen und von Delphi 7 bis XE10 hatte es so auch funktioniert.
StateImages
Das Property
Delphi-Quellcode:
gibt es nicht. Ich habe
ImageList
Delphi-Quellcode:
gesetzt, dann funktioniert es. Allerdings zeigt es dann bei allen nicht selektierten Einträgen zwei LED an.
vrdbtProjNr.Images = ImageList
Ich habe testweise die Zuweisung nur bei
Delphi-Quellcode:
gemacht und bei
Images
Delphi-Quellcode:
gelöscht. Dann kommt die Fehlermeldung wieder.
StateImages
Nach etwas rum probieren, die Hilfe ist zu StateImages recht dürftig, bin ich auf folgendes Setting gekommen das wieder einwandfrei läuft:
Delphi-Quellcode:
Images nicht zuweisen
StateImages = ImageList1; procedure Tfo1ProjNr.vrdbtProjNrGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: TImageIndex); var Data: PTreeData; begin Data := Sender.GetNodeData(Node); if (Kind = ikState) then begin // Verhindert die Meldung "An Image Index was supplied for TTVImagekind.ikSelected but no image list was supplied" // Ad hier Images zuweisen end; end; |
AW: VirtualTreeView, no image list was supplied
Hallo.
Sorry. Ja die Property heißt nur
Delphi-Quellcode:
und nicht
Images
Delphi-Quellcode:
.
ImageList
In deinem SourceCode solltest du daher auch nicht wie oben von mir beschrieben nur auf ungleich
Delphi-Quellcode:
sondern auf
ikSelected
Delphi-Quellcode:
prüfen. Das verhindert, dass er die Exception wirft. Wenn du auch je nach State (also Node selektiert oder nicht) auch ein Image hinterlegen willst, dann muss du das Set entsprechend um
if (Kind in [ikNormal, ikSelected]) then
Delphi-Quellcode:
erweitern und dem Tree auch eine
ikState
Delphi-Quellcode:
ImageList zuweisen. Das kann natürlich die gleiche sein wie die, die du der
StateImages
Delphi-Quellcode:
Property zugewiesen hast.
Images
Der letzte Kind ist
Delphi-Quellcode:
der entsprechend über eine bereits gezeichnetes Image drüber gemalt wird. Habe ich bisher aber auch noch nicht verwendet.
ikOverlay
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz