Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   Listados en FMX windows / Android (https://www.clubdelphi.com/foros/showthread.php?t=93211)

turbopascual5.0 17-06-2018 20:37:58

Listados en FMX windows / Android
 
Hola a todo@s.
He desarrollado una apliacion en fmx (Tokio) en la que en en windows quería que existiese la posibilidad de imprimir un reporte.
Los componentes de reporte son fast report FMX, un TfrxDBDataset y un TfrxReport.

He probado a poner los componentes en diseño y en el uses con {$IFDEF MSWINDOWS} {$ENDIF MSWINDOWS} limitar la compilación a windows, pero automáticamente incluye las units en el apartado de android {$IFDEF ANDROID} {$ENDIF ANDROID} y en android da error al compilar.

Luego he probado en la vista windows a configurar el reporte y grabarlo en un fichero. El componente de conexión es frxDBDataset1, que es el que usa el report.

Y he borrado los componentes para crearlos en tiempo de ejecución.
Código Delphi [-]
procedure THeaderFooterForm.TMSFMXSpeedButton11Click(Sender: TObject); 
  var reporte: string; 
{$IFDEF MSWINDOWS} 
  frxReport1: TfrxReport; 
  frxDBDataset1: TfrxDBDataset; 
  DataPage: TfrxDataPage; 
{$ENDIF MSWINDOWS} 
begin 
{$IFDEF MSWINDOWS} 
  uniquery14.Active; 
  uniquery14.execsql; 
  frxDBDataset1:= TfrxDBDataset.Create(Self); 
  frxDBDataset1.DataSet:=uniquery14; 
  reporte:= Tpath.Combine(Tpath.GetDocumentsPath, 'report.fr3'); 
  frxReport1:= TfrxReport.Create(Self); 
  frxReport1.Clear; 
  frxReport1.DataSets.Add(frxDBDataset1); 
  frxReport1.LoadFromFile(reporte); 
  frxReport1.PrepareReport(); 
  frxReport1.ShowReport(); 
  frxReport1.Free; 
  frxDBDataset1.Free; 
{$ENDIF MSWINDOWS} 
end;
Y en el uses poner solo las units en el acotado para windows.

Así sí compila en windows , pero al ejecutar da un error de que frxDBDataset1 no existe.

Alguna idea?, o algún método para poder hacerlo.
Gracias de antemano por vuestro tiempo.

Neftali [Germán.Estévez] 18-06-2018 09:27:27

El problema es que si has puesto los componentes en diseño, no sólo se encuentrasn en el PAS, sino también en el DFM (Vista).
Deberías probar a eliminarlos en diseño y crearlos por código de forma dinámica. En ese caso sí puedes colocar todo el código dentro de directivas de compilación.

turbopascual5.0 18-06-2018 21:20:56

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 527148)
El problema es que si has puesto los componentes en diseño, no sólo se encuentrasn en el PAS, sino también en el DFM (Vista).
Deberías probar a eliminarlos en diseño y crearlos por código de forma dinámica. En ese caso sí puedes colocar todo el código dentro de directivas de compilación.


Hola Germán. Gracias por tu indicación. Sí, quitándolos y creándolos en por código puedo colocar el código dentro de las directivas y funciona.


El "problema" me lo encuentro en que grabando la definición del reporte, al leerla del fichero y ejecutarlo da mensaje de error que frxDBDataset1 no existe, aunque lo haya creado por código.


En la ayuda de Fast Report hay un ejemplo de definir todo el report por código.......... me pondré a eso.


La franja horaria es GMT +2. Ahora son las 15:21:25.

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