AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

VirtualTreeView und Sortieren

Ein Thema von TurboMagic · begonnen am 28. Apr 2021 · letzter Beitrag vom 6. Mai 2021
Antwort Antwort
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.074 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: VirtualTreeView und Sortieren

  Alt 5. Mai 2021, 13:31
Du kannst auch mit Objekten und zwei Listen arbeiten.
Dann solltest Du aber statt mit Objekten mit Interfaces arbeiten ... damit gibt es weniger Speicherprobleme.
Wie Himi sagt:
Eine TObjectList<T>.Create(True) und eine andere TObjectList<T>.Create(False) (oder gleich TList<T>) und schon ist der Lachs gegessen.
Interfaces kann man machen, ist aber nicht notwendig für reine Datenobjekte zur Anzeige in der (Virtual)Treeview.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.436 Beiträge
 
Delphi 12 Athens
 
#2

AW: VirtualTreeView und Sortieren

  Alt 5. Mai 2021, 13:40
Zitat:
Eine TObjectList<T>.Create(True) und eine andere TObjectList<T>.Create(False) (oder gleich TList<T>) und schon ist der Lachs gegessen.
...der ist aber verbrannt.

Zitat:
Beim Erstellen der Node wird als NodeData einfach der Pointer auf das Objekt oder auf den Index in der TObjectList<T> an die Node übergeben. Somit ändert sich beim Sortieren für deine Daten gar nichts.
+1

Die Darstellung sollte nicht den Inhalt der Datenhaltung beeinflussen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: VirtualTreeView und Sortieren

  Alt 5. Mai 2021, 13:55
In NodeData kann man auch den Index oder eine ID speichern, um für die Anzeige die Daten aus der Liste (nicht direkt aus dem Objektzeiger) zu holen.

Es kommt aber immer auf die Umstände drauf an.

* Index ist blöd, wenn die Liste sich ändern kann (mittendrin ... am Ende Neues hinzu ist egal, da die anderen Indize sich nicht ändern)

* ID geht eigentlich immer (die ID ist natürlich mit den Daten und nicht dem Objekt verknüpft, falls Dieses sich mal ändern kann, siehe nachfolgend)

* ein Objektzeiger direkt speichern kann auch manchmal nachteilig sein
* * wenn z.B. die Liste bei Änderung ein neues Objekt erstellt und jenes in der Liste austauscht
* * hier würde ID und vielleicht Index noch passen, aber der Zeiger aufs "alte" Objekt wäre nun ungültig
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.045 Beiträge
 
Delphi 12 Athens
 
#4

AW: VirtualTreeView und Sortieren

  Alt 6. Mai 2021, 07:18
Hallo,

hier noch eine umsetzungstechnische Frage, da ich eh' noch nicht zur Umsetzung gekommen bin.
Angenommen ich würde die Lösung nutzen wollen, bei der im NodeData der Index meines anzuzeigenden
Listeneintrags steht, wie/wann bekomme ich das rein?

1. Ich lade meine Daten in meine Liste
2. Ich setze den RootNodeCount des VST auf Liste.Count
3. Bisher hab' ich im GetNodeText über den Knotenindex den Listeneintrag geholt.
Das wäre ja umzustellen. Nur wann schreibt man den Index in NodeData?
Da gibt's glaube ich im VST ein initialisierungs Event?
4. Nur: dieses Event wird wohl für jeden Knoten dann aufgerufen, wenn er das erste mal anzuzeigen
ist. Oder? Falls ja, was ist, wenn jemand noch nicht bis zum Listenende gescrollt hatte aber
schon das Sortieren auslöst?
5. Füge ich später Daten zur Liste hinzu (am Ende) kann ich in diesem initialisierungsevent einfach
wieder über den VST Node.Index das NodeData initialisieren, oder?
6. Problematisch kann es werden, wenn jemand Listeneinträge löscht. Dann müsste ich durch alle
VST Knoten durch und ab dem Index des gelöschten alle Indizes um 1 erniedrigen. Da Multiselekt
möglich ist, wird's noch etwas schwieriger...

Grüße
TurboMagic
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.074 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: VirtualTreeView und Sortieren

  Alt 6. Mai 2021, 10:25
Probiere meinen Vorschlag, dann hast du keinen Trouble und wirst heute noch fertig.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:31 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