以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]如何将选定行输出条码并打印到条码纸上  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=57245)

--  作者:99473593
--  发布时间:2014/9/21 21:27:00
--  [求助]如何将选定行输出条码并打印到条码纸上

最近设计了个项目,需要将商品资料表的条码号和零售价生成商品条码标签,并打印出来,打印的时候,要求可以手动输入需打印条码标签数量,和手动选择打印机,条码纸是固定的,一行可以打印三个标签。请帮我看下,我项目的代码要怎么修改才能实现,我研究了几个晚上,看了很多帮助还是不行。请指教啦。。。。。

 

 

 

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:选定行输出条码打印功能.table


图片点击可在新窗口打开查看此主题相关图片如下:条码纸格式.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2014-9-21 21:30:38编辑过]

--  作者:有点甜
--  发布时间:2014/9/21 22:01:00
--  

Dim txt1 As String = e.Form.Controls("TextBox1").Text
Dim cmb1 As String = e.Form.Controls("ComboBox1").Text

Dim  doc As  New PrintDoc
Dim  rg As  prt.RenderGraphics
Dim  Bar As  New BarCodeBuilder
Bar.Symbology =   Barpro.Symbology.Code128
Bar.BarWidth = 0.25  \'窄条宽度
Bar.BarRatio = 2.3 \'设定宽窄比例
Bar.BarHeight = 5 \'设定条码高度
Bar.QuietZoneWidth = 2  \'静区宽度

Dim t As Table =  Tables("商品资料")
Dim ra As prt.RenderArea
For i As Integer = t.TopPosition To t.BottomPosition
    Dim r As Row = t.Rows(i)
    For j As Integer = 0 To val(txt1) - 1
        If j Mod 3 = 0 Then
            ra = new prt.RenderArea
            Doc.Body.Children.Add(ra)
        End If      
        bar.Code =  r("条码号")
        Bar.QuietZoneWidth = 2
        Bar.CodeAlignment = Barpro.Alignment.BelowJustify
        Bar.Text = "BOBOYA ¥" &  r("零售价") & "元" \'条码上方文本说明
        Bar.TextAlignment = Barpro.Alignment.AboveLeft
        rg =  new  prt.RenderGraphics
        bar.DrawOnCanvas(rg.Graphics,0,0,1)
        rg.Style.Spacing.All =  3
        ra.Stacking = prt.StackingRulesEnum.InlineLeftToRight
        ra.Children.Add(rg)
    Next  
Next
Doc.PrinterName = cmb1
Doc.Preview() \'打印预览


--  作者:99473593
--  发布时间:2014/9/25 17:23:00
--  

谢谢有点甜,喷墨打印机上测试好用,但在有碳带的专业条码打印机上打印不出来,是什么原因呢

还有排版方面有点问题,打出的条码老不在完整的排在条码纸上,能调整相邻条码的左右间距和上下间距吗。

 

[此贴子已经被作者于2014-9-25 17:31:32编辑过]

--  作者:有点甜
--  发布时间:2014/9/25 17:31:00
--  

 可以,参考边距的设置

 

http://www.foxtable.com/help/topics/1173.htm

 

http://www.foxtable.com/help/topics/1178.htm

 


--  作者:99473593
--  发布时间:2014/9/25 17:48:00
--  
喷墨打印机上测试好用,但在有碳带的专业条码打印机上打印不出来,是什么原因呢,是代码设置问题吗,我用的是TSC TTP 320条码机
--  作者:有点甜
--  发布时间:2014/9/25 17:58:00
--  

 平时你的【专业条码打印机】使用正常吗?

 

 你选择打印机的时候,选择正确吗?


--  作者:99473593
--  发布时间:2014/9/25 18:45:00
--  
能正常使用的,我试了,用原来的软件能打印大
--  作者:有点甜
--  发布时间:2014/9/25 19:07:00
--  
 你试试用这个打印机打印任意一个文件看是否可以。
--  作者:99473593
--  发布时间:2014/9/25 19:19:00
--  

现在能打印了,可能是刚才是超出了页面打印范围,

单现在打印出来的是竖着的,在帮我看下是的代码有问题

现在我修改后的代码是这样的

 

Dim txt1 As String = e.Form.Controls("TextBox1").Text   \'定义变量,用于手动输入打印数量
Dim cmb1 As String = e.Form.Controls("ComboBox1").Text  \'定义变量,用于手动选择打印机

Dim  doc As  New PrintDoc
doc.PageSetting.Width = 105  \'纸张宽度为200毫米
\'doc.PageSetting.Height = 170  \'纸张高度为170毫米
DoC.PageSetting.LeftMargin = 2  \'设置左侧边距为2毫米
DoC.PageSetting.RightMargin = 2  \'设置右侧边距为2毫米
DoC.PageSetting.TopMargin = 2  \'设置顶部边距为2毫米
doc.PageSetting.Landscape = False  \'禁止横向打印
\'doc.AutoRotate = False  \'如果纸张的宽度超过高度,要加上这行代码
Dim  rg As  prt.RenderGraphics
Dim  Bar As  New BarCodeBuilder
Bar.Symbology =   Barpro.Symbology.Code128
Bar.BarWidth = 0.25  \'窄条宽度
Bar.BarRatio = 2.3 \'设定宽窄比例
Bar.BarHeight = 5 \'设定条码高度
Bar.QuietZoneWidth = 2  \'静区宽度

Dim t As Table =  Tables("ShangPinXiangXiZiLiao") \'指定数据来源表
Dim ra As prt.RenderArea
For i As Integer = t.TopPosition To t.BottomPosition
    Dim r As Row = t.Rows(i)
    For j As Integer = 0 To val(txt1) - 1 \'指定每行打印数量
        If j Mod 3 = 0 Then
            ra = new prt.RenderArea
            Doc.Body.Children.Add(ra)
        End If      
        bar.Code =  r("ShangPinXiangXiZiLiao_ShangPinHuoHao") \'指定条码数据来源列
        Bar.QuietZoneWidth = 2
        Bar.CodeAlignment = Barpro.Alignment.BelowJustify
        Bar.Text = "BOBOYA ¥" &  r("ShangPinXiangXiZiLiao_LingShouJia") & "元" \'指定条码上方文本说明
        Bar.TextAlignment = Barpro.Alignment.AboveLeft
        rg =  new  prt.RenderGraphics
        bar.DrawOnCanvas(rg.Graphics,0,0,1)
\'        rg.Style.Spacing.All = 1
        ra.Stacking = prt.StackingRulesEnum.InlineLeftToRight 
        ra.Style.TextAlignHorz = prt.AlignVertEnum.Center \'prt.AlignHorzEnum.Center
        ra.Style.Spacing.Bottom = 2  \'设置下间隔为3毫米
        ra.Style.Spacing.Right  = 5  \'设置右间间隔毫米
        ra.Style.Spacing.Left = 3 \'左边距
        ra.Children.Add(rg)
    Next  
Next
Doc.PrinterName = cmb1 \'指定打印机
\'Doc.Preview() \'打印预览
Doc.Print \'直接打印

 

 

 


图片点击可在新窗口打开查看此主题相关图片如下:20140925_1920391.jpg
图片点击可在新窗口打开查看

 

上面是想要实现的效果,下面是现在的效果

[此贴子已经被作者于2014-9-25 19:22:25编辑过]

--  作者:有点甜
--  发布时间:2014/9/25 19:23:00
--  

 

http://www.foxtable.com/help/topics/1190.htm

 

http://www.foxtable.com/help/topics/2904.htm