报表的编辑
# 报表的编辑
已创建好的报表也可以进行编辑操作,我们把报表编辑页面按功能的不同分为四大区域,从上至下依次为主菜单功能区;报表主字段编辑按钮及文本编辑按钮功能区;报表明细功能区;主报表与子报表切换区。各部份功能如下:

# 1. 主菜单功能区
主菜单功能区上方有文档、编辑、查看、报表这四个下拉列表。
File(文档): 点击[File(文档)]
,弹出的下拉列表中如下功能:新建一张报表,打开旧的报表,关闭当前报表;保存报表以及页面设置和打印功能;
Edit(编辑): [Edit(编辑)]
下拉列表中有剪切,复制,删除等功能;
View(查看): [View(查看)]
下拉列表中有工具栏、尺槼、格子选项、显示数据等功能,在报表编辑页面中,有很多编辑按钮功能并没有以系统默认方式显示出来,这就需要我们手动开启,例如在报表中有些字段为了美观要让它全部靠左对齐,或者居中对齐,这就要用到靠向或间距工具,我们点击View
-Toolbars
-Align or Space
,靠向或间距字段前就被勾选,此时这些工具就会在报表主字段编辑按钮及文本编辑按钮功能区中显示出来。


Report(报表): [Report(报表)]
下拉列表中常用到的功能有标题,总结,页眉,页脚。标题就是报表的抬头区域,通常将公司名称,联系方式,地址,报表名称等数据创建于此区域中;用户可以在页眉、组首、细节、组尾、页脚部份创建单据的产品明细数据,每张单据中只能有一个页眉,页脚,页眉与页脚中又可以新建多个组,每个组又分为组首、细节、组尾,我们在组首及细节部份创建单据的产品明细数据,在组尾部分创建客户基本数据及小计项,注意小计项只能放在组尾,小计项的数值带出字段要点击[计算字段]按钮,它会显示该笔单据中的所有交易金额之和。通常情况下不用组也可以完成一张报表,但是如果要制作一些稍复杂的报表,如按照所需类别进行汇总的一些报表就需要使用到组,组的好处是可以更加精细地按照条件进行索引汇总,新建组时点击[Report(报表)]
-[Groups(组)]
,荧幕弹出新建组的窗口,在组旁的下拉列表中选择索引字段,即该组是以哪个字段来排序,各字段对应的名称请参照字段对照手册。


Data(数据): 点击[Data(数据)]
按钮可以用SQL语言新建查找语句,依据用户所需制定报表;
Calc: 点击[Calc]
按钮可以用Pascal语言自己编写程序,进行数值计算;
Design(设计): 进入编辑页面的默认选项就是设计页面,报表主体字段的添加,设计以及编辑都在该页面内实现;
Preview(预览): 点击[Preview(预览)]
按钮可以预览报表添加或编辑的效果。
# 2. 报表主字段编辑按钮及文本编辑按钮功能区
如上图为报表主字段编辑按钮及文本编辑按钮功能区,上排从左至右依次为:
图标 | 名称 | 説明 |
---|---|---|
选择物件按钮 | 此字段系统默认为按下状态,对报表中的字段框或文本框进行选择时,需要将此按钮按下才可以选取 | |
标签按钮 | 添加字段名称,如序号,产品名称,产品编号等文本说明字段时请按下此按钮 | |
备注按钮 | 备注按钮用与添加备注文本,手工输入 | |
Rict Text按钮 | 与备注按钮功能相同,用于添加备注说明文本,手工输入 | |
系统变量按钮 | 用于添加系统缺省的系统变量,如时间,页数等 | |
变量按钮 | 用于手工添加序号,时间,页数等变量 | |
图案按钮 | 用于添加图案 | |
图形按钮 | 用于添加矩形,圆形,三角形等图形 | |
线条按钮 | 用于添加线条 | |
条码按钮 | 用于添加条码 | |
二维码按钮 | 用于添加二维码 | |
文本字段按钮 | 与标签功能类似,只是字段框中的内容来自数据库,而非手工输入 | |
备注字段按钮 | 与备注按钮功能类似,只是字段框中的内容来自数据库,而非手工输入 | |
DB Rict Text按钮 | 与Rict Text功能类似,只是字段框中的内容来自数据库,而非手工输入 | |
计算字段按钮 | 添加小计,合计项字段时要点击此按钮才可计算 | |
图案字段按钮 | 添加图案字段,点此按钮 | |
条码字段按钮 | 添加条码字段,点此按钮 | |
二维码字段按钮 | 添加二维码字段,点此按钮 | |
区域按钮 | 添加区域字段,点此按钮 | |
子报表按钮 | 创建子报表时,点此按钮 | |
隔页符号按钮 | 使用此按钮创建隔页符号 | |
绘图区域按钮 | 使用此按钮创建一个自定义的绘图区域 | |
表格绘图按钮 | 使用此按钮创建一个表格 | |
Google Map 按钮 | 使用此按钮创建一个 Google Map区域 | |
PDF显示按钮 | 使用此按钮创建一个PDF显示的区域 |
文本编辑按钮与通常办公软件中的文本按钮功能相同,如对文本进行加粗,加夏划线,左右对齐,变换文本颜色等,在此就不赘述了。
在上文中我们开启了靠向及间距工具,这里面的工具在报表排版时会经常用到。

