PDA

Ver la Versión Completa : Prepare del QReport


lbidi
29-07-2008, 20:07:45
Hola, estimado foro.

Resulta que tengo un dbgrid el cual quiero imprimir con un QR. En el caso que la grilla tiene pocos registros, super, anda barbaro, pero en el caso que la grilla tengo muchos registros, y/o el reporte termine siendo de varias paginas, mas de 70, es que me veo en la necesidad de que no se pueda imprimir el reporte hasta que termine de cargar todo en una preview que hace en primera instancia.

A veces pasa que el usuario es muy "impaciente" :mad: y le da al boton de imprimir antes que haya terminado de cargar, entonces menudo lio.

He encontrado que haciendo un prepare antes del preview, se soluciona xq ya estan todos los registros procesados y el preview es rapido.
Tambien note que al procesar los registros, la grilla "tintineaba" por la cual le
hice un disablecontrols y se soluciono, pero tambien sale el preview aun antes
de haber terminado de prepararlo y contar todos los registros.

Ahora mi pregunta.. esta bien hecho asi?? Porque igual me sale el preview antes de haber procesado todo?? Se puede deshabilitar el boton de print
del QR hasta que haya terminado de procesar ??

Espero haberme explicado bien..

Gracias

Leonardo

coso
29-07-2008, 20:14:56
Hola, desde la ayuda de delphi

property Available : Boolean (read only)

Applies to

TCustomQuickRep, TQuickRep

Description

Use the Available property if you need to know if it's safe to call a report's Preview or Print method. If the report is already active Available will return False and the report cannot run. If Available is True it's ok to run the report.


nunca la he usado, pero estara la solucion usandola. (por ejemplo, imprimirbtn.Enabled := QuickRep1.Avaible; ) saludos

lbidi
29-07-2008, 21:26:07
Hola, coso. Gracias por responder antes que nada.

Ese codigo que pusistes en mi caso no funcionaria porque el boton de imprimir , es el que crea el reporte , lo prepara, lo imprime y lo destruye.

Algo asi es lo que tengo..


Application.CreateForm(Tf_Reporte, f_Reporte);
qrydatos.DisableControls;
f_reporte.RepListas.Prepare;
while not f_reporte.RepListas.Available do
begin
end;
f_reporte.RepListas.Preview;
qrydatos.EnableControls;


No se me ocurrio otra manera de utilizar la propiedad "available".
Y aun asi, se muestra el preview antes de terminar de procesar todos los
registros.

Cualquier monedita sirve.. :)

Gracias

ctrl_attack
11-01-2009, 21:15:55
Hola pues no se si sea la mejor manera pero se me ocurrio, que si usaras un progressbar, que este en otro formulario, y lo mostraras en lo que se prepara el form donde esta el quick report, pues no seria mucho lio, aunque solo es una idea a lo mejor funcione, yo tuve un problema, con una aplicacion qu demoraba mucho en mostrar un form, asi que le hice esto

form_espere.Show;
form_espere.Update;
form_espere.progressbar1.StepIt;
Form_amostrar := TForm_amostrar.Create(Application);
form_espere.progressbar1.StepIt;
Form_amostrar.Show;
form_espere.progressbar1.StepIt;
Form_amostrar.Update;
form_espere.progressbar1.StepIt;
form_espere.close;

yo asi lo hice con un form, supongo que no habra muchos problemas en adaptarlo al qreport, intentalo pero con el prepare, para que asi muestre el form donde pongas el progressbar, y mientras se valla cargando el prepare, valla cargando el progressbar, cuando finalize ya le pones el Preview;

Bueno amigo es solo una idea, pero si la llevas a cabo y la pruebas, por lo menos asi sabremos si funciona o no, :D

Kipow
12-01-2009, 02:48:34
try
qryDatos.DisableControls;
imprimirbtn.enabled := false;
Application.CreateForm(Tf_Reporte, f_Reporte);
f_reporte.RepListas.Prepare;
f_reporte.RepListas.Preview;
finally
qrydatos.EnableControls;
imprimirbtn.enabled := true;
end;



:)

Kipow
12-01-2009, 02:49:48
post repetido.

ctrl_attack
12-01-2009, 02:52:39
con eso se deshabilitan los controles del preview??

o los del form de donde se llama el preview?

Kipow
12-01-2009, 03:09:59
con eso se deshabilitan los controles del preview??

o los del form de donde se llama el preview?

Los del form que llama al preview, los del preview solo que tengas un preview a medida (custom preview). el unico boton que hay que deshabilitar es el que genera el preview (imprimebtn)