Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Alguna Idea (https://www.clubdelphi.com/foros/showthread.php?t=11278)

alejodb 10-06-2004 00:38:40

Alguna Idea
 
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:

Código Delphi [-]
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:

Código Delphi [-]
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

Buena idea
 
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.


La franja horaria es GMT +2. Ahora son las 17:06: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