Foxtable(狐表)用户栏目专家坐堂 → 打印标签如何能根据数量打印


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

主题:打印标签如何能根据数量打印

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107730 积分:547983 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/28 15:53:00 [显示全部帖子]

这种不能使用绑定,写代码遍历打印

Dim doc As New PrintDoc '定义一个报表
Doc.PageSetting.LeftMargin = 0 '设置左边距
Doc.PageSetting.RightMargin = 0 '设置右边距
Doc.PageSetting.TopMargin = 0 '设置上边距
Doc.PageSetting.BottomMargin = 0 '设置下边距
Doc.PageSetting.Width = 40
Doc.PageSetting.Height= 40
'Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
Dim ra As New prt.RenderArea
Dim rx As prt.RenderText '定义一个文本对象
Dim rm As prt.RenderImage '定义一个图形队形
Dim Currow As Row
Dim tbl As Table = Tables("表A")
For i As Integer = 0 To tbl.Rows.Count - 1
    CurRow = tbl.rows(i)
    For j As Integer = 1 To CurRow("数量")
        Dim rep As New prt.RenderEmpty '定义一个新的空对象
        rep.BreakBefore = prt.BreakEnum.Page '打印前换页
        doc.Body.Children.Add(rep ) '加入到报表中
        
        rx = new prt.RenderText
        rx.Text = CurRow("名称")
        rx.x = 1
        rx.y = 1
        doc.body.Children.Add(rx)
        
        rx = new prt.RenderText
        rx.Text = CurRow("条码")
        rx.x = 1
        rx.y = 5
        doc.body.Children.Add(rx)
    Next
Next
Doc.Preview() '预览报表

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


加好友 发短信
等级:超级版主 帖子:107730 积分:547983 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/28 20:03:00 [显示全部帖子]

Dim doc As New PrintDoc '定义一个报表

Doc.PageSetting.TopMargin = 5 '设置上边距
Doc.PageSetting.BottomMargin = 5 '设置下边距
'Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
Dim ra As New prt.RenderArea
Dim rx As prt.RenderText '定义一个文本对象
Dim rm As prt.RenderImage '定义一个图形队形
Dim Currow As Row
Dim tbl As Table = Tables("表A")
Dim rep As prt.RenderEmpty
Dim idx As Integer = 0
Dim kk As Integer = 0
For i As Integer = 0 To tbl.Rows.Count - 1
    CurRow = tbl.rows(i)
    For j As Integer = 1 To CurRow("数量") Step 4
        For k As Integer = 0 To math.min(3,CurRow("数量") - j)
            If kk > 3 Then
                kk = 0
                idx += 1
            End If
            If idx > 6 Then
                rep  = New prt.RenderEmpty '定义一个新的空对象
                rep.BreakBefore = prt.BreakEnum.Page '打印前换页
                doc.Body.Children.Add(rep ) '加入到报表中
                kk = 0
                idx = 0
            End If

            rx = new prt.RenderText
            rx.SplitVertBehavior = prt.SplitBehaviorEnum.Never
            rx.Text = CurRow("名称")
            rx.x = kk * 50 + 5
            rx.y =  idx * 40 + 5
            doc.body.Children.Add(rx)
            
            rx = new prt.RenderText
            rx.Text = CurRow("条码")
            rx.x = kk * 50 + 5
            rx.y = idx * 40 + 15
            doc.body.Children.Add(rx)
            kk += 1
        Next
    Next
Next
Doc.Preview() '预览报表

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


加好友 发短信
等级:超级版主 帖子:107730 积分:547983 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/29 9:15:00 [显示全部帖子]

            rx = new prt.RenderText
            rx.SplitVertBehavior = prt.SplitBehaviorEnum.Never
            rx.Text = CurRow("名称")
            rx.x = kk * 50 + 5
            rx.y =  idx * 40 + 5
            doc.body.Children.Add(rx)
            Dim rg As prt.RenderGraphics
            Dim Bar As New BarCodeBuilder
            'Bar.Symbology = Barpro.Symbology.QRCode
            Bar.Symbology = Barpro.Symbology.Code39
            bar.Code = CurRow("条码")
            rg = new prt.RenderGraphics
            bar.DrawOnCanvas(rg.Graphics,0,0,1)
            rg.Style.Spacing.All = 3
            rg.x = kk * 50 + 5
            rg.y = idx * 40 + 15
            doc.body.Children.Add(rg)
            kk += 1

 回到顶部