PDA

Ver la Versión Completa : configurando papersize en Fastreport en tiempo de ejecución


fcios
18-01-2008, 15:23:41
Hola, como puedo setear el papersize antes de llamar al ShowReport ?

por ejemplo lo tengo configurado como Oficio pero al llamar lo quiero colocar en Carta.

muchas gracias

Chris
18-01-2008, 15:51:15
Hola fcios, auque no estoy seguro, intenta este código:

frxReport1.Pages[0].Width := 21.6;
frxReport1.Pages[0].Height := 27.9;


Las medidas expuestas en el código son para tamaño carta y están expresadas en centimetros, que creo que es lo que utiliza fastreport para asignar las dimenciones a las páginas. En "Pages[0]" corresponde a la primera "página plantilla" del reporte. No confundas "página plantilla" con las páginas con las páginas que se generan al final, ya es estas son parte del objeto PreviewPages.

Saludos.

pd: Si mal no recuerdo, FR tiene una propiedad para especificar en que forma especificas el tamaño de páginas (centimetros, pulgadas, etc). Así como también funciones para convertir entre estas medidas. De todos modos ve y revisa el Developers' Guide de FastReports.

jcarteagaf
18-01-2008, 20:32:40
Aqui esta un codigo que encontre en el Programmer's Manual

var
Page: TfrxReportPage;
begin
....
{ La primera pagina del reporte tiene indice [1]. La pagina [0] es la pagina de Datos. }
Page := TfrxReportPage(frxReport1.Pages[1]);
{ Cambiar el tamaño }
Page.PaperSize := DMPAPER_A2;
{ Modificar la orientacion }
Page.Orientation := poLandscape;
....
end;

Espero que sirva

Saludos.

Chris
19-01-2008, 18:20:19
Aqui esta un codigo que encontre en el Programmer's Manual


Código Delphi [-] (http://www.clubdelphi.com/foros/#)var
Page: TfrxReportPage;
begin
....
{ La primera pagina del reporte tiene indice [1]. La pagina [0] es la pagina de Datos. }
Page := TfrxReportPage(frxReport1.Pages[1]);
{ Cambiar el tamaño }
Page.PaperSize := DMPAPER_A2;
{ Modificar la orientacion }
Page.Orientation := poLandscape;
....
end;




Espero que sirva

Saludos.
Tienes razón jcarteagas, no recordaba ese detalle de que la primera (0) es la página de datos. Sin embargo, hay que hacer la aclaración, que esto es a partir de la versión 4 de FR. Antes de esta (<4) la primera página (0) es la primera de la plantilla.

Saludos.

PD.: Tu forma de asignar el tamaño de página es realmente mejor que la mía. Te agradezco que hayas parecido para dar esta alternativa al mal código que poste anteriormente.

fcios
21-01-2008, 17:19:33
Muchas gracias D&W y jcarteagaf

el Page.PaperSize := DMPAPER_A4; funciona sin problema

les comento que también estuve probando de setear la página en el script pero no funciona correctamente ya que si bien los datos caen correctamente en sus respectivas páginas, el tamaño de las paginas sigue sin alterarse,
o sea, al verlo en pantalla muestra primero los datos y luego deja una gran area sin imprimir datos antes de pasar a la sigueinte página

Page1OnBeforePrint(Sender: TfrxComponent);
begin
// Page1.PaperSize:= DMPAPER_A4; // el scrip no tiene estas constantes
Page1.PaperSize:= 256;// 256 = custom page
// lo de arriba cambia el tamaño de la impresión pero la página sigue siendo larga
Page1.PaperWidth := 216.0;
Page1.PaperHeight := 279.0;
end;

Gracias