AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi JvDBTreeView von Jedi
Thema durchsuchen
Ansicht
Themen-Optionen

JvDBTreeView von Jedi

Ein Thema von Chaoten-Joe · begonnen am 6. Jul 2007 · letzter Beitrag vom 12. Jul 2007
Antwort Antwort
Chaoten-Joe

Registriert seit: 11. Mär 2007
Ort: Werl
41 Beiträge
 
Turbo Delphi für Win32
 
#1

JvDBTreeView von Jedi

  Alt 6. Jul 2007, 22:44
Datenbank: Paradox7 • Zugriff über: BDE
Hallo zusammen,

ich bastle jetzt schon eine Weile an der DBTreeview-Komponente ... allerdings ohne Erfolg. Es werdem mir ganz einfach keine Knoten (und entsprechenden Daten angezeigt. In einem alten DP-Thema habe ich gelesen, dass das Zusammenspiel von
- DetailField
- MasterField
- ItemField und
- StartMaster
wichtig ist. Aber in welcher Zusammensetzung?

Konkretes Beispiel: In einer Datenbank sind verschiedene Links zu Dateien auf der Festplatte gespeichert. Felder sind z.B. "Dateiname", "Dateityp" und "Kategorie". Die Komponente soll mir nun bspw. folgende Konstellation anzeigen:

- Kategorie 1
- Dateiname 1
- Dateiname 2
- ...
- Kategorie 2
- Dateiname 1
- Dateiname 2
- ...

"Nichts genaues weiß man nicht" bisher. Die Jedi-Hilfe und Jedi-Demos liefern keine Infos und auf Google ist überfragt (okay ... es gab Suchergebnisse in russischer Sprache ...) )

Wäre für einen Tipp sehr dankbar!

Nette Grüße
Christian
Christian Becker
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: JvDBTreeView von Jedi

  Alt 7. Jul 2007, 13:08
Hallo Christian,

die Komponente TJvDBTreeView dient der Darstellung einer rekursiven Beziehung (Stückliste, bill-of-material) in Form einer einzigen Tabelle. Solche Tabellen enthalten einen Fremdschlüssel, der auf einen anderen Record derselben Tabelle verweist. Deine Tabelle sieht mir nicht danach aus, deshalb würde ich eher eine gruppierte ListView, eine normale TreeView oder irgendein Grid verwenden.

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

Re: JvDBTreeView von Jedi

  Alt 8. Jul 2007, 22:10
Hallo...

ich hatte auch so meine Schwierigkeiten...

Im Ansatz ist das Tabellendesign wichtig !

Deine Tabelle müßte etwa so aussehen:

4 Felder ... Bezeichnung1 (Integer), Bezeichnung2 (Integer), Bezeichnung3 (String), Icon (Integer) wobei die Feldnamen frei wählbar sind aber so verstehst du die Zuordnung besser.

in Bezeichnung1 legt TreeView die "Gruppe" ab als Integer, Bezeichnung2 die "Untergruppe" ,in Bezeichnung3 den Text und in Icon den Index aus deiner ImageList (mußt du selbst ablegen !)

in Bezeichnung3 würden dann sowohl deine Knotenbezeichnungen als auch dein Link (Dateiname)als Text
stehen...

Dann die Master- Detail Zuordnungen
Delphi-Quellcode:
JvDBTreeview1.ItemField:= 'Bezeichnung3';
JvDBTreeview1.MasterField:= 'Bezeichnung1';
JvDBTreeview1.DetailField:= 'Bezeichnung2';
JvDBTreeView1.IconField:= 'Icon';
! folgende Routine muß vorhanden sein, damit TreeView neue Datensätze anlegen kann...

Delphi-Quellcode:
procedure TForm1.TabelleXNewRecord(DataSet: TDataSet);
begin
  TabelleX['Bezeichnung1'] := JvBDEUtils.GetQueryResult(TabelleX.DatabaseName,
     'select max(Bezeichnung1) from "TabelleX.DB" ') + 1;
end;
Bedienung über TastenCode:
neue 'Gruppe' -- INSERT
neue 'Untergruppe' ---ALT+INSERT
löschen --- CTRL+ENTF

ich habe mir dann virtuelle Tastendrücke auf Buttons gelegt....

Ich hoffe geholfen zu haben
  Mit Zitat antworten Zitat
Chaoten-Joe

