主页 > 解决方案 > 康虎云套打方案 > 康虎使用手册 > 脚本 >
联系方式Contact
地 址:广东省广州市白云区太和镇龙归龙兴西路14号云天大厦 公司名称:广州众谛信息科技有限公司 售前咨询:177-7459-3039 售后技术:020-22043323 咨询Q Q:124412206 邮 箱:info@zodioo.com

Using the “Engine” object

阅读:

前面说过,“Engine”对象代表用来管理报表构建的报表引擎。可以通过引擎的属性和方法来处理Band的渲染。首先讲解一点理论.

 

下图显示了报表页的各个尺寸。

_img242

 

“PaperWidth”和“PaperHeight”属性是页面的物理尺寸,选择页面后即可在对象监视器中看到这两个属性。A4纸的大小是210 x 297mm.

 

“PageWidth”和“PageHeight”是可打印区域的尺寸,通常小于纸张的尺寸。可打印区域的大小取决于报表页的四个属性:“LeftMargin”, “TopMargin”, “RightMargin”和“BottomMargin”。“Engine.PageWidth”和“Engine.PageHeight”两个方法返回以像素计的可打印区域大小。

 

“FreeSpace”属性是页面空白区域的高度。如果页面中有“Page Footer”Band,则“FreeSpace”等于“PageHeight”减去“Page Footer”的高。通过“Engine.FreeSpace”方法返回以像素计的空白区域调试。

 

报表页面是如何构建的呢?只要页面上有足够的空间,报表引擎就会在该页面上显示band的内容,当没有足够空间时,则打印完页尾(如果有页尾的话)再创建一个新页。当前的打印位置通过“Engine.CurX”和“Engine.CurY”获得。在打印下一Band后,CurY自动增加,但如果创建了一个新页面,则“CurY”重置为“0”,打印多列报表地“CurX”会相应改变。

 

“Engine.CurX”和“Engine.CurY”不仅可读,还可写,这就意味着可以通过增减这两个值来移动Band。例如有下面这样的报表:

 

_img243

 

可以在Band的“OnBeforePrint”事件以脚本控制显示为如下效果:

 

_img244

 

 

Band的“OnBeforePrint”事件代码如下:

 

PascalScript:

 

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);

begin

 Engine.CurX := Engine.CurX + 5;

end;

 

C++ Script:

 

void MasterData1OnBeforePrint(TfrxComponent Sender)

{

 Engine.CurX = Engine.CurX + 5;

}

 

也可以通过改变“CurY”的值达到使Band重叠的效果:

 

_img245

 

脚本如下:

 

PascalScript:

 

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);

begin

 Engine.CurY := Engine.CurY - 15;

end;

 

C++ Script:

 

void MasterData1OnBeforePrint(TfrxComponent Sender)

{

 Engine.CurY = Engine.CurY - 15;

}

 

“Engine.NewPage”方法可以在报表的任意位置插入新页,后续的内容从新页面顶部继续输出。下面的例子显示了每两条记录后就插入一个新页:

 

PascalScript:

 

procedure MasterData1OnAfterPrint(Sender: TfrxComponent);

begin

if <Line> = 2 then

   Engine.NewPage;

end;

 

C++ Script:

 

void MasterData1OnAfterPrint(TfrxComponent Sender)

{

if (<Line> == 2)

   Engine.NewPage();

}

 

以上代码中我们使用了“OnAfterPrint”事件(也就是说在Band打印完成之后)。另外,系统变量“Line”返回的是记录的序号。

 

方法“Engine.NewColumn”在多列报表中插入一个列中断,如果页面没有空白可以显示新列,则会创建一个新页面。

 

康虎云报表官网:http://www.khcloud.net

评论

发表评论

 
QQ在线咨询
售前咨询热线
177-7459-3039
售后服务热线
020-22043323
返回顶部