AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Daten-Rekord zu TreeView hinzufügen - Problem/AV
Thema durchsuchen
Ansicht
Themen-Optionen

Daten-Rekord zu TreeView hinzufügen - Problem/AV

Ein Thema von Jim Carrey · begonnen am 2. Nov 2016 · letzter Beitrag vom 3. Nov 2016
Antwort Antwort
Aviator

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

AW: Daten-Rekord zu TreeView hinzufügen - Problem/AV

  Alt 2. Nov 2016, 23:13
Hallo Jim,

anbei mal ein kleines Demo Projekt. Ich hoffe es wird deutlich, wie der Tree funktioniert. Das Beispiel habe ich jetzt direkt mit den Events OnInitNode() und OnInitChildren() gemacht, da du das ja in deinem Beispiel auch angedeutet hattest. Das ist sowieso der bessere Weg.

Ich habe jetzt keine Speichern Procedure geschrieben, sondern lediglich eine kleine Procedure, die durch den Tree läuft und alle Nodes in einem Memo zusammenfasst. Das kann teilweise auch etwas dauern. Deshalb solltest du auch später deine Speicher Methode in einen Thread auslagern damit das Programm nicht hängen bleibt. Aber das war mir jetzt zu viel Arbeit und darum ging es ja auch nicht.

Ich wollte nur andeuten, wie man durch den VST iteriert. Beim Speichern der Daten würde ich sowieso nur durch die ObjectList laufen und mir dort entsprechend die Daten zusammensuchen.

Wenn noch etwas unklar sein sollte, dann kannst du dich ja nochmal melden.
Angehängte Dateien
Dateityp: zip VirtualStringTree Sample.zip (1,46 MB, 13x aufgerufen)
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#2

AW: Daten-Rekord zu TreeView hinzufügen - Problem/AV

  Alt 3. Nov 2016, 10:13
Danke ersteinmal für dieses Beispiel.

Ich finde es super kompliziert muss ich sagen. Was man alles schreiben muss, um das mit dem VirtualStringTree anzeigen zu lassen, ist extrem.

Nur zum Vergleich wie es mit dem TTreeView ist:
Delphi-Quellcode:
// Button
var
 aNode: TTreeNode;
begin
 aNode := TreeView1.Items.Add(nil, 'Test 1');
 TreeView1.Items.AddChild(aNode, 'Test 1.1');
 TreeView1.Items.AddChild(aNode, 'Test 1.2');

 aNode := TreeView1.Items.Add(nil, 'Test 2');
 TreeView1.Items.AddChild(aNode, 'Test 2.1');
 TreeView1.Items.AddChild(aNode, 'Test 2.2');
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Daten-Rekord zu TreeView hinzufügen - Problem/AV

  Alt 3. Nov 2016, 10:28
Der Unterschied ist, daß hier keine Trennung von Daten und Oberfläche passiert, weil die Daten direkt im Control gehalten werden. Im Laufe der Zeit wirst Du merken, daß das nicht optimal ist.
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#4

AW: Daten-Rekord zu TreeView hinzufügen - Problem/AV

  Alt 3. Nov 2016, 11:44
Dass das VST Daten und Control trennt, weiß ich sehr zu schätzen.
Nur frage ich mich, ob das wirklich Sinn macht bei einem Control, das maximal 10 Nodes hat.
  Mit Zitat antworten Zitat
Headbucket

Registriert seit: 12. Dez 2013
Ort: Dresden
172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Daten-Rekord zu TreeView hinzufügen - Problem/AV

  Alt 3. Nov 2016, 11:49
Du kannst deine Daten auch sehr schön bei jedem anderen Control von der Oberfläche trennen. Nimm einen normalen TreeView, wenn du weißt, dass es um wenige Daten geht und du damit besser zurecht kommst.

Daten sollten aber prinzipiell nie in den Controls gespeichert werden.

Falls du übrigens in deinem VirtualTreeView nur eine Spalte hast, dann kann man auch sehr schön mit einer normalen TStringList als Datenspeicher arbeiten und umgeht diese ganze Record-Pointer-Geschichte.

Grüße
Headbucket
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#6

AW: Daten-Rekord zu TreeView hinzufügen - Problem/AV

  Alt 3. Nov 2016, 11:51
Falls du übrigens in deinem VirtualTreeView nur eine Spalte hast, dann kann man auch sehr schön mit einer normalen TStringList als Datenspeicher arbeiten und umgeht diese ganze Record-Pointer-Geschichte.
Es wäre gelogen wenn ich jetzt sagen würde, dass ich das schon wusste
Ich wusste es natürlich nicht.
  Mit Zitat antworten Zitat
Aviator

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

AW: Daten-Rekord zu TreeView hinzufügen - Problem/AV

  Alt 3. Nov 2016, 10:47
Ich finde es super kompliziert muss ich sagen. Was man alles schreiben muss, um das mit dem VirtualStringTree anzeigen zu lassen, ist extrem.
Naja. Kompliziert ist relativ. Das Beispiel habe ich jetzt (ohne angeben zu wollen) gestern abend schnell runtergetippt, compiliert und es hat funktioniert. Irgendwann hat man die Routine sowas zu schreiben und dann geht das recht einfach von der Hand.

Und die Vorteile die man durch das Control hat sind eben enorm. Und dann kommt noch einer der Hauptaspekte hinzu welcher bereits von Connor beschrieben wurde.

Und zur Not kannst du dir ja auch noch eine kleine Wrapper Klasse schreiben, welche dir die verschiedenen Aufgaben etwas erleichtern kann. Aber um die Implementierung der einzelnen Events kommst du nicht rum. Das schöne an dem Control ist ja auch, dass man fast jeden Prozess irgendwie noch unterbinden/manipulieren/prüfen kann bevor er ausgeführt wird.

Ach ja: Wenn es wirklich so viele Daten sind wie in meinem Beispiel, dann wirst du beim Speichern mit einem normalen TreeView nicht glücklich. Da hängt sich deine Anwendung dann regelmäßig auf wenn du nicht mit Application.ProcessMessages um dich wirfst. Wenn die Daten vom Control allerdings getrennt sind (wie das beim VST der Fall ist), dann kannst du die Speicherroutine, wie in meinem vorherigen Post bereits beschrieben, in einem Thread auslagern und die GUI bekommt dann davon nix mit.

Also auch wieder ein Vorteil.

PS: Schau dir auch mal die Advanced Demo an die beim VST mitkommt. Die ist zwar nicht in allen Fällen optimal und auch für einen Anfänger bzw. jmd. der noch nicht so viel mit einem VST gearbeitet hat etwas schwierig zu verstehen, aber an manchen Stellen findet man dann doch ein paar schöne Features.
  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 00: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-2025 by Thomas Breitkreuz