单元格的容器

我们已经提到过,一个单元格就是一个容器,单元格有一个Area属性,可以返回单元格的容器(RenderArea),既然是容器,肯定可以容纳多个对象。

示例

Dim doc As New PrintDoc
Dim
rt As New prt.RenderTable
Dim
ra As prt.RenderArea
Dim
rm As prt.RenderImage
Dim
rx As prt.RenderText
rt.Style.GridLines.All = New prt.LineDef
rt.CellStyle.Spacing.All =
1 '单元格内容和网格线距离1毫米
rt.Cols.Count =
3 '总列数为3
For
i As Integer = 0 To 3
    ra = rt.Cells(i,
0).Area '引用单元格的容器
    rm = New prt.RenderImage
'创建一个图片
    rx = New prt.RenderText
'创建一个文本
    ra.Stacking = prt.StackingRulesEnum.BlockLeftToRight
'排列方式改为从左到右
    '设置图片对象

    rm.Image = GetImage(
"Can.ico")
    rm.Style.Spacing.Right =
2 '距离右边的对象2毫米
    '设置文本对象

    rx.Text =
"加拿大"
    rx.Height =
"Prev.Height" 'rx的高度等于图片对象rm的高度
    rx.Style.TextAlignVert = prt.AlignVertEnum.Center
'文本垂直居中
    '设置RenderArea,并将文本和图片加入到RenderArea

    ra.Children.Add(rm)
'加入图片到RenderArea中
    ra.Children.Add(rx)
'加入文本到RenderArea中
Next

doc.Body.Children.Add(rt)
Doc.Preview()

执行结果

需要特别留意的的是,容器的高度等于最高子对象的高度,也就是图片的高度,为了让文本对象的内容能够在单元格中垂直居中,必须将文本对象的高度设置为图片对象的高度:

rx.Height = "Prev.Height" 'rx的高度等于图片对象rm的高度

你可以删除这一行,体会一下该行代码所带来的不同。

 


本页地址:http://www.foxtable.com/webhelp/topics/1220.htm