Ver Mensaje Individual
  #5  
Antiguo 30-09-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 31
Lepe Va por buen camino
Y supongo que quieres hacerlo "automáticamente", es decir, a priori, no sabes los campos que se han de mostrar en el combo; o bien el usuario puede elegirlos.

El resultado que quieres es este:
Código Delphi [-]
  combo.items.add('ClienteID');
  combo.items.add('Nombre');
  combo.items.add('Status');
Pero sin tenerlos que añadir a mano.

Lo que puedes hacer es guardar en alguna tabla, los nombres de los campos que quieres visualizar, y despues cargarlos en tiempo de ejecución.

Te puedes crear una tabla con 2 campos de string, el primero de 50 de ancho y el segundo de 255. de tal forma que quede así:
Código:
tabla frases:
 codigo                                 Descripcion
---------------------              -----------------------------------
VerCampos                         Nombre;ClienteId;Estatus
PreferenciasGuardarIni            True
Ahora solo tienes que "crearte" unas rutinas para leer lo que necesites, Recuerda que todo está guardado como Strings.

Código Delphi [-]
if tablafrases.locate('codigo','VerCampos',[]) then
begin
   x := Tstringlist.create;
  try
     x.Delimitedchar := ';';
     x.DelimitedText := tablafrasesDescripcion.asstring;

     for i:=0 to x.count-1 
       if qry.FindField(x[i]) <>nil then  
// me aseguro que el campo existe en la query, por un fallo de escritura, 
// nos podemos agobiar muuuucho.
      comboFiltro.items.add(x[i])
       else 
         Messagebox('El campo '+ x[i] + ' no existe en la query');
  finally
     x.free;
  end;
end;
Espero haber acertado en la respuesta.
Responder Con Cita