Ver Mensaje Individual
  #4  
Antiguo 22-06-2006
Avatar de quinqui
quinqui quinqui is offline
Miembro
 
Registrado: jun 2006
Posts: 14
Reputación: 0
quinqui Va por buen camino
o sea que realmente no existe una forma directa como con PHP ...

les explico mejor mi caso:
He hecho un procedimiento que realiza una consulta y muestra los resultados en una Grid. La idea es que esta Grid se adapte al formato de dicho resultado; me refiero específicamente a la cantidad de columnas y al texto de la fila de encabezados.

el procedimiento debe ser capaz de decidir, aparte de cuál consulta realizar, qué encabezados darle a la grilla, y a eso iba yo con cómo darle valores distintos a un mismo arreglo, pero de manera dinámica.

esto es, que si, por ejemplo, consultara por Usuarios, la Grid debiera tener 3 columnas y sus encabezados debieran decir algo como "ID", "Clave" y "Nivel"; luego, si consultara por Clientes, los encabezados debieran ser 4 y decir "Nombre", "Dirección", "Fono" e "Email"... etc...

en este caso, el procedimiento se vería algo así como esto :

Código Delphi [-]
procedure Cargar(Consulta: Integer);
var
 i : Integer;
 miArray : Array of String;
begin

 { Selecciona los parámetros a aplicar en la Grid según la Consulta recibida }
 case Consulta of
   1 : { Usuarios }
   begin
     SetLength(miArray, 3);
     miArray := ('ID', 'Clave', 'Nivel');
   end;
  2: { Clientes }
   begin
     SetLength(miArray, 4);
     miArray := ('Nombre', 'Dirección', 'Fono', 'Email');
   end;
 end;

 { Formateo la Grid }
 miGrid.ColCount := Length(miArray);

 { Lleno el encabezado de la Grid }
 for i := 0 to Length(miArray) - 1 do
   miGrid.Cells[i, 0] := miArray[i];

 { Aquí realizaría la consulta sql en sí, leyendo los registros encontrados y mostrándolos en la Grid ya inicializada... }

end;

la idea, en función de mi flojera, es no tener que hacer esto por cada opción de Consulta :

Código Delphi [-]
 case Consulta of
   1 : { Usuarios }
   begin
     SetLength(miArray, 3);
     miArray[0] := 'ID';
     miArray[1] := 'Clave';
     miArray[2] := 'Nivel';
   end;
   .
   .
   .

esop....
Responder Con Cita