Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Zusätzlich Daten in einer tTreeNode speichern.


mrmiagi - Di 12.08.03 08:55
Titel: Zusätzlich Daten in einer tTreeNode speichern.
Ich habe einen Treeview der sich seine Nodes aus einer Datenbank durch ein query holt. Nun soll durch klick auf einen Node mir ein Feld aus dem selbem Datensatz angezeigt werden, ausdem der Node stammt.
Muss wohl irgendwie mit Pointern funktionieren oder so!
kann mir da jemand weitehelfen?

Moderiert von user profile iconTino: Titel geändert.


Tino - Di 12.08.03 11:27

Hallo!

du kannst bei jeder Node einen Pointer angeben (Eigenschaft Data). Dort könntest du zum Beispiel die Datensatznummer speichern. Wenn du dann auf so einer Node klickst ließt du die Datensatznummer wieder aus und hast dann die Möglichkeit das entsprechende Feld aus der Datenbank zu lesen.

Gruß
Tino


mrmiagi - Di 12.08.03 11:42

Hört sich ja gut an, das habe ich auch schon in etwa so probiert. Funktionierte aber nie, könntest du mir vielleicht mal etwas Beispiel Code geben?


Keldorn - Di 12.08.03 13:12

mrmiagi hat folgendes geschrieben:
Hört sich ja gut an, das habe ich auch schon in etwa so probiert.
Funktionierte aber nie, könntest du mir vielleicht mal etwas Beispiel
Code geben?

da steht doch eins in der Hilfe drin: ttreenode.data. gugg mal dort.


Tino - Di 12.08.03 14:37

Hallo!

mrmiagi hat folgendes geschrieben:
könntest du mir vielleicht mal etwas Beispiel Code geben?

Zeig doch mal deinen Versuch. Dann können wir dir zeigen was du falsch gemacht hast.

Gruß
Tino


mrmiagi - Di 12.08.03 15:15

ja in der Hilfe habe ich schon geschaut, ich habe auch schon was rausgeholt:
Zuerst füge ich die Childs mit Daten hinzu:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
UKind := Treeview1.items.AddChildObject (
    Kind, 
    query3.fieldbyname ('struktur').AsString,
    query3.FieldByName ('Bild_key_nr')
  );
  Query3.Next;

Steht dann hinter jedem Child dir dazugehörige 'Bild_Key_Nr' aus meinem Query3, oder kann ich das nicht so machen. Weil dann möchte ich durch einen neuen Query auf eine Tabelle zugreifen und mit dem Paramter :key die passenden Sätze selektieren und in ein memo einfügen.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button4Click(Sender: TObject);
begin
query4.Active := true;
query4.ParamByName('key').AsInteger := integer(treeview1.Selected.Data);
query4.ExecSQL;
memo1.lines.add  (query4.ParamByName('Daten').AsString);

end;

Das neue Query sieht so aus:

Quelltext
1:
select * from stat1dat where 'Bild_Key_Nr' =  :key                    

Aber er bringt nur die Meldung Typ für Feld 'key' ist unbekannt? Was heißt das? Wenn ich die treeview1.Selected.Data Abfrage steht nur totaler schwachsinn drin : Ø?G . Was ist denn das, auf jeden Fall nicht das was ich selektiert habe in meinem treeview! Aúßerdem scheint sich das nie zu verändern wenn ich einen neuen node in meinem Tree auswähle!
Muss ich noch mit indexen oder so arbeiten?

Moderiert von user profile iconTino: Code-Tags hinzugefügt.