以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何连续打印多页条码?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=71250)

--  作者:loongtai
--  发布时间:2015/7/8 9:14:00
--  [求助]如何连续打印多页条码?
如题,有多行数据,每行均打印在一张标签纸上,连续打印所选定的行。

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150708091224.png
图片点击可在新窗口打开查看
以下是我打印预览的代码,不知为何只显示一行的标签?
Dim 公司代码 As String=e.Form.Controls("txb_前缀文本").value
Dim 编号类型 As String=e.Form.Controls("dpb_编号类型").value
Dim 出厂日期 As Date=e.Form.Controls("dtp_出厂日期").value
Dim doc As New PrintDoc

Dim Bar As New BarCodeBuilder
doc.PrinterName="ZDesigner GT800 (EPL) -2#"
doc.PageSetting.Height=12
doc.PageSetting.Width=40
doc.PageSetting.BottomMargin=0
doc.PageSetting.TopMargin=0
doc.PageSetting.RightMargin=0
doc.PageSetting.LeftMargin=0
doc.PageSetting.Landscape=True
Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
bar.QuietZoneWidth =2   \'0.4
Bar.Symbology = Barpro.Symbology.QRCode
\'bar.CodeAlignment = Barpro.Alignment.Belowleft
    MessageBox.Show(Tables(e.Form.name & "_tab_1").GetCheckedRows.count)
For Each r As Row In Tables(e.Form.name & "_tab_1").GetCheckedRows
    Dim rt As New prt.RenderTable() \'定义一个表格对象
    rt.Style.GridLines.All = New prt.Linedef(Color.white) \'将表格的颜色设为深灰色
    rt.X=0
    rt.Y=0
    rt.Rows.Count = 1 \'设置行数
    rt.Cols.Count = 2 \'设置列数
    rt.Width = 40 \'设置表格的宽度
    rt.Height = 12 \'设置表格的高度
    rt.Rows(0).Height=12
    rt.cols(0).width=15
    rt.cells(0,1).Style.Font=New Font("Times New Roman", 7, FontStyle.Bold) \'设置字体
    rt.cells(0,0).Style.TextAlignHorz=prt.AlignHorzEnum.left
    Dim rg As New prt.RenderGraphics
    \'Dim r As Row=Tables(e.Form.name & "_tab_1").Rows(0)
    bar.code=r("打印列")
    MessageBox.show(r("打印列"))
    bar.DrawOnCanvas(rg.Graphics,0,0,0.25)
    rt.Cells(0,0).RenderObject = rg \'将单元格内容设置为图片对象rm
    rt.cells(0,1).text=公司代码 & "-" & 编号类型  & vbcrlf & Format(出厂日期,"yyyyMMdd") & "-" & r("流水号")
    doc.Body.Children.Add(rt) \'将表格对象加入到报表中
Next
doc.Preview

--  作者:大红袍
--  发布时间:2015/7/8 9:22:00
--  

1、高度不要定死

 

2、高度要根据行数设置

 

3、上传例子


--  作者:loongtai
--  发布时间:2015/7/8 9:34:00
--  
标签尺寸:40*12(高)
rt为1行2列
效果:选定多行后,每个标签上打印一行的数据,能够连续打印多行
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:条码连续分页打印.zip



--  作者:大红袍
--  发布时间:2015/7/8 10:03:00
--  

Dim 公司代码 As String=e.Form.Controls("txb_前缀文本").value
Dim 编号类型 As String=e.Form.Controls("dpb_编号类型").value
Dim 出厂日期 As Date=e.Form.Controls("dtp_出厂日期").value
Dim doc As New PrintDoc

Dim rs As List(Of Row) = Tables(e.Form.name & "_tab_1").GetCheckedRows
Dim count As Integer = rs.count
doc.PrinterName="ZDesigner GT800 (EPL) -2#"
doc.PageSetting.Height=12
\'doc.PageSetting.Width=12*count+(count-1) * 5
doc.PageSetting.Width=40
doc.PageSetting.BottomMargin=0
doc.PageSetting.TopMargin=0
doc.PageSetting.RightMargin=0
doc.PageSetting.LeftMargin=0
doc.PageSetting.Landscape=True
\'Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
Dim Bar As New BarCodeBuilder
bar.QuietZoneWidth =2   \'0.4
Bar.Symbology = Barpro.Symbology.QRCode
\'bar.CodeAlignment = Barpro.Alignment.Belowleft

For i As Integer = 0 To rs.Count - 1
    Dim r As Row = rs(i)
    Dim rg As New prt.RenderGraphics
    bar.code=r("打印列")
    MessageBox.show(r("打印列"))
    bar.DrawOnCanvas(rg.Graphics,0,0,0.25)
    Dim rt As New prt.RenderTable() \'定义一个表格对象
    rt.Style.GridLines.All = New prt.Linedef(Color.white) \'将表格的颜色设为深灰色
    rt.Rows.Count = 1 \'设置行数
    rt.Cols.Count = 2 \'设置列数
    rt.Width = 40 \'设置表格的宽度
    rt.Height = 12 \'设置表格的高度
    \'If i > 0 Then
     \'   rt.Style.Spacing.Top = 4
      \'  rt.Height = 16
    \'End If
    rt.Rows(0).Height=12
    rt.cols(0).width=15
    rt.cells(0,1).Style.Font=New Font("Times New Roman", 7, FontStyle.Bold) \'设置字体
    rt.cells(0,0).Style.TextAlignHorz=prt.AlignHorzEnum.left
    \'Dim r As Row=Tables(e.Form.name & "_tab_1").Rows(0)
    rt.Cells(0,0).RenderObject = rg \'将单元格内容设置为图片对象rm
    rt.cells(0,1).text=公司代码 & "-" & 编号类型  & vbcrlf & Format(出厂日期,"yyyyMMdd") & "-" & r("流水号")
    doc.Body.Children.Add(rt) \'将表格对象加入到报表中
Next


doc.Preview


--  作者:loongtai
--  发布时间:2015/7/8 10:17:00
--  

试了下,导致只能打一行的原因是出在黄色部分,不能对rt.X进行设置,绿色部分不改不影响此问题。谢谢大红袍!!!

Dim 公司代码 As String=e.Form.Controls("txb_前缀文本").value

Dim 编号类型 As String=e.Form.Controls("dpb_编号类型").value

Dim 出厂日期 As Date=e.Form.Controls("dtp_出厂日期").value

Dim doc As New PrintDoc

Dim Bar As New BarCodeBuilder

doc.PrinterName="ZDesigner GT800 (EPL) -2#"

doc.PageSetting.Height=12

doc.PageSetting.Width=40

doc.PageSetting.BottomMargin=0.5

doc.PageSetting.TopMargin=0

doc.PageSetting.RightMargin=0

doc.PageSetting.LeftMargin=0

doc.PageSetting.Landscape=True

bar.QuietZoneWidth =2   \'0.4

Bar.Symbology = Barpro.Symbology.QRCode

For Each r As Row In  Tables(e.Form.name & "_tab_1").GetCheckedRows

    bar.code=r("打印列")

    Dim rg As New prt.RenderGraphics

    bar.DrawOnCanvas(rg.Graphics,0,0,0.25)

    Dim rt As New prt.RenderTable() \'定义一个表格对象

    rt.Style.GridLines.All = New prt.Linedef(Color.white) \'将表格的颜色设为深灰色

    rt.X=0

    rt.Y=-1

………………

Next