![]() |
Virtual String Tree aus Oracle erstellen
hi @ all,
ich will mit der Komponente VirtualStringTree eine Baumstruktur aus einer Tabelle erstellen. Das einfach zuerst, wie kann ich individuell childnodes erstellen !!MIT!! den daten die ich auch da haben will. ich bekomme zwar ein child hin, aber stehen da als name und eben als daten der letzte eintrag der tabelle, obwohl das child an anfang ist?!?! :wall: kann mir jemand vielleicht einen tipp über das einfügen von childnodes aus einer oracle tabelle geben, oder viellecht ein code-schnippsel??? mfg Apollo13 |
Re: Virtual String Tree aus Oracle erstellen
hi,
poste dochmal den code, den du bisher verwendest. Dann können wir dir sicher leichter helfen. Gruß Ken |
Re: Virtual String Tree aus Oracle erstellen
hier ist alles wichtig was ich in dem tree habe:
speedbutton löst die procedure aus...
Delphi-Quellcode:
procedure TForm1.LMDDockSpeedButton1Click(Sender: TObject);
begin LoadData; end;
Delphi-Quellcode:
procedure tform1.LoadData;
begin if not ADOQuery1.Active then ADOQuery1.Open; ADOQuery1.filtered := false; ADOQuery1.filter := ''; vtree.BeginUpdate; vtree.Clear; vtree.NodeDataSize := Sizeof(TMyRec); ADOQuery1.First; vtree.RootNodeCount := ADOQuery1.recordcount; vtree.SortTree(0,sdAscending,true); vtree.EndUpdate; end;
Delphi-Quellcode:
procedure TForm1.VtreeInitNode(Sender: TBaseVirtualTree; ParentNode,
Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates); var Data: PMyRec; treedata: PMyRec; nodeweg: PVirtualNode; i: integer; begin with Sender do begin Data := GetNodeData(Node); Initialize(Data^); Data.Caption := adoquery1.FieldByName('BEZEICHNUNG').AsString; Data.ID := adoquery1.FieldByName('ID').AsInteger; Data.GruppeID := adoquery1.FieldByName('GRUPPEID').AsInteger; if Data.GruppeID = 1 then [b]//<- Problem, alle mit GruppeID = 1 sollen in extra childnode stehen[/b] begin i:=i+1; nodeweg := vtree.AddChild(vtree.getfirstchild(vtree.rootnode)); vtree.GetFirstChild(vtree.rootnode).ChildCount := i; [b]//<- erstellt auch entsprechend viele nodes, nur eben mitdem faslchen daten...???[/b] end; if not adoquery1.eof then adoquery1.Next; end; end;
Delphi-Quellcode:
so, das ist der code. hat irgendjemand einen tip(p) für mich, wie ich am einfachsten childnodes in den vst einfügen kann...?!?!?! kann auch eine andere art lösung sein als in diesem code hier...
procedure TForm1.VtreeGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString); var Data: PMyRec; i: integer; begin Data := Sender.GetNodeData(Node); if Column = 0 then CellText := Data.Caption else if Column = 1 then CellText := inttostr(Data.ID) else if Column = 2 then CellText := inttostr(Data.GruppeID) else CellText := ''; end; help me.... :coder2: |
Re: Virtual String Tree aus Oracle erstellen
hi,
ich werde mich morgen mal damit auseinandersetzen. Nur was noch am rande, wie sieht die tabelle aus und wie behandelst du knoten, die keinen vater haben? Und wie sieht das statement aus, mit dem du die knoten aus der db holst? Und dann sieht mir das mit dem initNode merkwürdig aus. Wie willst du denn jetzt wissen, unter welchen knoten der aktuelle datensatz gehört??? Gruß Ken |
Re: Virtual String Tree aus Oracle erstellen
guten morgen.
recordcount funktioniert in sql datenbanken normal nicht. (abhaendig vom cursortyp) wenn du einen baum im vst haben willst schau dir doch mal bitte bei mike den db-tree auf der page an. ![]() "virtualdbtree" |
Re: Virtual String Tree aus Oracle erstellen
hi @ all,
danke erstmal für die antworten Zitat:
ich hab allerdings jetzt eine lösung für viele meiner probleme gefunden. die funktion getnext(node) durchsucht alle nodes im tree, egal auf welchem level. damit ist es nun sehr einfach einen bestimmten datensatz zu suchen und den node einzufügen!!! PS: für alle die wie ich newbie in sachen vst sind, ![]() thy bis zum nächsten post... Apollo13 |
Re: Virtual String Tree aus Oracle erstellen
Zitat:
Dies kann, muß aber nicht mit der Anzahl der in der Datenbank vorhandenen Datensätze übereinstimmen, weil unter Umständen Datensätze erst geladen werden, wenn sie benötigt werden. Grüsse Woki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 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-2025 by Thomas Breitkreuz