Ver Mensaje Individual
  #9  
Antiguo 22-03-2014
jesconsa jesconsa is offline
Miembro
 
Registrado: dic 2009
Posts: 30
Reputación: 0
jesconsa Va por buen camino
Tirar la toalla con VirtualTreeView

Hola. Estoy tratando de "domar" al Virtual TreeView pero es un hueso duro de roer, tanto que estoy a punto de tirar la toalla. He visto todos los enlaces, todos los ejemplos y hay cosas que no acabo de entender. El VirtualTreeView esta hecho como sabeis para que se creen nodos raiz y a partir de ahi todos los demas. Los datos de dichos nodos van aparte y se pueden crear en el evento OnInit, cuando se crea el arbol o cuando quieras, mostrando cada nodo su texto mediante OnGetText. Todo esto esta bien hasta que llegamos a la parte de seguir añadiendo nodos a los nodos raiz.....Algo asi no funciona:

Código Delphi [-]
 try
    Nodo := Form1.VST1.GetFirst;
    while Assigned(Nodo) do
    begin
      Form1.VST1.Selected[Nodo] := True;

  //for I := 1 to Form1.FDTable10.RecordCount do
   //   begin

         N2:=Form1.VST1.GetNodeData(Nodo);
         S1:=N2.Id;
         Form1.FDTable11.First;
         while not Form1.FDTable11.Eof do
           begin
              S2:=Form1.FDTable11['Parent'];
              if S2=S1 then begin
                  N:=nil;
                  //N.NCaption := Form1.FDTable11.FieldByName('Cities').asString;
                  //N.Chk:= Form1.FDTable11.FieldByName('Selected').AsBoolean;
                  N.Id:= StrToInt(Form1.FDTable11['Id']);
                  añade_nodo(Form1.VST1,Nodo,N);
                  Initialize(N^);
              end;
              Form1.FDTable11.Next;
           end;
      end;


       Nodo := Form1.VST1.GetNextSibling(Nodo);
    //end;
  finally
    Form1.VST1.EndUpdate;
  end;

Lo que voy haciendo en este codigo es lo siguiente: Tengo 3 tabalas cada una para un nivel del arbol . Lo he hecho asi para que en tiempo de ejecucion sea muy facil añadir nodos (registros) a las tablas. En el codigo busco los nodos hijo de un padre determinado comparando los campos 'ID' de cada registro de la tabla de registros hijo con un 'Id' determinado de la tabla de registros raiz. Pues bien, cuando detecta que un hijo pertenece a un padre no me deja coger dicho registro de la tabla de hijos. En añade_nodo tengo todo para crear el nodo hijo (AddCHild, etc) pero no llega a hacerlo por este error.


Código Delphi [-]

N.NCaption := Form1.FDTable11.FieldByName('Cities').asString;

Aqui es donde da un error...He tratado de coger dicho dato con un Dataurce o otro Dataset pero no hay manera. Cualquier ayuda es bienvenida y agradecida.

Muchas gracias

Saludos
Responder Con Cita