Foxtable(狐表)用户栏目专家坐堂 → 选定打印


  共有1658人关注过本帖树形打印复制链接

主题:选定打印

帅哥哟,离线,有人找我吗?
刘林
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1942 积分:14919 威望:0 精华:0 注册:2016/4/28 9:58:00
选定打印  发帖心情 Post By:2018/6/4 17:12:00 [只看该作者]

Dim tb As Table=Tables("毕业登记表")
Dim doc As New PrintDoc '定义一个报表
doc.PageSetting.Width = 211 '纸张宽度为100毫米
doc.PageSetting.Height = 124 '纸张高度为120毫米
doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
Doc.PageSetting.leftMargin = 0
Doc.PageSetting.rightMargin = 0
Doc.PageSetting.TopMargin  =0
Doc.PageSetting.BottomMargin  =0
doc.AutoRotate = False
For i As Integer = tb.TopPosition To tb.BottomPosition
    Dim rg As New prt.RenderRectangle (74,108,New Prt.Linedef(0.4,Color.blaCk))
    rg.x = 38
    rg.y = 8
    doc.Body.Children.Add(rg)
    rg = New prt.RenderRectangle (74,108,New Prt.Linedef(0.4,Color.blaCk))
    rg.x = 127
    rg.y = 8
    doc.Body.Children.Add(rg)
    Dim Line As New prt.LineDef(0.5, Color.black,DashStyle.Dash)
    Dim ln As New prt.RenderLine(31,8, 31, 116, Line)
    doc.body.Children.Add(ln) '将线条加入到报表中
    Dim rt As New prt.RenderText
    rt.Text = "四川省普通初中"
    rt.Style.Font=New Font("黑体", 15, FontStyle.Bold)
    rt.Y =19
    rt.x=58
    Doc.body.Children.Add(rt) '添
    rt = New prt.RenderText
    rt.Text = "毕 业 证 书"
    rt.Style.Font=New Font("黑体", 22, FontStyle.Bold)
    rt.Y =27
    rt.x=55
    Doc.body.Children.Add(rt) '添
    rg = New prt.RenderRectangle (29,38,New Prt.Linedef(0.2,Color.blaCk))
    rg.x = 61
    rg.y = 50
    doc.Body.Children.Add(rg)
    Dim rm As  New prt.RenderImage()
    rm.Style.ImageAlign.KeepAspectRatio= False
    rm.Image= GetImage(projectPath & "remotefiles" & tb.Rows(i)("相片"))
    rm.Width=29
    rm.Height=38
    rm.Y = 50
    rm.x=61
    doc.body.Children.Add(rm) '添加到容
    rt = New prt.RenderText
    rt.Text = "(" & Date.Today.Year & ")毕字第 " & trim(format(tb.rows(I)("编号"))) & " 号"
    rt.Style.Font=New Font("宋体", 10, FontStyle.Bold)
    rt.Y =98
    rt.x=47
    Doc.body.Children.Add(rt) '添
Next
Doc.Preview() '预览报表


请问老师,上面代码为什么多选几条记录,总是预览到最后一条,而不是各条预览都有,没发现哪个地方错了

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/4 17:19:00 [只看该作者]

在循环里面,每循环一次new一个ra,把各个控件添加到一个容器里面ra,最后把ra添加到doc里面

 

http://www.foxtable.com/webhelp/scr/1186.htm

 

