Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   VirtualTreeView de tres niveles... solo consigo dos :( (https://www.clubdelphi.com/foros/showthread.php?t=67064)

tgsistemas 26-03-2010 11:49:26

VirtualTreeView de tres niveles... solo consigo dos :(
 
Hola a tod@s,

he estado leyendo varios hilos sobre ese componente (VirtualTreeView), me parece muy bueno y con muchas posibilidades pero estoy atascado en una tonteria que no consigo resolver.

Basándome en la idea de este hilo sobre treeview y tablas master/detail lo he adaptado con 3 qry (zeos read only) relacionados entre sí (MasterSource, MasterField, LinkedFields) y consigo cargar los primeros qry's pero estoy atascado en cargar el 3 nivel.... No me queda nada claro el tema de los nodos, items, etc...

el código adaptado es :
Código Delphi [-]
procedure TFPruebas.vrtlstrngtr1InitNode(Sender: TBaseVirtualTree;
  ParentNode, Node: PVirtualNode;
  var InitialStates: TVirtualNodeInitStates);
var data:PMyData;
begin
  data := Sender.GetNodeData(Node);
  if Sender.GetNodeLevel(Node) = 0 then
  begin
    // Nodo maestro - DC
    zroqryDC.RecNo := node.Index + 1;
    data.inomdcmrcial := zroqryDC.fieldbyname('nomdcmrcial').asString;
    data.icoddcmrcial := zroqryDC.fieldbyname('coddcmrcial').AsInteger;
    if zroqryAM.RecordCount>0 then InitialStates:=InitialStates+[ivsHasChildren];
  end else
  begin
    // Nodo Detalle - AM
    zroqryDC.RecNo := parentnode.Index + 1;
    zroqryAM.RecNo := Node.Index + 1;
//aqui faltaria añadir el 3 nivel (se llama TDAS) pero se cómo indicarle que son lineas de AM :confused:
    data.inomdcmrcial := zroqryDC.fieldbyname('nomdcmrcial').asString;
    data.icoddcmrcial := zroqryDC.fieldbyname('coddcmrcial').AsInteger;
    data.inommnger    := zroqryAM.fieldbyname('nommnger').AsString;
    data.icodmnger    := zroqryAM.fieldbyname('codmnger').AsInteger;
    data.inmbre       := zroqryTDAS.fieldbyname('nmbre').AsString;
    data.icom         := zroqryTDAS.fieldbyname('com').AsInteger;
  end;
end;


procedure TFPruebas.vrtlstrngtr1Change(Sender: TBaseVirtualTree;
  Node: PVirtualNode);
begin
// los 3 grids actualizan los datos correctamente al cambiar en el treeview
  if bAutoLocate and assigned(node) then
  begin
    if sender.GetNodeLevel(node) = 0 then
      zroqryDC.RecNo:=node.Index+1
    else begin
      zroqryDC.RecNo:=node.parent.Index+1;
      zroqryAM.RecNo:=node.Index+1;
    end;
  end;
end;
alguien podría mostrarme un poco de luz por favor?? estoy muy, pero muy espeso :confused:

saludos y gracias a tod@s


La franja horaria es GMT +2. Ahora son las 23:35:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi