Ver Mensaje Individual
  #5  
Antiguo 21-05-2020
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Reputación: 21
mRoman Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
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;
Gracias Neftali por contestar. Lo aplico y haré mis comentarios al respecto. Todo esto es porq estoy desarrollando el módulo de seguridad del sistema, crear usuarios, roles y configuraciones de las opciones del menu principal del sistema...que es el tema q nos ocupa.

Nuevamente gracias y estamos pendientes...

Saludos.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita