PDA

Ver la Versión Completa : Alguna Idea


alejodb
10-06-2004, 00:38:40
Hola a todos
Estoy haciendo una aplicacion donde he creado unos 50 reportes hechos en quickreport y en el PageFooter y PageHeader incluyo el membrete de la empresa a la que va dirigida la aplicacion repitiendose en cada uno de estos, el problema es cuando vendo mi aplicacion a otra empresa y debo cambiar manualmente el pagefooter y pageheader para cada uno de los 50 reportes siendo un trabajo tedioso, me gustaria saber si conocen alguna forma de hacerlo sin tener que repetir esto cada vez (he pensado en herencia de reportes pero no se como hacerlo).
Cualquier ayuda la agradeceria.

delphi.com.ar
10-06-2004, 05:15:48
Si los footers y los headers son exactamente iguales, los hubiera diseñado utilizando herencia visual.... Ahora puedes cambiarlo, pero va a ser algo tedioso!

Saludos!

SnaKe
10-06-2004, 10:15:49
Hola,

Eso es muy tipico que ocurra, te cuento como lo he hecho yo solo para las cabeceras de pagina, me he creado dos componentes que heredan de TQrImage y TQrLabel.

En el constructor de cada componente hacen algo asi:


constructor TQRImageLogo.Create(AOwner: TComponent);
var
Logo: TComponent;
begin
inherited Create(AOwner);
SetBounds(0,0,60,60);
Logo := Application.MainForm.FindComponent('Logo');
if (Logo <> nil) and
(Logo is TImage) then begin
Picture.Assign(TImage(Logo).Picture);
Stretch := TImage(Logo).Stretch;
end;
end;

Algo parecido pasa con el que hereda de un TQrLabel, la idea es sencilla, el componente busca en el formulario principal de la aplicación un componente con nombre 'Logo' y copia el contenido de la propiedad Picture en este componente, con el que hereda de QrLabel lo que copia es el caption de un label que tengo en el formulario principal que se llama NombreEmpresa.

En el formulario principal de todas las aplicaciones tengo un TImage llamado Logo y un TLabel llamado 'NombreEmpresa', ambos con la propiedad visible a false y asi solamente cambio esto en el formulario principal.

Podrías hacer algo parecido incluso sin programar tus propios componentes sino que por ejemplo en el main de tu aplicacion pones un TImage con el logo que quieras un Label con el texto del pie de pagina (ambos con la propiedad visible a false) y le pones la imagen que quieras y el texto que quieras. Entonces en el create de cada listado haces algo asi:


var
Logo: TComponent;
Pie : TComponent;
begin
Logo := Application.MainForm.FindComponent('NombreDelTImagedelMain');
Pie := Application.MainForm.FindComponent('NombreDelTLabeldelMain');
MiQrImage.Picture.Assign(TImage(Logo).Picture);
MiQrLabelPie.Caption := TLabel(Pie).Caption;
end;


Para la proxima aplicacion cambias en el main el Picture de tu TImage y el caption de tu TLabel y listo.

Espero que te sirva.

Un saludo.

alejodb
10-06-2004, 17:29:43
Muchas gracias,

Es una buena idea y la voy a tratar de aplicar, claro que con algunas modificaciones pues el número de componentes en el Header y el Footer es variable entonces creo que la herencia de componentes me sirve mas.