通常我们使用这些工具将报表中的字段左右对齐或是上下对齐,例如要将一列上下没有对齐的字段靠左对齐就要先用鼠标左键选中这些字段 ,再点击靠左对齐的按钮,这些字段即以最左边的字段为准,全部向左对齐。

图标 | 説明 |
---|---|
靠左排列 | |
垂直靠中排列 | |
靠右排列 | |
靠顶排列 | |
水准靠中排列 | |
靠底排列 | |
水准等距排列 | |
垂直等距排列 | |
靠到数据带的中间(水准) | |
靠到数据带的中间(垂直) |
# 2.1. 报表明细功能
我们在列印出来的报表中看到的所有可见部份都位于报表明细功能区内,报表明细功能区中又可以细分为标题,页眉,组首,细节,组尾,页脚,总结等。
报表抬头部份,如公司名称,联系方式,联系人,报表名称放置于标题区域内,报表明细数据,如出货产品名称,数量,单价,合计金额等都位可新建于页眉,页脚,组首,细节,组尾等区域内;总结区域中通常放置表尾条文,签名,备注文本或是图档,实际列印出来的报表中,它所处的位置在细节与页脚区域之间。
# 2.2. 主报表与子报表切换区
以我们创建的这张销售出货单为例,报表明细主体部分可分位抬头部门,出货数据明细部分,账款科目三部份,其中抬头部份创建在主报表中,另外新建两个子报表,分别放置出货明细与账款科目部份。
新建子报表时点击工具栏内的子报表[SubReport]
按钮 ,此时在页面底部的主报表与子报表切换区域内就会多出一个选择按钮,如下图红色区域内的按钮就是新建的子报表按钮,如果您要编辑主报表或其他子报表时可点击此处的按钮进行切换。
主报表只有一个,依据报表结构您可以创建多个子报表,打印时主报表位于页面的最上方,然后依次为各个子报表,您可以点击预览按钮浏览效果。
# 3. 报表编辑使用范例
用户在实际使用报表过程中,会用到一些常用的编辑功能,我们还是以单据别出货明细表为例讲解如何使用:
# 3.1. 如何更该字段说明与数据显示字段
首先进入单据别出货明细表的编辑页面,我们将报表表头部份的公司地址换成公司的e-mail。

点击公司在左上方显示两个下拉列表,在靠左边的下拉列表中点击Scompany,在靠右边的下拉列表中点击email,此时公司的email数据便从数据库中提取至选中的字段里了,需要注意的是如果提取数据库中公司的系统数据,如公司名称、公司编号、公司地址、电话、传真等信息需要选中Scompany这个选项,然后再从它右边的下拉列表中提取对应的明细项。


# 3.2. 如何修改明细字段的内容
单据别出货明表的明细字段内容在主报表之下的子报表中,首先进入该子报表编辑页面,如下图:

下面我们将明细字段中的业务员字段改为出货日期字段,用鼠标选中业务员的字段,如图所示,在左上方的字段中将业务员手工更改为出货日期,此时报表字段中的业务员也变成了出货日期:

