以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  选定打印  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=119948)

--  作者:刘林
--  发布时间: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() \'预览报表


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

--  作者:有点甜
--  发布时间: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编辑过]

--  作者:刘林
--  发布时间: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个字的宽度,这样才不会因姓名宽度不一发生报表格式不一呢

--  作者:有点甜
--  发布时间:2018/6/4 18:08:00
--  

看看

 

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

 


--  作者:刘林
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间: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() \'预览

--  作者:刘林
--  发布时间: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一八年七月一日,怎么改?

--  作者:有点蓝
--  发布时间:2018/6/4 21:01:00
--  
Dim d As Date = Date.Today
Output.Show(CLNum(d.Year) & "年" & CLNum(d.Month) & "月" & CLNum(d.Day) & "日")