AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Nodes von Datenbank in TreeView einlesen
Thema durchsuchen
Ansicht
Themen-Optionen

Nodes von Datenbank in TreeView einlesen

Offene Frage von "fruity"
Ein Thema von fruity · begonnen am 10. Aug 2005 · letzter Beitrag vom 10. Aug 2005
Antwort Antwort
Benutzerbild von fruity
fruity

Registriert seit: 2. Apr 2005
Ort: Bregenz
24 Beiträge
 
#1

Nodes von Datenbank in TreeView einlesen

  Alt 10. Aug 2005, 08:55
Datenbank: SQL • Zugriff über: ADO
Morgen,

Der Tag ist noch so jung und schon hab ich mein erstes Problem.

Ich hab in einer Datenbank Daten wie zB. C, C++, Delphi zugewiesen. Ebenfalls hab ich noch Daten wie Grafik, System, etc. Diese werden anhand einer ParentID der Programmiersprache zugewiesen.

Jetzt moechte ich das ganze in einem TreeView ausgeben.

Dazu habe ich schon mal die Procedure welche mir den TreeView erstellt. Nur leider eben nur die HauptKnoten und keine Unterknoten. Diese werden einfach nur an den Treeview rangehaengt. Ich moechte aber, dass sie gleich der richtigen Node zugeordnet werden.

Hab schon Tante Google und die Suchfunktion des Forums danach gefragt nur leider kein passendes Thema dazugefunden.


Danke schonmal fuer eure Hilfe . . .
Rechtßreibvehler sind geistiegeß Eigentumm dess Autorren !!!
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#2

Re: Nodes von Datenbank in TreeView einlesen

  Alt 10. Aug 2005, 09:19
So geht das nicht.
Mit den Eckdaten können wir nen Rätselstündchen machen, aber nicht effektiv helfen ...

- Wie liegen die Daten in der DB vor (Tabellenstruktur) ?
- Wie und womit rufst du die Daten aus der DB ab (ggf. Feld-Struktur des Result-Datasets) ?
- Wie liest du derzeit die abgerufenen Daten in den Treeview ein (Codesnipsel)?

Gib uns mal Input dann finden wir auch eine Lösung


Schöne Grüße,
Jens
  Mit Zitat antworten Zitat
Benutzerbild von fruity
fruity

Registriert seit: 2. Apr 2005
Ort: Bregenz
24 Beiträge
 
#3

Re: Nodes von Datenbank in TreeView einlesen

  Alt 10. Aug 2005, 09:30
Hallo Jens,

Ich als, noch Gruenling, wusste nicht was ich euch alles an Daten geben soll.
Danke schonmal fuer deine schnelle Hilfe

1.) Struktur:
Code:
 
ID  ParentID  Bezeichnung
1       -1         C
2       -1         C++
3       -1         Delphi
4        1         Grafik
5        1         System
6        2         Grafik
7        2         System
8        3         Grafik
9        3         System
10       1         Drucken
[Edit] Dies kann ueber mehrere Ebenen gehen und bekommt den bezug zur "ueber" Ebene durch die ParentID [/Edit]

2.) Aufgerufen werden die Daten ueber ein ADOQuery

3.)

Delphi-Quellcode:
procedure TFmHaupt.FillTreeView(TheView: TTreeView; TheData: TDataSet);

procedure MoveToParentNode(TheNode: TTreeNode);
    var x : Integer;
    begin
      for x := 0 to TreeView1.Items.Count-1 do begin
        if Assigned(TreeView1.Items[x].Data) then begin
          if PView(TreeView1.Items[x].Data).ID = PView(TheNode.Data).ParentID then begin
            TheNode.MoveTo(TreeView1.Items[x], naAddChild);
            Break;
          end;
        end;
      end;
    end;

var Root,AktNode : TTreeNode;
  i : Integer;
begin
  DMHaupt.QHauptTreeView.First;
  Root := TTreeNode.Create(TreeView1.Items);
  Root.Text := 'Demo';
  Root.Data := nil;

  for i := 0 to DMHaupt.QHauptTreeView.RecordCount -1 do
    begin
      AktNode := TTreeNode.Create(TreeView1.Items);
      AktNode.Data := new(PView);
      PView(AktNode.Data).ID := DMHaupt.QHauptTreeView.FieldByName('ID').AsInteger;
      PView(AktNode.Data).ParentID := DMHaupt.QHauptTreeView.FieldByName('ParentID').AsInteger;
      PView(AktNode.Data).Bezeichnung := DMHaupt.QHauptTreeView.FieldByName('Bezeichnung').AsString;
      DMHaupt.QHauptTreeView.Next;

      TreeView1.Items.Add(AktNode, PView(AktNode.Data).Bezeichnung);
    end;

  for i := 0 to TreeView1.Items.Count -1 do begin
    if Assigned(TreeView1.Items[i].Data) then begin
      if PView(TreeView1.Items[i].Data).ParentID <> 0 then MoveToParentNode(TreeView1.Items[i]);
    end;
  end;
end;
Rechtßreibvehler sind geistiegeß Eigentumm dess Autorren !!!
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#4

Re: Nodes von Datenbank in TreeView einlesen

  Alt 10. Aug 2005, 10:21
Fertig ...

Delphi-Quellcode:
  
While NOT DMHaupt.QHauptTreeView.eof do // << ist schöner :-)
    begin
      AktNode := TTreeNode.Create(TreeView1.Items);
      AktNode.Data := new(PView);
      PView(AktNode.Data).ID := DMHaupt.QHauptTreeView.FieldByName('ID').AsInteger;
      PView(AktNode.Data).ParentID := DMHaupt.QHauptTreeView.FieldByName('ParentID').AsInteger;
      PView(AktNode.Data).Bezeichnung := DMHaupt.QHauptTreeView.FieldByName('Bezeichnung').AsString;
      DMHaupt.QHauptTreeView.Next;

      // Das weg ....
      TreeView1.Items.Add(AktNode, PView(AktNode.Data).Bezeichnung);
      // und das verwenden ...
      WITH TheView.Items.Add(AktNode, PView(AktNode.Data).Bezeichnung) do
        Data:=AktNode.Data;
    end;
Habs im Debugmode gefunden.
In der Schleife "for i := 0 to TreeView1.Items.Count -1" war Items[i].Data immer 0.

Viel Spass,

Jens

  Mit Zitat antworten Zitat
Benutzerbild von fruity
fruity

Registriert seit: 2. Apr 2005
Ort: Bregenz
24 Beiträge
 
#5

Re: Nodes von Datenbank in TreeView einlesen

  Alt 10. Aug 2005, 10:30
Danke vielmals

Haette bei mir noch viel Kopfweh verursacht.

Euch jetzt schonmal nen schoenen Mittag und guten Appetit wuenschen tu
Rechtßreibvehler sind geistiegeß Eigentumm dess Autorren !!!
  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:42 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