Foros Club Delphi

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

oliviagadel 26-07-2005 20:34:02

mostrar informes
 
Hola,
Tengo una aplicacion con unos 20 listados que tarda mucho en ejecutarse porque tengo todos los forms (q contienen quick report), creados desde el principio. Hago esto porque es la forma en la que consigo se muestren los informes correctamente(los informes se basan en una consulta que cambio dinamicamente) ¿Como puedo evitar esto?
Gracias

ContraVeneno 26-07-2005 21:27:31

si entendí bien, tengo la imagen de 20 formularios, cada uno con un quickreport...
si es así, supongo que un TPageControl invisible con 20 Tabs (o páginas) podría servir....

Colocas un TPageControl en tu formulario, le agregás páginas y en cada página pones un reporte diferente.... de esta forma al menos no tendrá que cargar 20 formularios...

dec 27-07-2005 03:34:31

Hola,

Lo que tal vez puedes hacer es evitar que los formularios se creen al inicio del programa y crearlos tú mismo uno a uno según los necesites y destruirlos también uno a uno luego de que no te sean precisos.

Para evitar que los formularios se creen automáticamente al inicio del programa puedes utilizar el menú de Delphi > Project > Options. En la pestaña "Forms" de las opciones verás una lista con una etiqueta arriba de nombre "Auto-CreateForms".

También puedes impedir la creación automática de los formularios editando convenientemente el archivo ".dpr" (Delphi Project) de tu programa.

En todo caso cuando precisaras mostrar un formulario podrías utilizar un procedimiento parecido al siguiente, cuyo nombre "ficticio" y otros identificadores relacionados pretenden además darte alguna idea al respecto:

Código Delphi [-]
    procedure TfrmPrincipal.MostrarPrimerReporte;
    var
      frm: TPrimerReporte;
    begin
      frm := TPrimerReporte.Create(Self);
      try
        with frm do begin
          // Si hay que hacer algo antes...
          ShowModal;
          // Si hay que hacer algo después...
        end;
      finally
        frm.Free;
      end;
    end;
Ahora, bien, tratándose de que utilizas los componentes "QuickReport" y que no tengo ninguna experiencia con los mismos, ¿he metido la pata? ¿se me pasó por alto algo que me impidió verlo antes? Si es así no me abandonéis sino hacédmelo saber.

Lepe 27-07-2005 07:59:51

No se te escapa mucho dec, unicamente que en lugar de usar ShowModal, tienes que usar:
- Reporte.Preview;
- Reporte.PreviewModal;
- Reporte.PreviewModeless;

en función de como quieres el resultado final.

Otra cosa, la mayoria de nosotros colocamos el QuickReport dentro de un Form, y despues creamos el Form. Si desde File --> New --> Other elegimos QuickReport, ya no tendremos que crear el Form, simplemente creamos el QuickReport, es decir, nos ahorramos una ventana por QuickReport, en tema de recursos usados, es más eficiente.

Un saludo.

oliviagadel 27-07-2005 09:34:39

Gracias a todos, voy a intentar estas cosas que me indicais. Os comunicare los resultados

oliviagadel 29-07-2005 19:33:01

gracias, con el siguiente codigo que me habeis indicado funciona perfectamente:

frm:=tquickreport1b.create(self);
try
with frm do begin
qtodo.close;
qtodo.sql.Clear;
qtodo.sql.add(s);
qtodo.open;
preview;
end;
finally frm.Free; end;

Lepe 30-07-2005 14:50:17

Vamos a ahorrarnos una variable :D
Código Delphi [-]
 with tquickreport1b.create(self) do
  try
    qtodo.close;
    qtodo.sql.Clear;
    qtodo.sql.add(s);
    qtodo.open;
    preview;
  finally Free; end;

chau


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