以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]表格居中  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2635)

--  作者:狐哥
--  发布时间:2009/4/29 14:57:00
--  [求助]表格居中
Dim doc As New PrintDoc \'定义一个报表
Dim
rt As New prt.RenderTable() \'定义一个表格对象
???

能否帮我看一下如何将表格居中,不是表格内容居中.
因表格默认是靠左边的.
感谢.
--  作者:狐狸爸爸
--  发布时间:2009/4/29 15:09:00
--  
Dim doc As New PrintDoc \'定义一个报表
Dim rt As New prt.RenderTable() \'定义一个表格对象
doc.Body.Children.Add(rt) \'将表格对象加入到报表中
rt.width = 60
rt.x = "50%Parent.Width"
\'下面的代码向表格中填入值
For r As integer = 0 to 5
    For c As integer = 0 to 5
        dim rx As New prt.RenderText \'定义一个文本对象
        rx.Text = r & "," & c \'为文本对象设置内容
        rt.Cells(r, c).RenderObject = rx \'将文本对象放置在单元格中
    Next
Next
doc.Preview() \'预览报表

--  作者:yangming
--  发布时间:2009/4/29 15:11:00
--  
楼主的意思是说此表格在页面中居中?
--  作者:狐哥
--  发布时间:2009/4/29 15:21:00
--  
以下是引用yangming在2009-4-29 15:11:00的发言:
楼主的意思是说此表格在页面中居中?

呵,是呢,横向居中.
狐爸的代码正在试,


--  作者:狐哥
--  发布时间:2009/4/29 15:45:00
--  
rt.width = 60
rt.x = "50%Parent.Width"
这个不好,还不如自己调试,
tr.x = 30

因表格的行数是随TABLE动态的,如设置了TR.X,则下一个Rrendertable()要设置TOP.比如:

Dim doc As New PrintDoc \'定义一个报表对象
Doc.PageSetting.LeftMargin = 10 \'设置左边距
Doc.PageSetting.RightMargin = 10 \'设置右边距
Doc.PageSetting.TopMargin = 20 \'设置上边距
Doc.PageSetting.BottomMargin = 20 \'设置下边距


Dim rm As New prt.RenderImage \'定义一个图片对象
rm.Image = GetImage("logo.jpg") \'设置图片
rm.Width = "Parent.Width" \'宽度等于页面宽度
rm.Height = "Auto" \'高度由图片大小自动决定
rm.Style.ImageAlign.StretchHorz = False \'禁止图片水平拉伸
rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center \'居中显示

Dim rs As New prt.RenderText() \'定义一个文本对象
rs.Text = "委托书"
rs.Style.Font = New Font("ARIAL", 18 , FontStyle.Bold) \'设置文本对象的字体
rs.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'文本内容水平居中
doc.Body.Children.Add(rm) \'将图片对象加入报表
doc.Body.Children.Add(rs) \'将文本对象加入到表格中

Dim rt As New prt.RenderTable() \'定义一个表格对象
doc.Body.Children.Add(rt) \'将表格对象加入到报表中
rt.width = 60
rt.x = "50%Parent.Width"
...........略

Dim rt1 As New prt.RenderTable() \'定义一个表格对象
rt1.Style.Spacing.Top = 20

如不设置TOP,则二个格会重叠在一起.不会按顺序rt1在rt 下面自动生成rendertable()
但有时rt有10行,有时只有一行,
则 rt  有时会与 tr1重叠,有时则空好多.

呵,不知有没有办法设置.


--  作者:狐狸爸爸
--  发布时间:2009/4/29 15:49:00
--  
可以使用相对位置。
参考帮助文件“专业报表 - 报表基础 - 详解位置和尺寸”
--  作者:yangming
--  发布时间:2009/4/29 15:51:00
--  
如果用了贺老师的代码,就没必要再设左右边距了

--  作者:don
--  发布时间:2009/4/29 16:03:00
--  
以下是引用狐哥在2009-4-29 15:45:00的发言:
rt.width = 60
rt.x = "50%Parent.Width"
这个不好,还不如自己调试,
tr.x = 30

因表格的行数是随TABLE动态的,如设置了TR.X,则下一个Rrendertable()要设置TOP.比如:

Dim doc As New PrintDoc \'定义一个报表对象
Doc.PageSetting.LeftMargin = 10 \'设置左边距
Doc.PageSetting.RightMargin = 10 \'设置右边距
Doc.PageSetting.TopMargin = 20 \'设置上边距
Doc.PageSetting.BottomMargin = 20 \'设置下边距


Dim rm As New prt.RenderImage \'定义一个图片对象
rm.Image = GetImage("logo.jpg") \'设置图片
rm.Width = "Parent.Width" \'宽度等于页面宽度
rm.Height = "Auto" \'高度由图片大小自动决定
rm.Style.ImageAlign.StretchHorz = False \'禁止图片水平拉伸
rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center \'居中显示

Dim rs As New prt.RenderText() \'定义一个文本对象
rs.Text = "委托书"
rs.Style.Font = New Font("ARIAL", 18 , FontStyle.Bold) \'设置文本对象的字体
rs.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'文本内容水平居中
doc.Body.Children.Add(rm) \'将图片对象加入报表
doc.Body.Children.Add(rs) \'将文本对象加入到表格中

Dim rt As New prt.RenderTable() \'定义一个表格对象
doc.Body.Children.Add(rt) \'将表格对象加入到报表中
rt.width = 60
rt.x = "50%Parent.Width"
...........略

Dim rt1 As New prt.RenderTable() \'定义一个表格对象
rt1.Style.Spacing.Top = 20

如不设置TOP,则二个格会重叠在一起.不会按顺序rt1在rt 下面自动生成rendertable()
但有时rt有10行,有时只有一行,
则 rt  有时会与 tr1重叠,有时则空好多.

呵,不知有没有办法设置.

可以根据Rt的行数动态设置rt1的Top 啊


--  作者:狐哥
--  发布时间:2009/4/29 16:45:00
--  
以下是引用don在2009-4-29 16:03:00的发言:

可以根据Rt的行数动态设置rt1的Top 啊

这个办法好,贺老师的代码不会做,呵呵.总是重叠在一起.