Ver Mensaje Individual
  #1  
Antiguo 24-02-2010
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Reputación: 20
afxe Va por buen camino
Multiples instancias en Fastreport

Hola amigos.

D7, Firebird 2.0, FastReport 4, aplicacion MDI

Tengo un form base del cual heredan todos los mantenimientos (un grid con un query y los botones insertar, ver, borrar e imprimir). En el botón de imprimir, cargo un reporte en FastReport con los campos que contenga el grid (que se asignaran cuando se herede).
En teoría, el usuario lanza su consulta, se carga el grid y cuando le da a imprimir sale un preview (MDI), puede volver al grid, lanzar otra consulta y volverle dar al preview, para tener 2 listados previsualizados con diferentes datos.

Os muestro parte de mi código del click del boton imprimir:

Código Delphi [-]
 

  nombFic := self.ClassName + '.fr4';
  frxReport1.SaveToFile(NombFic);
  with TFrxReport.Create(nil) do begin
    CreateUniqueName;
    PreviewOptions.MDIChild := True;
    PreviewOptions.Modal := False;
    EngineOptions.DestroyForms := False;
    LoadFromFile(nombFic);
    OnPreview := frxReport1Preview;
    OnClosePreview := frxReport1ClosePreview;
    ShowReport();
  end;

Y funciona bien, puedo lanzar tantos informes de artículos (por ejemplo) como quiera, pero si abro el query de clientes dejando abierto artículos, cuando lanzo el preview de cliente me dice que no encuentra los campos de artículos (parece como si el MasterData se hubiera quedado pillado con los datos del primer informe que se sacó). Si en vez de usar
Código Delphi [-]
  with TFrxReport.Create(nil) do begin
uso
Código Delphi [-]
  with TFrxReport.Create(Self) do begin
me realiza los informes correctamente, pero cuando intento lanzar dos informes desde el mismo mantenimiento me da un error de Component name already exists.

Alguna idea???
Gracias de antemano.
__________________
Amar al mundo apasionadamente.
Responder Con Cita