接下来我们用鼠标点击一下出货日期下方的字段,即原来的业务员编号字段,我们将这里面的内容更改为出货日期,这些都是从数据库中提取的,选中这个字段後,左上角工具栏处显示了两个下拉列表,在靠左的下拉列表中点击Query选项,在靠右的下拉列表中点击shipdate选项,可以看到原来的业务员编号字段中的内容变成了出货日期,这些都是从数据库中自动提取出来的。

# 3.3. 如何在报表中印出图片
在报表中也可以加入图片,如公司logo,假设我们加在表头部分,首先进入报表编辑状态下,在主报表中点击添加图片的按钮。

然后在页面适当位置点一下鼠标左键,出现一个字段框,在字段框中点一下鼠标右键,从弹出选单中点击图象,这时又弹出一个窗口,从您的电脑中选择路径找到放在报表中的图片,选择确认后即可显示于报表中 ,如果图片与显示区域的尺寸不合,需要调整Stretch 属性。用户还可以点击预览按钮来浏览 。






# 3.4. 如何在明细标题显示阴影
为了使报表页面更加美观,我们可以在明细标题栏中加入阴影效果,以单据别出货单为例,进入编辑页面,我们给公司名称加个阴影,点击报表中的公司名称字段,再点击工具栏右侧的Highlight Color
反白颜色按钮,荧幕中弹出一个颜色选取窗口,选择阴影色,明细标题即显示为阴影。



# 4. 如何写报表公式
不同的报表样式各不一样,有复杂的报表,也有简单的报表。为了使报表适应不同的须求,报表设计器提供了一些简单的函数。
# 4.1. 使用报表公式的流程
首先将界面切换为 Events,然后选择要设置的标签。

假设在 OnGetText
中使用 FormateMoney
实现数字的英文大写功能。

procedure Label20OnGetText(var Text: String);
begin
Text := FormateMoney(Text);
end;
2
3
4
5
6

使用 Compile,当变成绿色时,表示程序编写无误。
可运行预览查看结果。
# 4.2. 数字的英文大写
数字的英文大写可查看报表公式流程中给出的例子。
# 4.3. 数字的中文大写
中文大写请使用 SyRMB
函数。
procedure Label20OnGetText(var Text: String);
begin
Text := SyRMB(Text);
end;
2
3
4
# 4.4. 两个字符相连
两个字符相连可使用 +
符号进行拼接。
procedure Label20OnGetText(var Text: String);
begin
Text := Text + ' ' + Scompany['companyname'];
end;
2
3
4
# 4.5. 两个数字相乘并与另一个字符串相连
数字相乘可使用 *
符号来表示,相乘要求使用数值类型的变量,且要与字符串相连的话需要将相乘后的结果转换为字符串格式floattostr
。转换的示例如下:
procedure Label20OnGetText(var Text: String);
begin
Text := FloatToStr(Cds_detail['armoredqty']*Cds_detail['packqty']*Cds_detail['boxqty'])+' '+Cds_detail['whunit'];
end;
2
3
4
# 4.6. 序号
如需要使用公式生成序号,需要使用Variable,创建OnCalc
事件:
procedure Variable1OnCalc(var Value: Variant);
begin
Value := Value+1;
end;
2
3
4
注意
选择Variable1时,类型必须设置为Integer。

# 4.7. 数字小位格式化
以下是格式化的一些例子:
FormatFloat('#,0.00;-#,0.00', 1234.084); //结果是:1234.08
FormatFloat('#,0.0;-#,0.0', 1234.084); //结果是:1234.1
FormatFloat('#,0;-#,0', 1234.084); //结果是:1234
2
3
# 4.8. 数字转字符串
FloatToStr(1235.43); //转换爲 1235.43的字符串,可用于标签显示
# 4.9. 字符转数字
StrToFloat(1235.43); //转换爲 1235.43的字符串为数字
# 4.10. 截取字符串
Copy('abc',1,1); //结果是:a
Copy('abc',1,2); //结果是:ab
Copy('abc',2,2); //结果是:bc
2
3