PDA

Ver la Versión Completa : MDIChild y QuickRep


Marcela
11-10-2006, 00:19:20
:o Tengo una forma desde la cual debo llamar un reporte que esta realizado en QuicRep. Cuando a la forma de donde debo llamar el reporte le doy fsMDIChild no me aparece bien el reporte, aparece en forma de diseño sin mostrarme los datos, Por favor como debo llamar el reporte.


En una forma normal, lo hago así:
Try
Rep_FormasPerfil:= TRep_FormasPerfil.create(self);
Rep_FormasPerfil.Qcr_Pagina.Preview;
Rep_FormasPerfil.free;
Except
On E:Exception do
MessageDlg('No se puede Imprimir el reporte de Perfil de la forma' + E.ClassName + ' ' + E.Message, mtError, [mbOk], 0);

Pero en una forma hija no se como hacerlo????????????:o Gracias

Caral
11-10-2006, 00:28:18
Hola Marcela
Supongo que el qreport habra algun query u otro que contenga la informacion que deseas colocar en el reporte, por que no muestras un poco el codigo que haces, ya que el que muestras solo llama al reporte, como quieres que te de la informacion si no la llamas, creo que falta informacion para poder opinar al respecto.
Saludos

Marcela
11-10-2006, 00:35:00
Try
Rep_FormasPerfil:= TRep_FormasPerfil.create(self);
Rep_FormasPerfil.Query.Close;
Rep_FormasPerfil.Query.Open;
Rep_FormasPerfil.Qcr_Pagina.Preview;
Rep_FormasPerfil.free;
Except
On E:Exception do
MessageDlg('No se puede Imprimir el reporte de Perfil de la forma' + E.ClassName + ' ' + E.Message, mtError, [mbOk], 0);

En el reporte creo un query basico, nada mas.

Caral
11-10-2006, 00:44:35
Bueno Marcela
Para empezar, señor,:D La de la foto es mi hija, ademas guapisima::D
Este es un codigo que uso para llamar a un reporte, en el uso un RadioGroup para definir si quiero o no imprimirlo, bueno este no es el caso, es nada mas para que te des cuenta de la sintaxis que uso, tal vez te ayude en algo.

try
QRVentasPorFecha:=TQRVentasPorFecha.Create(self);
QRVentasPorFecha.ADOQuery1.SQL.Add(' AND Fecha >= '+DateToStr(DTP1.Date)+' AND Fecha <= '+DateToStr(DTP2.Date));
QRVentasPorFecha.ADOQuery1.SQL.Add(' ORDER BY Fecha, Factura.CodFactura;');
QRVentasPorFecha.ADOQuery1.Open;
If RadioGroup1.ItemIndex = 0 then QRVentasPorFecha.Print
else QRVentasPorFecha.Preview;
finally
QRVentasPorFecha.Free;
end; //try
Saludos

Lepe
11-10-2006, 16:18:23
Hay 2 cosas que son distintas:
- Una es la ventana donde tienes el QuickReport
- Otra muy distinta es llamar a QR.Preview; qr.previewModal; qr.PreviewModaless; etc. la ventana del Preview, es una totalmente distinta.

Por Restricciones de delphi, cuando una ventana es MdiChicld, al crearla, automáticamente se muestra su contenido, es decir, Delphi hace internamente un Rep_FormasPerfil.Show; así que no vas a poder hacer lo que quieres.

Como evitarlo:
- En Delphi, pasamos olimpicamente de tener la ventana Rep_FormasPerfil, es decir File -> New ->other -> QuickReport. Así creamos un QuickReport en tiempo de diseño sin estar en ninguna ventana metida. Ahora ya podemos crear el QuikReport y hacer un Preview.... pero la ventana del preview no es mdichild ¡¡cachis!!

- Tal y como lo tienes ahora mismo. La ventana Rep_FormasPerfil la dejas con su estilo fsNormal, y como veo que la Ventana del Preview la quieres MDIChild, pues tienes que hacer un override de esa ventana del Preview. En este hilo (http://www.clubdelphi.com/foros/showthread.php?t=9693&highlight=Tprevi)Snake habla de ello. Tienes que crear un Form nuevo, meter dentro un TQRPreview que precisamente es la ventana que muestra el folio tal cual se va a imprimir y por último implementar los métodos CreatePreview (y creo que se me queda algo en el tintero... pero no sé que es).

Saludos