以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  专业报表打印问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=50625)

--  作者:远航
--  发布时间:2014/5/9 22:00:00
--  专业报表打印问题
Dim drc As New PrintDoc
Dim rt As New prt.RenderText
rt.DataBinding.DataSource = BindTables("临时表") \'将rt绑定到临时表
rt.Text= "[Fields!商品名称.Value] [Fields!销售价格.Value] [Fields!数量.Value]" \'设置打印字段
drc.body.Children.Add(rt)
drc.Print() \'打印

怎样设置上面“临时表”打印的位置 比如 x,y值呢

--  作者:远航
--  发布时间:2014/5/9 22:47:00
--  

表格与绑定

行组也可以设置绑定,这样我们可以很方便地将一个表格绑定到数据表。
例如,打印订单表中的某些列,代码非常简单:

Dim doc As New PrintDoc
Dim
 rt As New prt.RenderTable
Dim
 tb as Table = Tables("订单")
Dim
 ColNames As String() = New String(){"产品", "客户","单价""数量", "金额"}
For c As integer = 0 To ColNames.Length -1
    rt.Cells(0,c).Text = ColNames(c
    
rt.Cols(c).Width = tb.Cols(ColNames(c)).PrintWidth 
    
rt.Cells(1c).Text = "[Fields!" & ColNames(c) & ".Value]" \'设置绑定表达式
Next

rt.RowGroups(
0,1).Style.TextAlignVert = prt.AlignVertEnum.Center \'第一行内容垂直居中
rt.RowGroups(
0,1).Header = prt.TableHeaderEnum.All \'将第一行作为表头。
rt.RowGroups(
1,1).DataBinding.DataSource = BindTables("订单"\'将第二行绑定到订单表
doc.Body.Children.Add(rt)
doc.Preview()

注意这一行代码:

rt.RowGroups(1,1).DataBinding.DataSource = BindTables("订单"\'将第二行绑定到订单表

该行代码将表格的第二行绑定到订单表,这样第二行将根据订单表中的每一行数据,自动生成副本,完成整个表格的打印。



这个表打印是从X=0,Y=0 开始的 怎样才能自定义打印位置呢 比如y=50


--  作者:菲舍尔
--  发布时间:2014/5/9 23:02:00
--  

设置rt的相关属性就是了

请参照以下:

位置与尺寸

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

示例

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()
\'预览