Registriert seit: 11. Mär 2007
Ort: Werl
41 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: JvDBTreeView von Jedi

  Alt 9. Jul 2007, 23:23
Na das sieht doch schon mal nicht schlecht aus für den Anfang. Vielen vielen Dank !!!
Aber so ganz wie gewünscht funktioniert es dann doch noch nicht.
Denn leider baut dich das TreeView nicht "von allein auf". Bei jedem neu hinzugefügten Dokument wird bei Neuanlage die Kategorie "nicht definiert" hinterlegt. Der Benutzer muss es dann einer Kategorie zuordnen (in einer Combobox werden die bisher bekannten Kategorie via SQL bereitgestellt).

Aber das Treeview bleibt leer. Ich muss alle Kategorien "per Hand" via Taste INSERT anlegen. Dat muss doch irgendwie allein funktionieren wie beim DBGrid.
Und wenn ich neue Dokumente hinzufüge ändert sich im Treeview immer der Eintrag des Hauptknotens ... sehr mysteriös.

Normalerweise müssten beim Start alle Datensätze (Dokumente) im Treeview angezeigt werden:
Hauptknoten: Bsp. Kategorie 1
- Unterknoten: Datei 1
- Unterknoten: Datei 2
Hauptknoten: Bsp. Kategorie 2
- Unterknoten: Datei 3
- Unterknoten: Datei 4

Die Änderung eines Knotens (Bsp. Änderung der Kategorie oder des Dateinamens) müsste ich dann ja wieder einfach via SQL hinbekommen. .... Und hoffentlich übernimmt das Treeview das dann auch ...

Also: Wie kann ich das Treeview "etwas integllligenter" machen ... außer Datenbank mit SQL durchzuforsten und dann das Treeview zu füllen? Oder geht dat nur so "zu Fuß"???

Viele Grüße
Christian
Christian Becker
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

Re: JvDBTreeView von Jedi

  Alt 10. Jul 2007, 09:38
Hallo...

das Eintragen der Knoten in die Datenbank funktioniert nur über die eingebauten INSERT Funktionen automatisch.

Wenn du dir die Datenbank anschaust siehst du, wie die Knoten abgelegt werden.

wenn ein Benutzer einen Datensatz hinzufügt ( von extern ) sollten die Knotenpunkte( sprich Positionen )
mit in die Datenbank eingetragen werden. Das läßt sich eigentlich nicht schwer realisieren...

Viel Spaß...
  Mit Zitat antworten Zitat
Chaoten-Joe

Registriert seit: 11. Mär 2007
Ort: Werl
41 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: JvDBTreeView von Jedi

  Alt 11. Jul 2007, 23:33
Puuh! Unser Kleiner hält uns auf Trab! Wir haben vor 4 Wochen Nachwuchs bekommen. Daher eine kleine Spätschicht ...

Danke nochmals für die guten Antworten! Ohne diese wäre ich gar nicht so weit gekommen!

Eine kleine Unklarheit besteht aber noch:
Wenn ich zu einem Hauptknoten einen Unterknoten anlege, wird dieser einwandfrei angezeigt ... allerdings nicht beim nächsten Start des Programms. Der Grund: Bei Bezeichnung1 und Bezeichnung2 (also den beiden Integer-Werten) wird keine Nummer gespeichert. Nun habe ich schon etwas experimentiert und habe beide Felder mit Nummern belegt ... Ohne Erfolg. Die gewünschte Baumstruktur wird nicht dargestellt. Benötige ich doch zwei separate Datenbanken?

Diese Komponente hat es aber echt in sich! Ich programmier' ja nun schon ne Weile ... aber sowas ...

Aller guten Dinge sind Drei.
Vielleicht kommt ja gleich die Erleuchtung ...

Lieben Dank für die Hilfe
Christian
Christian Becker
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

Re: JvDBTreeView von Jedi

  Alt 12. Jul 2007, 07:26
Neeee.... steht alles in einer..

Guten Morgen... Glückwunsch nachträglich


wenn ich dich richtig verstehe hast du die Positionen manuell eingetragen.

Bezeichnung1 ist im Prinzip nur eine fortlaufende Nummer.
Bezeichnung2 bestimmt welcher Bezeichnung1 der Text untergeordnet ist.

wie speicherst du manuell ? Tabelle Post vergessen ?

PS: ich habe mir teilweise meine Tabelle mit einem Datenbank Editor verändert
( Positionen, Ergänzungen ) und keinerlei Probleme...
  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 09:59 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