Ver Mensaje Individual
  #4  
Antiguo 21-05-2020
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.298
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Creo que es más sencillo...
Con este código puedes recorrer el treeview y almacenar en la tabla ls items:
Código Delphi [-]
var
  i:integer;
  tv:TTreeNode;
begin
  tblOpcMenu.Open;                                      // Abrir la tabla
  for i := 0 to (TreeView1.Items.Count -1) do begin     // recorro el treeview
    tv := TreeView1.Items[i];                           // accedo al nodo
    tblOpcMenu.Append;
    // Si es un nodo de primer nivel (-1), si no, me apunto el padre
    tblOpcMenu.FieldByName('NODO_PADRE').AsString := ifThen(Assigned(tv.Parent), tv.Parent.Index.ToString, '-1');
    tblOpcMenu.FieldByName('NODO').AsInteger := tv.Index;
    tblOpcMenu.FieldByName('OPC_DESCRIPCION').AsString := tv.Text;
    tblOpcMenu.FieldByName('OPC_TAG').AsInteger := tv.AbsoluteIndex;

    tblOpcMenu.Post;
  end;
  tblOpcMenu.Close;


Y con este otro recuperrarlos y añadirlos a un Treeview vacío:
Código Delphi [-]
var
  i, iParent:integer;
  tv, tvParent:TTreeNode;
begin
  tblOpcMenu.Open;                         // Abrir la tabla
  while not tblOpcMenu.Eof do begin        // Recorrer los registros hasta el final
    iParent := tblOpcMenu.FieldByName('NODO_PADRE').AsInteger;     // buscar el nodo padre (los de primer nivel = -1)
    if (iParent = -1) then begin           // Los de primer nivel...
      tv := TreeView1.Items.Add(nil, tblOpcMenu.FieldByName('OPC_DESCRIPCION').AsString);   // Se añaden
      tvParent := tv;                      // es un nodo padre
    end
    else                                   // Los que no son de primer nivel, loos añado al padre
      tv := TreeView1.Items.AddChild(tvParent, tblOpcMenu.FieldByName('OPC_DESCRIPCION').AsString);
    tblOpcMenu.Next;
  end;
  tblOpcMenu.Close;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita