Toon posts:

[Delphi] Treeview vullen met DB gegevens

Pagina: 1
Acties:
  • 146 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ok,

Ik ben met een programma bezig, waarbij ik een MS Access database heb. Ik heb ook een treeview in hetzelfde programma. Die treeview bestaat uit:

--Beheerder
|
|---beheerdernaam

--Gebruikers
|
|----

Ik wil dus uit mijn database uit het veld: 'naam' alle namen in die treeview onder het kopje gebruikers zetten, weet iemand hoe dit precies moet? ik heb al heel veel gezocht maar ik kom er niet uit. Kan iemand mij opweg helpen?

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Je kan met de functies Next, First, EOF, Locate enz je verplaatsen door een TDataSet (TTable/TQuery). De waarde van de velden van het huidige record kan je o.a. bekijken en zetten met de functie FieldByName van de TDataSet. Hiermee zal je een stukje code moeten schrijven die door de structuur in je tabel/datatbase loopt op de manier dat jij wilt
Delphi:
1
2
3
4
5
Tabel1.First;
while not Tabel1.EOF do begin
  ShowMessage(Tabel1.FieldByName('VeldNaam').AsString);
  Tabel1.Next;
end;


In het tweede deel van je vraag moet je nodes runtime aan je treeview gaan toevoegen. Dat kan met de functies TTreeView.Items.Add AddChild AddNode enz. Als je die functies opzoekt in de Delphi help vind je ook een voorbeeld.
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
The following example demonstrates how to add nodes and child nodes to a TTreeView control.

procedure TForm1.Button1Click(Sender: TObject);

var
  MyTreeNode1, MyTreeNode2: TTreeNode;
begin
  with TreeView1.Items do
  begin
    Clear; { remove any existing nodes }
    MyTreeNode1 := Add(nil, 'RootTreeNode1'); { Add a root node }
    { Add a child node to the node just added }
    AddChild(MyTreeNode1,'ChildNode1');

    {Add another root node}
    MyTreeNode2 := Add(MyTreeNode1, 'RootTreeNode2');
    {Give MyTreeNode2 to a child }
    AddChild(MyTreeNode2,'ChildNode2');

    {Change MyTreeNode2 to ChildNode2 }
    { and add a child node to it}
    MyTreeNode2 := TreeView1.Items[3];
    AddChild(MyTreeNode2,'ChildNode2a');

    {Add another child to ChildNode2, after ChildNode2a }
    Add(MyTreeNode2,'ChildNode2b');

    {add another root node}
    Add(MyTreeNode1, 'RootTreeNode3');
  end;

end;

[ Voor 6% gewijzigd door LordLarry op 18-01-2004 01:06 . Reden: iets meer code bij het eerste voorbeeld ]

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
Dit werkt beide, bedankt...maar nog 1 ding, hoe kan ik nou die database namen in de treeview krijgen, want ik krijg de database namen nu achtereenvolgend in een dialog, ik heb al wat geprobeerd te combineren door i.p.v de treenode naam de naam van de table als string te zetten maar dat lukt ook niet :/ weet jij mischien hoe dat moet?

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Hoe bedoel je? Je hebt geen idee hoe je beide antwoorden moet combineren tot de oplossing? Ok, nog een zetje in de goede richting dan:
Delphi:
1
2
3
4
5
6
7
8
9
with TreeView1.Items do begin
  Clear; { remove any existing nodes }
  
  Tabel1.First;
  while not Tabel1.EOF do begin
    Add(nil, Tabel1.FieldByName('VeldNaam').AsString); { Add a root node }
    Tabel1.Next;
  end;
end; 


De volgende stap is natuurlijk niet alle records als rootnodes toe te voegen, maar er voor zorgen dat je de hiearchische structuur uit de tabel/database haalt. Dat zal meestal queries en/of filters nodig hebben op je tabel/database. Meestal worden daarbij recursieve functies gebruikt.

We adore chaos because we like to restore order - M.C. Escher