![]() |
Re: Zwei Tabel als Baum Darstellen
Was deffinierst du als tvBaum?
|
Re: Zwei Tabel als Baum Darstellen
tv ist oft die mnemonische Kennzeichnung des Variabletyps - hier TreeView.
marabu |
Re: Zwei Tabel als Baum Darstellen
Danke hab es hinbekommen, dass ist jetzt aber keine Datenintensivekomponente wozu brauche ich die dann?
Das BeginUpdate und EndUpdate wird bei mir angemault tvBaum enthält kein element diese Typs. Wie bekomme ich nun heraus welchen eintrag der User gewählt hat? |
Re: Zwei Tabel als Baum Darstellen
BeginUpdate() und EndUpdate() sind Methoden von TreeView.Items - also tvBaum.Items.BeginUpdate() und es wird funktionieren. Sobald du einen Knoten auswählst wird das Ereignis OnChange() gefeuert - du musst nur entsprechenden Code dafür schreiben. Beim Befüllen des Baums solltest du den Primärschlüssel der Tabelle in der Eigenschaft Data des Knoten mitführen:
Delphi-Quellcode:
Jetzt kannst du im Ereignis OnChange() recht einfach unterscheiden:
tn0 := tvBaum.Items.AddChildObject(nil,
Table1.FieldByName('FIRMA').Text, Pointer(Table1.FieldByName('ID').AsInteger) );
Delphi-Quellcode:
Das ist ohne datensensitive Komponenten, wie du schon richtig bemerkt hast.
procedure TDemoForm.TreeViewChange(Sender: TObject; Node: TTreeNode);
begin case Node.Level of 0: // Hersteller Table1.Locate('ID', Integer(Node.Data), []); 1: //Produkt Table2.Locate('ID', Integer(Node.Data), []); end; end; marabu |
Re: Zwei Tabel als Baum Darstellen
Danke für die Hilfe läuft super,
aber wozu gibt es datenintensive Komponenten :?: wenn man die Lösung ohne macht ? |
Re: Zwei Tabel als Baum Darstellen
Noch ein hoffentlich nicht so dumme Frage. Wie kann ich feststellen ob auf einen Root oder einen Child gecklickt wurde?
Da die Zeiger für die DB mitlaufen habe ich immer einen Bezeichner ausgwählt auch wenn der User nur auf einen Rootknoten gecklickt hat, ich zur weiter Verarbeitung aber einen ausgewählten Bezeichner brauche. |
Re: Zwei Tabel als Baum Darstellen
Die datensensitiven Komponenten gibt es seit D1. Durch die schematisierte Anwendung dieser Komponenten wird ein schnelles Erfolgserlebnis beim Erstkontakt sicher gestellt. Meine Sicht.
Der aktuelle Datensatz in der Tabelle kann ja ruhig beibehalten werden. Du schreibst von einem Root-Knoten - wieviele davon hast du und warum? Wenn ich auf Level 0 abfrage, dann gehe ich davon aus, dass alle Hersteller als Root-Knoten (auf der obersten Ebene) eingetragen wurden. marabu |
Re: Zwei Tabel als Baum Darstellen
Ich dachte die Hersteller sind die Rootkonten, wenn das Prog Fertig ist werden ca. 10-15 Hersteller in der DB sein.
Noch was anderes ist mir aufgefallen, das Onchange Ereigins wird nicht ausgeführt wenn man von einem Unterpunkt auf einen Aufgeklappten Unterpunkt eines anderen Kontens klickt. Währe es nicht besser das mitfühere des Pointers in das Onclickereignis zulegen? Da dieses immer bei einer Änderung vorhanden ist. |
Re: Zwei Tabel als Baum Darstellen
Zitat:
Zitat:
marabu |
Re: Zwei Tabel als Baum Darstellen
Liste der Anhänge anzeigen (Anzahl: 1)
Du hast recht, das Onchange wird ausgeführt nur die Db wird nicht aktuallisiert.
Ich habe folgendes geändert um das zu testen:
Delphi-Quellcode:
Das Showmessage wird immer ausgeführt, die DB(Labels) werde nicht aktuallisiert. Warum ?
procedure TForm1.tvbaumChange(Sender: TObject; Node: TTreeNode);
begin Showmessage('jetzt'); case Node.Level of 0: // Hersteller DataModule2.TdbTable1.Locate('Hersteller_ID', Integer(Node.Data), []); 1: //Produkt DataModule2.TdbTable2.Locate('Pr_ID', Integer(Node.Data), []); end; Label1.Caption:=DataModule2.TdbTable1.FieldValues['Firma']; Label2.Caption:=DataModule2.TdbTable2.FieldValues['Bezeichung']; Label3.Caption:=IntToStr(DataModule2.TdbTable2.FieldValues['maxl']); Label4.Caption:=IntToStr(DataModule2.TdbTable2.FieldValues['Breite']); end; Zip mit Datendateien angehängt An bei noch das TestProg als Zip da könnt ihr das Verhalten selbst sehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz