位置与尺寸
在之前所有的例子中,对象都是按顺序加入到报表中的,只能通过调整排列方式以及相互间隔,来间接影响对象的位置。
有的时候,我们会需要精确定位,例如单据套打。
精确定位的实现很简单,先指定对象的坐标位置,然后再加入到报表中即可。
示例
Dim
doc
As New PrintDoc()
'定义一个报表
Dim rt As
prt.RenderText '定义一个文本对象
For i AS
integer =
1
To
5
rt = New prt.RenderText()
'创建文本对象
rt.Text = "Hello
Foxtable " & i
'设置文本对象的内容
rt.Width = "Auto"
'自动设置宽度
rt.X = i * 10
+ 20
'指定水平位置
rt.y = i * 10
+ 20
'指定垂直位置
rt.Style.Borders.All = New prt.Linedef(0.3,
Color.Red) '设置边框
doc.Body.Children.Add(rt)
'将文本对象加入到报表
Next
doc.Preview() '预览
执行结果:
坐标的单位是毫米,原点为左上角。
需要注意的是左边位置必须大于页边距,否则无法显示和打印。
关于页面设置,后面会有专门的章节讲述。
详解位置与尺寸
前面已经提到过,长度、宽度的单位不是数值型,其实坐标位置也不是数值型。
如果使用数值型的数据,那么单位是毫米,例如:
rt.Width =
25
'宽度为25毫米
你也可以使用表达式来设置,例如要根据内容自动调整宽度,可以这样设置:
rt.Width =
"Auto"
'自动设置宽度
你可以在表达式中使用以下对象:
对象 |
说明 |
Parent |
表示对象所在的容器,通常指的就是页面的可打印区域,如果对象位于表格中,那么容器就是对象所处的单元格,此外对象RenderArea也是容器,我们会专门介绍它。
Parent的属性:
Parent.Width: 容器宽度
Parent.Height:容器高度 |
Prev |
表示上一个对象。
Prev的属性:
Prev.Left: 上一个对象的左边位置
Prev.Right: 上一个对象的右边位置
Prev.Top: 上一个对象顶端位置
Prev.Bottom: 上一个对象的底边位置
Prev.Width: 上一对象的宽度
Prev.Height: 上一个对象的高度 |
你可以使用百分比来设置尺寸:
rt.Width =
"20%Parent.Width" '对象宽度为页面的20%
你还可以进行加减:
rt.Width =
"40%Parent.Width
+ 5" '宽度为页面宽度的40%加上5毫米。
再例如:
rt.y =
"Prev.Bottom + 5"
'垂直位置为上一对象的底边之下5毫米
示例
Dim
doc
As New PrintDoc
'定义一个报表
Dim rt As
New prt.RenderText '定义一个文本对象
Dim s As
String
s = "新华网绵阳5月16日电(记者孙承斌)16日上午,在四川抗震救灾的"
s = s &
"危急时刻,中共中央总书记、国家主席、中央军委主席胡锦涛乘飞机赶往四川"
s = s &
"省地震灾区,慰问灾区干部群众,看望奋战在抗震救灾第一线的部队官兵、公"
s = s & "安民警和医护人员,指导抗震救灾工作。"
rt.Text = "胡锦涛抵达四川绵阳慰问"
'设置文本对象的内容
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center
'水平居中
rt.Style.FontBold = True
'字体加粗
rt.Style.FontSize = 16
'字体大小为16磅
doc.Body.Children.Add(rt) '将文本对象加入到报表
rt = New prt.RenderText '创建另一个文本对象
rt.Text = s '设置文本内容
rt.y = "Prev.Bottom + 5"
'设置垂直位置
doc.Body.Children.Add(rt) '将文本对象加入到报表
doc.Preview() '预览
执行结果:
下面的代码:
rt.y =
"Prev.Bottom + 5"
'设置垂直位置
等同于:
rt.Style.Spacing.Top = 5
虽然用Spacing属性一样可以实现,但是直接指定坐标位置,对于精确定位来说更灵活。
本页地址:http://www.foxtable.com/webhelp/topics/1177.htm