AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls VirtualStringTree Invalidate ruft intern nicht MeasureItem auf
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualStringTree Invalidate ruft intern nicht MeasureItem auf

Ein Thema von Bünni · begonnen am 8. Apr 2019 · letzter Beitrag vom 9. Apr 2019
Antwort Antwort
Bünni

Registriert seit: 4. Mär 2019
67 Beiträge
 
#1

VirtualStringTree Invalidate ruft intern nicht MeasureItem auf

  Alt 8. Apr 2019, 20:42
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?
  Mit Zitat antworten Zitat
Aviator

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

AW: VirtualStringTree Invalidate ruft intern nicht MeasureItem auf

  Alt 8. Apr 2019, 22:49
Du könntest ResetNode() aufrufen. Das setzt den Status der Node zurück. Das bewirkt eben das, wie du schreibst, alle Events gefeuert werden.
  Mit Zitat antworten Zitat
Bünni

Registriert seit: 4. Mär 2019
67 Beiträge
 
#3

AW: VirtualStringTree Invalidate ruft intern nicht MeasureItem auf

  Alt 8. Apr 2019, 22:51
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.
  Mit Zitat antworten Zitat
Aviator

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

AW: VirtualStringTree Invalidate ruft intern nicht MeasureItem auf

  Alt 8. Apr 2019, 22:54
Wenn du die Node nur neu zeichnen willst, dann rufe InvalidateNode() 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. ResetNode() 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.

Aber probier es doch einfach mal in einem Testprojekt aus. Fang mit InvalidateNode() an. Das ist in 99% der Fälle ausreichend.
  Mit Zitat antworten Zitat
Bünni

Registriert seit: 4. Mär 2019
67 Beiträge
 
#5

AW: VirtualStringTree Invalidate ruft intern nicht MeasureItem auf

  Alt 8. Apr 2019, 23:01
Habe eben schon mit Erfolg getestet. Ich bin irgendwie erstaunt, dass Invalidate MeasureItem nicht feuert, InvalidateNode aber schon.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: VirtualStringTree Invalidate ruft intern nicht MeasureItem auf

  Alt 9. Apr 2019, 07:11
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.
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 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