![]() |
VirtualStringTree - Schriftfarbe der jeweiligen Zelle?
Guten Tag,
ich würde gerne mit einer For-Schleife durch das VST laufen und alle Datensätze kontrollieren, wie die Schriftfarbe der Werte in einer bestimmten Spalte ist. Irgendwie fehlt mir der Ansatz. Die Daten des VST liegen in einer Class (Anlehnung an das Beispiel hier im Forum). Beispielcode:
Delphi-Quellcode:
Vielen Dank im voraus.
...
var i : Integer; curNode : PVirtualNode; TimeOverviewDate : TOTimeOverviewData; ... with vst_zeiterfassung do begin curNode := GetFirst; for i := 0 to RootNodeCount - 1 do begin TimeOverviewDate := TOTimeOverviewData(vst_zeiterfassung.GetNodeData(curNode)^); // Hier müßte jetzt irgendwie die Abfrage kommen, ob der Zelleninhalt (=Schriftfarbe) Rot oder Grün ist. Aber wie??? curNode := GetNext(curNode); end; end; Gruß, Sven |
Re: VirtualStringTree - Schriftfarbe der jeweiligen Zelle?
Hi!
Ich behaupte jetzt mal ganz frech, das dein Ansatz verkehrtherum ist. Normalerweise geben die Daten vor, wie die Schriftfarbe ist. D.h. irgendwas in dem jeweiligen TOTimeOverviewData-Objekt sagt: zeig mich rot bzw. grün an. Das würde man dann beim OnBeforeCellDraw (so in etwa) auswerten und die Farbe entsprechend setzen. Das würde für dich bedeuten, das du die Auswertung nicht nach der Farbe der Zelle machst, sondern nach dem Inhalt der Daten. Das wäre imho eine saubere Lösung. |
Re: VirtualStringTree - Schriftfarbe der jeweiligen Zelle?
Ich würde auch sagen, dass man das so sowieso nicht erreichen kann. Das Zeichnen der Zellen passiert ja OnTheFly. D.h. die Schriftfarbe und so weiter wird nicht komplett in allen Nodes hinterlegt sondern direkt vorm Zeichnen festgelegt und ggf. mit OnBeforePaint usw. angepasst. Die Infos musst Du Dir also aus den Daten holen.
Die Schleife wäre so besser:
Delphi-Quellcode:
with vst_zeiterfassung do
begin curNode := GetFirst; while CurNode <> nil do begin TimeOverviewDate := TOTimeOverviewData(vst_zeiterfassung.GetNodeData(curNode)^); if TimeOverviewDate.IsRot then ... curNode := GetNext(curNode); end; end; |
Re: VirtualStringTree - Schriftfarbe der jeweiligen Zelle?
Danke,
aber das passt nicht ganz vom Ablauf mit meinem Programm. Die Daten sind im VST und erst nach betätigen eines Button werden die Daten berechnet. So zu sagen eine Liste mit Zeiten (Rot = Minus und Grüm = Plus). Am Ende soll dann die Gesamtsumme kommen. Das muss doch irgndwie möglich sein. :-) |
Re: VirtualStringTree - Schriftfarbe der jeweiligen Zelle?
Na dann musst Du Dein Record um die entsprechende Eigenschaft erweitern. Wenn Du den Knoten mit den Daten hinzufügst, wirst Du doch wissen, ob + oder -. bzw. beim Ändern auch.
|
Re: VirtualStringTree - Schriftfarbe der jeweiligen Zelle?
Danke für eure Ideen.
Ich habe mir in mein Record ein property gemacht, welches den erforderlichen Wert aufnimmt. Jetzt klappt alles bestens. Schönen Tag noch. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:03 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