Pasar datos desde una tabla a un TTreeView.

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;