![]() |
VirtualStringTree Invalidate ruft intern nicht MeasureItem auf
Ich stehe gerade vor dem Problem, dass VST.Invalidate wohl nicht intern MeasureItem eines Nodes aufruft.
Wie bringe ich einen Node dazu sich zwangs-neuzuzeichenen und alle Events zu feuern? |
AW: VirtualStringTree Invalidate ruft intern nicht MeasureItem auf
Du könntest
Delphi-Quellcode:
aufrufen. Das setzt den Status der Node zurück. Das bewirkt eben das, wie du schreibst, alle Events gefeuert werden.
ResetNode()
|
AW: VirtualStringTree Invalidate ruft intern nicht MeasureItem auf
Ist hier InvalidateNode oder ResetNode besser? ResetNode ruft intern auch InvalidateNode auf. Aber ResetNode macht noch andere Dinge die mir nichts sagen. Children hat der Node nicht.
|
AW: VirtualStringTree Invalidate ruft intern nicht MeasureItem auf
Wenn du die Node nur neu zeichnen willst, dann rufe
Delphi-Quellcode:
auf. Ob dabei das gewünschte MeasureItem Event gefeuert wird kann ich dir gerade nicht 100%ig aus dem Kopf sagen. Aber ich sage mal ja, da dieses Event sonst keinen Sinn machen würde.
InvalidateNode()
Delphi-Quellcode:
setzt den kompletten Status der Node zurück. Also auch den Zustand, ob die Node ChildNodes hat, ob der Status auf Expanded gesetzt ist, usw.
ResetNode()
Aber probier es doch einfach mal in einem Testprojekt aus. Fang mit
Delphi-Quellcode:
an. Das ist in 99% der Fälle ausreichend. :)
InvalidateNode()
|
AW: VirtualStringTree Invalidate ruft intern nicht MeasureItem auf
Habe eben schon mit Erfolg getestet. Ich bin irgendwie erstaunt, dass Invalidate MeasureItem nicht feuert, InvalidateNode aber schon.
|
AW: VirtualStringTree Invalidate ruft intern nicht MeasureItem auf
Hallo,
es geht hier um Performance. Wenn man weiß, dass der Knoten nur neu gezeichnet werden soll (z.B. bei einer Farbänderung), brauch ich ja MeasureItem nicht. Man muss halt ausprobieren, was im konkreten Fall notwendig ist. |
AW: VirtualStringTree Invalidate ruft intern nicht MeasureItem auf
In diesem konkreten Fall wird die Höhe des Nodes geändert.
|
AW: VirtualStringTree Invalidate ruft intern nicht MeasureItem auf
Zitat:
Delphi-Quellcode:
aufrufen
InvalidateNode
|
AW: VirtualStringTree Invalidate ruft intern nicht MeasureItem auf
Gehe ich richtig in der Annahme, dass wenn ich mehrere Nodes lösche ich nur RootNodeCount neu setzen muss und kein Invalidate; benötige?
Einen oder mehrere Nodes löschen RootNodeCount; Einen Node bearbeiten InvalidateNode; |
AW: VirtualStringTree Invalidate ruft intern nicht MeasureItem auf
Vor dem Setzen von
Delphi-Quellcode:
sollte
RootNodeCount
Delphi-Quellcode:
ausgeführt werden. Ansonsten werden die Nodes u.U. nicht gelöscht.
VST.Clear()
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:00 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 by Thomas Breitkreuz