Este ejemplo, lo he tomado de una aplicación propia. Me basé en un ejemplo de Francisco Charte. Al guardar los datos en la tabla (he utilizado Paradox) he introducido un campo “nodo” de tipo caracter, que contendrá el número de nivel del arbol, así el nodo 0 será el primero o raiz, el 1 el segundo, etc.
procedure TFormPedMesa.FormCreate(Sender: TObject); Var I, X, N: Integer; Nod : TTreeNode; begin TablaMenus.Active := True; TablaMenus.First; for X := 0 to TablaMenus.RecordCount -1 do begin I := StrToInt(TablaMenus.FieldByName('Nodo').Text); if I = 0 then begin Nod := Menus.Items.Add (nil,TablaMenus.FieldByName('Campo').Text); Nod.Selected := True; end; If I = 1 then begin N := Nod.AbsoluteIndex; While Menus.Items[N].Level <> 0 Do Dec(N); Nod:=Menus.Items.AddChild (Menus.Items[N],TablaMenus.FieldByName('Campo').Text); Nod.Selected := true; end; if I = 2 then begin N := Nod.AbsoluteIndex; While Menus.Items[N].Level <> 1 Do Dec(N); Menus.Items.AddChild(Menus.Items[N],TablaMenus.FieldByName('Campo').Text); nod.Selected:=true; nod.Expanded:=False; end; TablaMenus.Next; end(*for*); TablaMenus.Active := False; Menus.FullCollapse; end;
Ważne artykuły