AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TVirtualStringTree Nodes klappen nicht auf/ zu

Ein Thema von Aromanaut · begonnen am 10. Aug 2022 · letzter Beitrag vom 11. Aug 2022
Antwort Antwort
Aromanaut

Registriert seit: 22. Mär 2019
15 Beiträge
 
Delphi 10.3 Rio
 
#1

TVirtualStringTree Nodes klappen nicht auf/ zu

  Alt 10. Aug 2022, 14:38
Hallo!

Ich habe einen TVirtualStringTree mit Header und 4 Spalten.
Die Daten werden alle ordentlich dargestellt.
Wenn ich dann aber auf das + bzw. - vor dem Node klicke und ihn zuklappen möchte reagiert es erst wenn ich mit der Maus über den Header fahre.
Würde man das nicht tun, würde auch der Node nicht auf- bzw. zuklappen.
Es zeigt sich auch nur beim Bewegen der Maus über den Header und nicht über die Fensterseiten oder über den unteren Fensterrand.
Kann mir bitte jemand helfen, ich weiß nicht weiter.

Danke euch wie verrückt!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.133 Beiträge
 
Delphi 12 Athens
 
#2

AW: TVirtualStringTree Nodes klappen nicht auf/ zu

  Alt 10. Aug 2022, 15:13
Wirklich bloß beim Move über den Header
oder fehlt einfach nur ein Repaint?


Form.Repaint oder TreeView.Repaint
oder pack mal die Titelleiste an und schiebe kurz die Form aus bem Bildschirm und zurück.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (10. Aug 2022 um 16:05 Uhr)
  Mit Zitat antworten Zitat
Aromanaut

Registriert seit: 22. Mär 2019
15 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: TVirtualStringTree Nodes klappen nicht auf/ zu

  Alt 10. Aug 2022, 15:21
Danke für die schnelle Antwort.
Ja, wenn ich ein Node anklicke, dann mit der Maus über den linken Rand raus auf die Titelleiste gehe und das Fenster über den Bildschirm rausziehe,
macht er ein Vollbild und auch den angeklickten Node auf.
Was heißt das für mich jetzt genau?

Edit: Habe im GetText noch nen tv.repaint angehängt und jetzt läuft es.

Danke vielmals!

Geändert von Aromanaut (10. Aug 2022 um 15:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.133 Beiträge
 
Delphi 12 Athens
 
#4

AW: TVirtualStringTree Nodes klappen nicht auf/ zu

  Alt 10. Aug 2022, 16:07
GetText ... ich fürchte da könnte es etwas zu oft passieren, bzw. eventuell sogar in einer Endloschleife landen.


Gibt es keine Events über Expand/Collapse?


[edit]
Jupp, "eigentlich" sollte es sich von alleine aktualisieren.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (10. Aug 2022 um 17:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.006 Beiträge
 
Delphi 12 Athens
 
#5

AW: TVirtualStringTree Nodes klappen nicht auf/ zu

  Alt 10. Aug 2022, 16:51
Habe im GetText noch nen tv.repaint angehängt und jetzt läuft es.
Also, ich würde ja lieber klären, warum das gerade in deinem Fall nicht von alleine läuft, wie vermutlich bei einer deutlichen Mehrheit hier.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Aromanaut

Registriert seit: 22. Mär 2019
15 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: TVirtualStringTree Nodes klappen nicht auf/ zu

  Alt 10. Aug 2022, 21:33
Ja, ich habe bei den Beispielen die ich mir angeschaut habe auch nirgends ein repaint gesehen.
In dem Tutorial vom VirtualTreeView
https://www.delphi-treff.de/tutorial...ualtreeview/5/
habe ich auch keine Hinweis darauf gesehen.
Und nein, ich habe keine weiteren Events implementiert. Ich bin noch relativ am Anfang und war davon ausgegangen, dass diese Art Funktionalität (Auf- und Zuklappen der Nodes)
irgendwie eine Grundfunktion ist, die das VirtualTreeView allein mitbringt.
Woran könnte es denn noch liegen?

[Edit]
Mein Kollege hat die Lösung gefunden. Es liegt an den BeginUpdate und Endupdate Funktionen. Ich hatte versehentlich die Die EndUpdate Funktion nicht in der selben Schleife wie die BeginUpdate und damit mehr BeginUpdate ausgeführt als EndUpdate. Sowohl BeginUpdate als auch EndUpdate haben intern einen Zähler, der mitzählt, wie oft die jeweilige Funktion aufgerufen wird. Nur wenn der Zähler bei 0 im EndUpdate angekommen ist, wird der UpdateModus tatsächlich beendet.

Geändert von Aromanaut (11. Aug 2022 um 10:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi
Online

Registriert seit: 17. Jul 2005
847 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: TVirtualStringTree Nodes klappen nicht auf/ zu

  Alt 11. Aug 2022, 08:17
Normalerweise ist das auch eine Standard-Funktionalität von dem VST. Ich nutze den VST selber auch sehr gerne - allerdings entweder als Baumstruktur (mit den [+] / [-] zum Ein- und Ausklappen) oder als Grid mit mehreren Spalten. In der Kombination bisher nicht.

Kann sein, dass du da noch in den (sehr umfangreichen) Optionen des VST rumspielen musst. Vielleicht toGridExtensions in den MiscOptions oder so?

Ansonsten ist das Tutorial ja etwas in die Jahre gekommen. Diese Record-Typen PTreeData und TTreeData braucht man ja gar nicht mehr. Mit Generics kann man die eigenen Objekte direkt reinhängen

Delphi-Quellcode:
// einfügen
newNode := VST.AddChild(Nil, myData); // ggf. anderen Node statt NIL als ersten Parameter

// Zugriff, z.B. bei OnGetText
myData := VST.GetNodeData<TMyData>(Node);
Das macht die Verwendung deutlich einfacher.
The angels have the phone box.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: TVirtualStringTree Nodes klappen nicht auf/ zu

  Alt 11. Aug 2022, 21:39
Wird mal das Repaint() im GetText Event wieder raus und beobachte mal die CPU Auslastung deines Programms. Ich könnte wetten, dass die höher als die üblichen 0-2% ist. Das wäre dann ein Zeichen dafür, dass der Tree immer wieder in einer Endlosschleife malt was hier auch schon erwähnt wurde. In dem Fall würde ich dann einfach mal nacheinander die Events abkoppeln oder einfach alle abkoppeln und nacheinander wieder einschalten.
  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 12:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz