位置与尺寸

在之前所有的例子中,对象都是按顺序加入到报表中的,只能通过调整排列方式以及相互间隔,来间接影响对象的位置。
有的时候,我们会需要精确定位,例如单据套打。
精确定位的实现很简单,先指定对象的坐标位置,然后再加入到报表中即可。

示例

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