Using TMetaTree
- User Forums
- MetaTree Component
- Using TMetaTree
Author | Message | |
---|---|---|
Shawn | 03/29/2006 07:02 am | |
Hi,
Your product looks great, is there an example on how to hook it to a bdtree? Thanks |
||
Oleg Chernavin | 03/29/2006 07:02 am | |
Do you mean to display data from a Database?
Best regards, Oleg Chernavin MetaProducts corp. |
||
Alex Filatkin | 03/29/2006 07:02 am | |
> Hi,
> > Your product looks great, is there an example on how to hook it to a bdtree? > > Thanks Unfortunately, MetaTree has no built-in capabilities to work with databases. But you may implement this possibility yourself easily. This is example from a real apllication which illustrates - how to fill MetaTree with data from a database === procedure TForm1.ConstructTree; var Root: TMTNode; // The tree structure stored in the table named "tree". // This table consists of the following fields: // [ID] [int] - unique record identifier. // [ParentID] [int] - identifier of the parent node // [Name] [char] (30) - Caption of the tree node // [Icon] [smallint] - Icon index of the tree node // procedure FillTree(Const N: TMTNode; Const ParentID: Integer); var s: String; i: Integer; N1: TMTNode; Temp: TList; // Stores list of all children of node N; begin with Query1 do begin SQL.Text := Format(`SELECT * FROM tree WHERE ParentID=%d`, [ParentID]); Open; Temp := TList.Create; while not Eof do begin S := Trim(FieldByName(`Name`).AsString); if s <> `` then begin N1 := MetaTree1.Items.Add(N, s); with N1 do begin Data := Pointer(FieldByName(`ID`).AsInteger); // Save user-defined data ImageIndex := FieldByName(`Icon`).AsInteger; end; Temp.Add(N1); end; Next; end; Close; for i := 0 to Temp.Count - 1 do FillTree(Temp[i], Integer(TMTNode(Temp[i]).Data)); Temp.Free; end; end; begin MetaTree1.BeginUpdate; // don`t repaint the Metatree MetaTree1.Items.Clear; // I added the root node manually, not from database Root := MetaTree1.Items.Add(nil, `MetaTree`); FillTree(Root, 0); MetaTree1.EndUpdate; // It`s OK. Now we will repaint the MetaTree end; === |