Delphi中的FastReport页面方向更改

时间:2009-12-29 10:13:17

标签: delphi reporting-services event-handling orientation fastreport

有人知道如何在FastReport中设计报表,以便当用户更改页面方向时,所有列标题和数据自动更新新的页面宽度?我找不到任何锚机制。也许我可以在运行期间这样做?但后来我需要以某种方式捕捉页面方向更改事件。有人可以帮忙吗?

4 个答案:

答案 0 :(得分:2)

我不知道问题是什么:默认情况下,条带对页面边框是磁性的,因此它们适合新的页面宽度。

但是,如果您希望根据新页面大小移动和调整frxMemoview对象,则应使用报告的beforeprint事件重新计算并移动或调整报表组件的大小。

如果您有一个可以纵向或横向打印的报告,最简单的方法就是纵向布局和横向布局。您可以在加载报告之前显示printersetupdailog,并根据方向加载纵向或横向布局。

这可能不是最干净的方式。在代码中构建报表运行时是另一种选择,重新计算报表中的每个组件都是另一种选择。但它们涉及大量编码,如果用户选择“Letter”而不是“A4”会怎么样?

此致 张志贤 荷兰的FR经销商。

答案 1 :(得分:0)

你可以:

  • 使用每个的Align属性 TfrxMemoview ...
  • 使用脚本
  • 制作

答案 2 :(得分:0)

有时需要从代码中修改报告页面设置(例如,修改纸张对齐或大小)。 TfrxReportPage类包含以下属性,用于定义页面的大小:

   property Orientation: TPrinterOrientation default poPortrait;

   property PaperWidth: Extended;

   property PaperHeight: Extended;

   property PaperSize: Integer;

«PaperSize»属性设置纸张格式。这是Windows.pas中定义的标准值之一(例如,DMPAPER_A4)。如果指定了此属性的值,则FastReport会自动填充«PaperWidth»和«PaperHeight»属性(纸张大小,以毫米为单位)。将DMPAPER_USER(或256)值设置为格式,意味着设置了自定义纸张大小。在这种情况下,应手动填充«PaperWidth»和«PaperHeight»属性。

以下示例显示了如何修改第一页的参数(假设我们已经有报告):

帕斯卡:

var
Page: TfrxReportPage; 
{ the first report’s page has [1] index. [0] is the Data page. } 
Page := TfrxReportPage(frxReport1.Pages[1]);  
{ modify the size } 
Page.PaperSize := DMPAPER_A2;   
{ modify the paper orientation }  
Page.Orientation := poLandscape;

C ++:

TfrxReportPage * Page;
// the first report’s page has [1] index. [0] is the Data page. 
Page = (TfrxReportPage *)frxReport1.Pages[1];
// modify the size 
Page->PaperSize = DMPAPER_A2;
// modify the paper orientation 
Page->Orientation = poLandscape;

答案 3 :(得分:0)

BeginDoc我可以使用(frxPrincipal.FindObject('Page1') as TfrxReportPage).PaperSize := DMPAPER_A4;

从中获取属性