AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Treeview Node finden
Thema durchsuchen
Ansicht
Themen-Optionen

Treeview Node finden

Ein Thema von Gehstock · begonnen am 9. Sep 2007 · letzter Beitrag vom 9. Sep 2007
Antwort Antwort
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#1

Treeview Node finden

  Alt 9. Sep 2007, 09:39
Datenbank: Access • Zugriff über: ADO
Delphi-Quellcode:
procedure TfrmMain.TreeView1Click(Sender: TObject);
begin
  Memo1.Clear;
  ADOQuery1.SQL.Clear;
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'SELECT * FROM ' + TreeView1.{****}
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    if ADOQuery1.FieldByName('Feld1').AsString = TreeView1.Selected.Text then
    begin
      Memo1.Lines.Add(ADOQuery1.FieldValues['Feld2']);
    end;
    ADOQuery1.Next;
  end;
end;
ick komme hier nicht weiter wie sage ich den Treeview an der markierten stelle in welchen Node er sich befindet um die passende Tabelle in der DB zu durchsuchen

als demo hab ichs so gemacht

ADOQuery1.SQL.Text := 'SELECT * FROM Funktionen' ; so klappt es auch aber halt nur für diesen Node
Miniaturansicht angehängter Grafiken
unbenannt_598.jpg  
Marcel
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: Treeview Node finden

  Alt 9. Sep 2007, 09:56
Du must vor der DB-Abfrage erstmal den Node rausfinden, der selektiert ist. Über eine rekursive Suche mit Hilfe der selected-Eigenschaft geht das ungefähr so:

Delphi-Quellcode:

function SearchNode(Aroot:TTreenode):TTreenode;
var
  i : integer;

begin
  result := NIL;
  for i := 0 to Aroot.childcount -1 do
  begin
    node := Aroot.Childnodes[i];
    if TreeView1.selected[node] then
    begin
      result := node;
      break;
    end
    else
    begin
      if (node.childcount > 0) then
         result := SearchNode(node);
      if result <> NIL then exit;
    end;
  end;
end;
Das ganze ist jetzt frei aus dem Gedächtnis gebaut und wird so 1:1 nicht funktionieren, sollte aber das Prinzip verdeutlichen.

Danach hast du den Node und kannst mit Hilfe des Textes die DB-Abfrage machen
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
marabu

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

Re: Treeview Node finden

  Alt 9. Sep 2007, 10:15
Hallo,

der selektierte Knoten muss nicht unbedingt gesucht werden:

Delphi-Quellcode:
function RootNode(node: TTReeNode): TTreeNode;
begin
  while Assigned(node) do
  begin
    Result := node;
    node := node.Parent;
  end;
end;

procedure TDataForm.TreeViewChange(Sender: TObject; Node: TTreeNode);
begin
  if Assigned(Node) then
    ShowMessage(RootNode(Node).Text)
end;
Ich habe OnChange() genommen, aber unter bestimmten Randbedingungen funktioniert es auch mit OnClick().

Grüße vom marabu
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Treeview Node finden

  Alt 9. Sep 2007, 10:23
Danke klappt Prima
Marcel
  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 10:08 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