Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-01-2012
Avatar de jejo1984
jejo1984 jejo1984 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 39
Poder: 0
jejo1984 Va por buen camino
Y para lazarus me arroja errores las lineas que estan de rojo

Código Delphi [-]
procedure TFrmAuditoriaArbolCausa.CargarTree(Sender: TObject; SQL: String); //Esta rutina permite mostrar los resultados de una consulta 
//en un TreeView. Para ello la consulta debe estar estructurada 
//de la siguiente forma: 
//      Campo 'Codigo', Integer (ID del registro) 
//      Campo 'Descripcion', String (valor a mostrar en el nodo) 
//      Campo 'Padre', Integer (ID del padre del registro)
 //La consulta debe mostrar relaciones padre e hijo, siendo 
//ambos registros de la consulta en cuestión. 
//Los registros sin padre deben tener el valor '0' en su 
//campo 'padre'. De esto se desprende que ningún registro puede 
//tener un 'Codigo'=0.  var   I, X, N: Integer;   Nod: TTreeNode;   NodSuplementario: TTreeNode;   MiPunteroInteger: PunteroInteger; begin    // Cargo la consulta a mostrar en el TreeView   
Query1.SQL.Clear;  
 Query1.SQL.ADD(SQL);   
Query1.Active := True;    //Recorro la consulta registro por registro   
Query1.First;   
for X:=0 to (Query1.RecordCount-1) do     
begin       
I:=Query1.fieldByName('Padre').asinteger;       // Si el campo padre vale 0 (no tiene padre)
if I=0 then 
begin //Agrego un nuevo nodo, que nazca directamente del raíz 
Nod:=TreeView1.Items.Add (nil,Query1.FieldByName('Descripcion').asstring);
New(MiPunteroInteger);
MiPunteroInteger^:=Query1.Fieldbyname('Codigo').asinteger;
nod.Data:=MiPunteroInteger;
nod.Selected :=true;
end
else 
begin //Agrego un nuevo nodo hijo al padre que le corresponda 
//Recorro desde el último nodo al primero, hasta que la propiedad data (donde guardo 
 //el código de cada nodo, sea igual al campo padre del nodo a agregar 
N:=TreeView1.Items.Count -1; 
while PunteroInteger(TreeView1.Items[N].Data)^ <>I do
Dec(N);   //Agrego el nodo hijo           nodSuplementario:=TreeView1.Items.AddChild(TreeView1.Items[N],Query1.FieldByName('Descripcion').asstring); 
New(MiPunteroInteger);
MiPunteroInteger^:= Query1.Fieldbyname('Codigo').asinteger;           nodSuplementario.Data:=MiPunteroInteger;
Nod.selected:=True;
Nod.Expanded:=False;
end;
query1.Next;
end;
end;

Cuando modifico la estructura de los nodos en el treeview, y quiero modificar la estructura padre-hijo de la tabla, ejecuto el siguiente código:

Código Delphi [-]
TFrmAuditoriaArbolCausa.BtnActualizarBDClick(Sender: TObject); 
var   X: Integer;
Nod: TTreeNode; 
begin  // Borro todos los registros de la base de datos que tengan padre y que cumplan las condiciones de filtrado   
Query1.SQL.Clear;
Query1.SQL.Add('DELETE FROM Auditorias_Problemas WHERE Codigo_Auditoria =' + IntToStr(CodigoAuditoria) + 'AND Codigo_Probefecto <> 0');
Query1.ExecSQL; //Cargo el tree en la base de datos
for X:=0 to (treeview1.Items.Count-1) do
begin 
Nod:= Treeview1.Items[X];
Nod.Selected:=true;
if Nod.Parent=nil then
begin //No cargo nada, porque al no tener padre ya se carga al declararlo como problema de la auditoría 
end
else 
begin
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO Auditorias_Problemas (Codigo_Problema, Codigo_ProbEfecto, Codigo_Auditoria) VALUES (:a, :b, :c)');
Query1.ParamByName('a').asinteger:= PunteroInteger(nod.data)^;
if (nod.Parent=nil) then
begin
Query1.ParamByName('b').asinteger:=0; 
end 
else
begin
Query1.ParamByName('b').asinteger:=PunteroInteger(Nod.Parent.data)^;
end;
Query1.ParamByName('c').asinteger:=CodigoAuditoria;
Query1.ExecSQL;
end;
end;

Basicamente lo que hace este ultimo código es borrar todo el arbol mostrado y volverlo a cargar como figura en el treeview.

Como veras, lo mas importante es armar los datos de la tabla indicando de que nodo se van a desprender al mostrarlos en un treeview.

Saludos, Enrique Gabriel Baquela.



Mi indica error en la variable Mipuntero...
__________________
No lleves tus conocimiento a la tumba, Enseña a otros lo que sabes...

Última edición por jejo1984 fecha: 16-01-2012 a las 19:21:07.
Responder Con Cita
  #2  
Antiguo 16-01-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por favor, jejo1984, ya te he comentado otras veces que dejes de contestar hilos de hace años, cuando no ofreces ninguna solución.
Si tienes cualquier duda, problema o consulta que hacer, por favor, crea un hilo nuevo en el foro adecuado.
Te recuerdo nuestra guía de estilo.
Responder Con Cita
Respuesta



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
Copiar un treeview a otro treeview mierda OOP 0 26-07-2006 12:29:17
treeview kiringui OOP 4 18-07-2006 11:52:38
Ver Mi Pc en un TreeView gilberto_1126 API de Windows 2 22-06-2004 01:07:36
Como utilizar el Treeview, desplegar la info del arbol binario al treeview leo21 Varios 2 08-04-2004 22:47:30
Como utilizar el Treeview, desplegar la info del arbol binario al treeview leo21 OOP 1 08-04-2004 22:42:44


La franja horaria es GMT +2. Ahora son las 08:23:40.


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
Copyright 1996-2007 Club Delphi