Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Virtual Treeview und Datenbank (https://www.delphipraxis.net/45428-virtual-treeview-und-datenbank.html)

Frank99 6. Mai 2005 08:22


Virtual Treeview und Datenbank
 
Ich habe folgendes Problem mit der Virtual Treeview Komponente von
Mike Lischke:

Ich mochte einen Baum aufbauen, dessen Daten aus einer Datenbank kommen,
die folgenden Aufbau hat:

Ich habe eine Tabelle Gebäude mit Gebäudedaten
Weiterhin habe ich eine Tabelle mit Raumdaten die einen Frendschlüssel auf die
Gebäudedaten hat.

Der Baum soll jetzt so aussehen

Infrastruktur <- nur ein Titel auf Level 0
+ Gebäude 1 <- Gebäudedaten auf Level 1
- Raum <- zugehörige Raumdaten in Abhängigkeit vom Gebäude
- Raum
+ Gebäude 2

Ich habe mich schon überall umgesehen, aber ich komme mit den bisherigen Informationen
nicht wirklich weiter.

Wer kann helfen ?

Igotcha 6. Mai 2005 08:48

Re: Virtual Treeview und Datenbank
 
Zitat:

Zitat von Frank99
Der Baum soll jetzt so aussehen

Infrastruktur <- nur ein Titel auf Level 0
+ Gebäude 1 <- Gebäudedaten auf Level 1
- Raum <- zugehörige Raumdaten in Abhängigkeit vom Gebäude
- Raum
+ Gebäude 2

Wenn ich das richtig interpretiere, dann hast Du neben dem technischen Problem auch ein Designproblem, denn Du mußt eines bedenken: Du hast 2 verschiedene Informationen, die Du darstellen möchtest (eigentlich 3), aber Du hast in dem Treeview immer nur die gleichen Spalten (und damit auch Bezeichner).

Ich denke, dass sich die Informationen von "Gebäude" von denen eines "Raums" unterscheiden - wie willst Du diese darstellen?

Beispiel des Treeviews:
Delphi-Quellcode:
Name             Strasse             Eigentümer    Raumnr
============================================================
Infrastruktur 1
Gebäude 1         Gebäudestrasse 1     Eigentümer 1   ???
+- Raum1          ????                 ?????          100
Verstehst Du, was ich meine?

Gruß Igotcha

Frank99 6. Mai 2005 09:00

Re: Virtual Treeview und Datenbank
 
Soweit mir bekannt ist, kann ich zu jedem Node eine Datenstruktur ablegen.
Die Definition der Dataenstuktuen lautet wie folgt:

PGeb = ^TGeb;
TTGeb = packed record
Geb_id : integer;
Geb_bez : string[80];
end;

PRaum = ^TRaum;
TRaum = packed record
Raum_ID : integer;
Geb_ID : integer;
Raum_Bez : string[40];
Groesse : integer;
end;

Ich möchte also, sobald ich den Rooteintrag öffne die Daten aus
der Tabelle "Gebäude anzeigen".
Wenn ich dann den entsprechenden Knoten Gebäude öffne, sollen alle Daten
aus der gefilterten Tabelle Raum angezeigt werden, wobei die Informationen, die
angezeigt werden nur die Bezeichnungen sind.

Generalissimo 6. Mai 2005 10:26

Re: Virtual Treeview und Datenbank
 
Welche Datenbank nutz du? Vielleicht kann man das abarbeiten auf die DB abschieben.

Igotcha 6. Mai 2005 10:48

Re: Virtual Treeview und Datenbank
 
Zitat:

Zitat von Frank99
Soweit mir bekannt ist, kann ich zu jedem Node eine Datenstruktur ablegen.
Die Definition der Dataenstuktuen lautet wie folgt:

PGeb = ^TGeb;
TTGeb = packed record
Geb_id : integer;
Geb_bez : string[80];
end;

PRaum = ^TRaum;
TRaum = packed record
Raum_ID : integer;
Geb_ID : integer;
Raum_Bez : string[40];
Groesse : integer;
end;

Du kannst in einem Knoten ablegen, was Du möchstest, aber Du möchtest es doch auch anzeigen lassen. Das toll am VTV ist ja, dass er die Mögklichkeiten eines Treeviews und einer Tabelle vereint, nur möchtest Du offensichtlich völlig evrschiedene Dateninhalte in einer Sicht anzeigen lassen. Wie soll dann Deine angezeigte "Tabelle" aussehen? Und ich meine tatsächlich mit "aussehen" genau das, was man sehen soll...

Wenn man mal die Baumstruktur einen Moment außen vor läßt, bleibt die reine Tabellensicht übrig. Jetzt schau Dir mal Deine Datenstrukturen an. Wie möchtest Du diese denn in einer Tabelle darstellen?

Wenn überhaupt, dann geht das nur so, sieht aber optisch schlecht aus:

Delphi-Quellcode:
Name      GEB_ID  GEB_BEZ  RAUM_ID  GEB_ID  RAUM_BEZ   GROESSE
====================================================================
Gebäude       1    Geb1      NULL     NULL    NULL       NULL
+-Raum      NULL  NULL        100       1     Raum1       100
Da wo ich "NULL" hingeschrieben habe, hast Du für einen Eintrag keine Werte und die Darstellung ist somit einfach unübersichtlich und eigentlich nicht das, wofür der VTV gedacht ist.

Schau Dir mal das hier an: Das ist ein Screenshot von einem Programm von mir und da siehst Du, dass in der "Tabelle" grundsätzlich die gleichen Daten verwendet werden, eben nur hierarchisch dargestellt http://www.delphipraxis.net/download.php?id=7436

Gruß Igotcha

Frank99 6. Mai 2005 11:07

Re: Virtual Treeview und Datenbank
 
Also noch mal zum Verständnis.


Die Virtual Treeview als Baumdarstellung soll nur eine hierachische Sicht auf die Datenbank geben und damit sozusagen als Navigation durch die unterschiedlichen
Tabellen dienen.

In einer zweiten Virtual Treeview möchte ich dann die Detailinformationen anzeigen,
ähnlich dem Windows Explorer bzw auf Mausckick öffnet sich ein neues Fenster mit
den entsprechenden Detailinformationen.

Die Baumstruktur soll nicht als Kombination von Baum- und Listansicht dienen.

Ich hoffe ich konnte mein Problem deutlich genug formulieren.

Ich arbeite mit D7 Pro und Firebird 1.5.


Gruß

Frank

ratloser 8. Mai 2005 21:40

Re: Virtual Treeview und Datenbank
 
Schau mal da nach!

VirtualstringTree

Sollte alles für Dich dabei sein.

Gruss Ratloser

waldforest 12. Jun 2005 11:03

Re: Virtual Treeview und Datenbank
 
Hallo,
hatte die gleiche Herausforderung.
Schau mal meine Lösung an (bin Delphi-Anfänger, geht bestimmt noch eleganter), funktioniert bei mir Tadellose.

http://www.delphipraxis.net/internal...9cc9d26c8d8f51

Tom


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:54 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