PDA

Ver la Versión Completa : mostrar informes


oliviagadel
26-07-2005, 20:34:02
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:


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

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

chau