Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 05-11-2010
Avatar de JoseAntonio
JoseAntonio JoseAntonio is offline
Miembro
 
Registrado: abr 2006
Ubicación: Lima - Ciudad de los Reyes.
Posts: 87
Poder: 21
JoseAntonio Va por buen camino
Código Delphi [-]
procedure TfrmMain.AgregarNodosHijos(Anodo: TTreeNode; ALevel: Integer; AFather: integer);
  var
  SQLStr: string;
  ADAtaset: TpFibDataset;
  i: integer;
  ACliente: string;
  ADoc: string;
  ANodeRaiz: TTreeNode;
  iCliente: integer;
  iDoc: integer;
  ALote: string;
  iLote: integer;
  ARecNode: PRecNode;
  iEstado: integer;
begin
  if ALevel = 1 then begin
    SQLStr := 'SELECT * FROM CLIENTES order by COD_CLIENTE';
    ADataset:= Dm.GetNewDataset(SQLStr);
    for i:= 0 to ADataset.recordCount -1 do begin
      ACliente := ADataset.fieldbyName('RAZONSOCIAL').AsString;
      iCliente := ADataset.fieldbyName('cod_cliente').asInteger;
      ANodeRaiz:= tree.Items.AddChild(ANodo, IntToStr(iCliente) + '-' + ACliente);
      //ANodo.StateIndex:= 0;
      ANodeRaiz.ImageIndex := 3;
      ANodeRaiz.SelectedIndex := 3;
      ANodeRaiz.Data:= TObject(iCliente);
      if ALevel <>  3 then
        AgregarNodosHijos(ANodeRaiz, ALevel +1, icliente);
      ADataset.next;
    end;
    dm.freeDataset(ADataset);
  end
  else if ALevel = 2 then begin
    SQLStr := 'SELECT * FROM DOCUMENTOS where cod_cliente = ' + InttoStr(AFather) + ' ORDER BY COD_DOCUMENTO ';
    ADataset:= Dm.GetNewDataset(SQLStr);
    for i:= 0 to ADataset.recordCount -1 do begin
      ADoc := ADataset.fieldbyName('NOM_DOCUMENTO').AsString;
      iDoc := ADataset.fieldbyName('COD_DOCUMENTO').AsInteger;
      ANodeRaiz:= tree.Items.AddChild(ANodo,InttoStr(iDoc) + '-' + ADoc);
      //ANodo.StateIndex:= 0;
      ANodo.ImageIndex:=3;
      ANodeRaiz.ImageIndex:= 4;
      ANodeRaiz.SelectedIndex:= 4;
      ANodeRaiz.Data:= TObject(iDoc);
      if ALevel <>  3 then
        AgregarNodosHijos(ANodeRaiz, ALevel +1, iDoc);
      ADataset.next;
    end;
    dm.freeDataset(ADataset);
  end

  else if ALevel = 3 then begin
    iCliente := Integer(ANodo.Parent.data);
    IF NOT chbMostBorr.Checked THEN
    SQLStr := 'SELECT * FROM LOTES WHERE COD_CLIENTE = ' +
              IntToStr(iCliente) + ' AND COD_DOCUMENTO =  ' + IntToStr(AFather) +
              ' AND ESTADOLOTE <> -20 ORDER BY COD_LOTE'
     else
    SQLStr := 'SELECT * FROM LOTES WHERE COD_CLIENTE = ' +
              IntToStr(iCliente) + ' AND COD_DOCUMENTO =  ' + IntToStr(AFather) +
              ' ORDER BY COD_LOTE';
    ADataset:= Dm.GetNewDataset(SQLStr);
    for i:= 0 to ADataset.recordCount -1 do begin
      ALote := ADataset.fieldbyName('NOM_LOTE').AsString;
      iLote := Adataset.fieldbyName('COD_LOTE').AsInteger;
      iEstado := Adataset.fieldbyName('ESTADOLOTE').AsInteger;
      ANodeRaiz:= tree.Items.AddChild(ANodo,IntToStr(iLote) + ' - ' + ALote );
      New(ARecNode);
      ARecNode^.Cliente := iCliente;
      ARecNode^.Documento:= Afather;
      ARecNode^.Lote:= iLote;
      ARecNode^.Estado:= iEstado;
      ANodeRaiz.Data:= ARecNode;  // le asigno el codigo de documento

      ANodeRaiz.StateIndex:= 0;            0
      ANodeRaiz.ImageIndex:=0;
      ANodeRaiz.SelectedIndex:=1;
 
      ADataset.next;
    end;
    dm.freeDataset(ADataset);
  end;

end;

 
procedure TfrmMain.FreeNodes(ARaiz: TTreeNode);
var
  //ANode: TTreeNode;
  APRecNode: PRecNode;
  i: integer;
begin
  if ARaiz <> nil then begin
    if ARaiz.Level = 3 then begin
      APRecNode := PRecNode(ARaiz.Data);
      Dispose(APRecNode);
      //FreeNodes(ARaiz.getNextSibling);
    end
    else if Araiz.Level = 2 then begin
      for i:= 0 to Araiz.count-1 do
       try
        FreeNodes(ARaiz.Item[i]);
       except
         showmessage(ARaiz.item[i].text);
       end;
    end
    else if ARaiz.Level = 1 then begin
      for i:= 0 to ARaiz.count-1 do
        FreeNodes(ARaiz.Item[i])
    end
    else if ARaiz.Level = 0 then begin
      for i:= 0 to ARaiz.count-1 do
        FreeNodes(ARaiz.Item[i])
    end;
  end;
end;
__________________
nuestro carácter está reflejado en cada línea de código que escribimos.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Liberar memoria Perrero80 Varios 15 06-04-2017 04:07:10
Liberar memoria vicvil Varios 13 30-10-2006 17:14:38
Liberar dll de memoria lgarcia Internet 1 11-08-2005 00:26:29
Liberar memoria Sick boy Varios 6 02-07-2005 10:11:29
Liberar Memoria JoseQ Varios 6 16-07-2004 18:49:21


La franja horaria es GMT +2. Ahora son las 13:33:28.


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