报表生成器在运行时定位控件

时间:2016-07-26 15:58:35

标签: delphi report reportbuilder

我正在使用带有ReportBuilder 10.04的Delphi 2010,并且有一个非常基本的报告,其中包含1个包含2个TppDBText组件的细节带(一个带有粗体文本,另一个带有非粗体)。两者都按照预期在设计时定义的指定位置打印报告。我需要做的是将控件重新定位到尽可能接近另一个控件(包含不同文本长度)的文本末尾。关于如何实现这一点的任何想法?

1 个答案:

答案 0 :(得分:0)

首先,要使此示例正常工作,请设置TppReport的' Units'属于' utScreenUnits'。

我将在此处使用City和State字段作为示例,我的数据集称为' tblCustomers'。

在DetailBand的BeforePrint属性中添加以下代码:

// ppCity is a tppDBText report control
// ppState is a tppDBText report control

ppCity.Width := length(tblCustomersCity.asstring) * 10; //adjust 10 based on font size
ppState.left := ppCity.Left + ppCity.Width + 10; // adjust 10 based on font size

您也可以使用计算字段执行此操作,但由于您的第一个控件是粗体而第二个控件不是粗体,因此上述内容就足够了。

要使用计算字段,只需将City和State合并到一个名为' CityState'的计算字段中,并在数据集的OnCalcs中执行以下操作:

tblCustomerCityState.asstring := tblCustomersCity.asstring +' '+tblCustomersState.asstring;