[此贴子已经被作者于2018/6/4 17:19:46编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
刘林
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1942 积分:14919 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2018/6/4 17:50:00 [只看该作者]

rt = New prt.RenderText
    rt.Text = "学生 " & tb.Rows(i)("姓名") & ",性别 " & tb.Rows(i)("性别") & ","
    rt.Style.Font=New Font("宋体", 14, FontStyle.Bold)
    rt.Y =21
    rt.x=139
    ra.Children.Add(rt) '添加到容器中
老师,我想让红色这个地方占位6个字符,意思就是姓名有的两个字,有的三个字,还有四个字,如何能让这个地方在报表中点6个字的宽度,这样才不会因姓名宽度不一发生报表格式不一呢

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/4 18:08:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
刘林
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1942 积分:14919 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2018/6/4 18:43:00 [只看该作者]

Dim tb As Table=Tables("毕业登记表")
Dim doc As New PrintDoc '定义一个报表
doc.PageSetting.Width = 211 '纸张宽度为100毫米
doc.PageSetting.Height = 124 '纸张高度为120毫米
doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
Doc.PageSetting.leftMargin = 0
Doc.PageSetting.rightMargin = 0
Doc.PageSetting.TopMargin  =0
Doc.PageSetting.BottomMargin  =0
doc.AutoRotate = False
For i As Integer = tb.TopPosition To tb.BottomPosition
    Dim rg As New prt.RenderRectangle (74,108,New Prt.Linedef(0.4,Color.blaCk))
    rg.x = 38
    rg.y = 8
    doc.Body.Children.Add(rg)
    rg = New prt.RenderRectangle (74,108,New Prt.Linedef(0.4,Color.blaCk))
    rg.x = 127
    rg.y = 8
    doc.Body.Children.Add(rg)
    Dim Line As New prt.LineDef(0.5, Color.black,DashStyle.Dash)
    Dim ln As New prt.RenderLine(31,8, 31, 116, Line)
    doc.body.Children.Add(ln) '将线条加入到报表中
    Dim rt As New prt.RenderText
    rt.Text = "四川省普通初中"
    rt.Style.Font=New Font("黑体", 15, FontStyle.Bold)
    rt.Y =19
    rt.x=58
    Doc.body.Children.Add(rt) '添
    rt = New prt.RenderText
    rt.Text = "毕 业 证 书"
    rt.Style.Font=New Font("黑体", 22, FontStyle.Bold)
    rt.Y =27
    rt.x=55
    Doc.body.Children.Add(rt) '添
    rg = New prt.RenderRectangle (29,38,New Prt.Linedef(0.2,Color.blaCk))
    rg.x = 61
    rg.y = 50
    doc.Body.Children.Add(rg)
    Dim rm As  New prt.RenderImage()
    rm.Style.ImageAlign.KeepAspectRatio= False
    rm.Image= GetImage(projectPath & "remotefiles" & tb.Rows(i)("相片"))
    rm.Width=29
    rm.Height=38
    rm.Y = 50
    rm.x=61
    doc.body.Children.Add(rm) '添加到容
    rt = New prt.RenderText
    rt.Text = "(" & Date.Today.Year & ")毕字第 " & trim(format(tb.rows(I)("编号"))) & " 号"
    rt.Style.Font=New Font("宋体", 10, FontStyle.Bold)
    rt.Y =98
    rt.x=47
    Doc.body.Children.Add(rt) '添
Next
Doc.Preview() '预览报表
上面的红色矩形框,里面加文字,想加的文件在矩形框内自动换行,这该怎么实现呢,也就是在new ra 中再new 一个ra
[此贴子已经被作者于2018/6/4 18:44:06编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107660 积分:547615 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/6/4 20:19:00 [只看该作者]

默认就是自动换行的

Dim doc As New PrintDoc '定义一个报表
Dim rt As New prt.RenderText '定义一个文本对象
rt.Text = "四川省普通初中四川省普通初中四川省普通初中四川省普通初中四川省普通初中四川省普通初中四川省普通初中四川省普通初中四川省普通初中" 
Dim rg As New prt.RenderRectangle (108,74,New Prt.Linedef(2,Color.Red))
rg.x = 50
rg.y = 50
rg.Children.Add(rt)
doc.Body.Children.Add(rg) '将文本对象加入到报表
doc.Preview() '预览

 回到顶部
帅哥哟,离线,有人找我吗?
刘林
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1942 积分:14919 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2018/6/4 20:40:00 [只看该作者]

Dim bysjstr As Date ="#1/7/"  & TB.Rows(I)("毕业年份") & "#"
    rt = New prt.RenderText
    rt.Text =  Format(bYSJSTR, "D")
    rt.Style.Font=New Font("宋体", 12, FontStyle.Bold)
    rt.Y =93
    rt.x=22
    ra1.Children.Add(rt)
    
这样显示为2018-01-07
我想显示为二0一八年七月一日,怎么改?

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107660 积分:547615 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/6/4 21:01:00 [只看该作者]

Dim d As Date = Date.Today
Output.Show(CLNum(d.Year) & "年" & CLNum(d.Month) & "月" & CLNum(d.Day) & "日")

 回到顶部