Buen dia caballeros
Con el permiso de los amigos moderadores, quisiera poner a disposición
de todos una forma de realizar reportes en Delphi usando Qreports de
una manera sencilla rápida y sin mucha complicación.
Esta aplicación la desarrolle cuando hacia un programa que exigía
muchos reportes y facilmente me llenaba de forms con diseñadores de
reportes, asi que cogiendo ideas de algunos reportedores, hice esta
aplicacion, que a mi juicio deberia estar encapsulada en una DLL
y usarla sin problemas en nuestras aplicaciones.
Se trata de un archivo Unit_frmPreview.dfm y su respectivo código
en el archivo Unit_frmPreview.pas, es un reporteador que muestra un
reporte con la interfaz personalizada y no la típica de qreports
que esta en inglés, esto lo hice gracias a la guía de personalización
del Qreports de Freire, ademas este form cuenta con propiedades
adicionales para la gestión de reportes, todas por supuesto
manipulables en tiempo de ejecución, las cuales enumero a continuacion
Código Delphi
[-]DataSet Enlazado VerNroRegistros
asi mismo cuenta con los siguientes métodos
Código Delphi
[-]AddDetail(RotuloColumna, CampoColumna, anchoColumna, alineacion, formato)AgregaCampoSumar(campo, titulo)SetLinea1(titulo1, titulo2, titulo3, contenido1, contenido2, contenido3)
DisplayRango VistaPrevia
Realmente no hay mucha programación lo que creo aqui es realmente util
es la forma de crear reportes dinámicamente en ejecución, debo admitir
que esta forma la estoy tomando de un reporteador que hacem muchisimo use
encontre. tomando muchas cosas prentendí juntarlas en una y tener algo
práctico para los reports
Bien, para crear un reporte que muestre dos campos
de un DataSet lo hacemos así:
Código Delphi
[-]var p: Tfrm_Preview; begin
p := Tfrm_Preview.Create(Self);
p.TituloInforme := 'Personal de planta';
p.DataSet := Query1; p.AddDetail('Nombre Empl.','nombre',150);
p.AddDetail('Sueldazo','sueldo',80,taRightJustify,'0.0');
p.VistaPrevia; end;
Pudiendo crear varias instancias del tipo del tipo frm_Preview
y sin crear reportes en tiempo de diseño.
En el Ejemplo que adjunto se pueden ver 4 tipos de reportes
donde muestro otras opciones mencionadas anteriormente
Hay un botón que dice Flexible el cual genera el reporte
tomando los valores de configuracion de un DBGrid, es decir
el ancho la alineacion el formato y el titulo de cada campo
Reportes no enlazados a datos
Lo primero poner la propiedad enlazado a False,
Para estos el reporteador usa la matriz DatosRep de tipo string, que debe ser
pública a la aplicacion para que el form que llama ponga datos en la
matriz y el reporteador las lea y las muestre, esta es una matriz
dinámica de dos dimensiones ponemos en la ultima columna el formato
por el momento solo dispone de negrita N
La verdad no domino programación de componentes, ya que seria ideal
encapsular todo ello en un componente, claro depurandolo bien y agregando
mas funcionalidades, incluso podriamos enriquecerlo para que pueda hacerce
reportes maestro detalle.
en el archivo que adjunto pongo dos forms uno es del reporteador
y otro del ejemplo con todo el código fuente, el ejemplo usa
un dataset de paradox y los componentes BDE pero trabaja con cualqueir
de tipo ascendiente TDataSet (Zeos, Ado, IBX).
Me gustaría enla medidaqeu fuese poible y con la ayuda de todos
repotenciar e implementar bien esto ya a que a todos no ayudaría
mucho ya que es altamente reutilizable.
Agradecido de antemano por cualquier aporte, duda, u observación
y esperando sea de utilidad este post me despido de
momento con un fuerte abrazo.