有人知道如何在FastReport中设计报表,以便当用户更改页面方向时,所有列标题和数据自动更新新的页面宽度?我找不到任何锚机制。也许我可以在运行期间这样做?但后来我需要以某种方式捕捉页面方向更改事件。有人可以帮忙吗?
答案 0 :(得分:2)
我不知道问题是什么:默认情况下,条带对页面边框是磁性的,因此它们适合新的页面宽度。
但是,如果您希望根据新页面大小移动和调整frxMemoview对象,则应使用报告的beforeprint事件重新计算并移动或调整报表组件的大小。
如果您有一个可以纵向或横向打印的报告,最简单的方法就是纵向布局和横向布局。您可以在加载报告之前显示printersetupdailog,并根据方向加载纵向或横向布局。
这可能不是最干净的方式。在代码中构建报表运行时是另一种选择,重新计算报表中的每个组件都是另一种选择。但它们涉及大量编码,如果用户选择“Letter”而不是“A4”会怎么样?
此致 张志贤 荷兰的FR经销商。
答案 1 :(得分:0)
你可以:
答案 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;