VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 4317|回复: 3

[经验技巧] 超市打印小票

[复制链接]
 楼主| 发表于 2010-5-7 16:06:31 | 显示全部楼层 |阅读模式
VB + POS机打印超市小票,要怎样控制根据打印的内容自动停止走纸??
用Printer打印的。

参考代码:
Private Sub cmdPrint_Click()
  Dim i As Integer, Row As Integer, Rows As Integer
  Dim BColWidth As Integer, ColWidth(4) As Integer, ColPosition(4) As Integer
  Adodc1.RecordSource = "select * from ckd "
  Adodc1.Refresh
  With Adodc1.Recordset
     If .RecordCount = 0 Then
        MsgBox "没有要打印的数据!", vbOKCancel, "提示"
        Exit Sub
     End If
     Printer.ScaleMode = 3
     '根据字宽设置基本列宽
     BColWidth = Int(Printer.TextWidth("宽")) + 1
     '根据纸张大小和字高设置每页打印行数
     Rows = Printer.ScaleHeight \ (Printer.TextHeight("高") + 1) - 4
     '设置每列的宽度
     ColWidth(0) = 5 * BColWidth
     ColWidth(1) = 8 * BColWidth
     ColWidth(2) = 5 * BColWidth
     ColWidth(3) = 5 * BColWidth
     ColWidth(4) = 8 * BColWidth
     '定位要打印的数据
     ColPosition(0) = 260
     ColPosition(1) = ColPosition(0) + ColWidth(0)
     ColPosition(2) = ColPosition(1) + ColWidth(1)
     ColPosition(3) = ColPosition(2) + ColWidth(2)
     ColPosition(4) = ColPosition(3) + ColWidth(3)
     '打印表头
     Printer.FontName = "黑体"
     Printer.FontSize = "10"
     Printer.Print
     Printer.Print
     Printer.CurrentX = ColPosition(0)
     Printer.Print "编号";
     Printer.CurrentX = ColPosition(1)
     Printer.Print "商品名称";
     Printer.CurrentX = ColPosition(2)
     Printer.Print "CT";
     Printer.CurrentX = ColPosition(3)
     Printer.Print "G";
     Printer.CurrentX = ColPosition(4)
     Printer.Print "金额"
     '打印数据
     .MoveFirst
     Row = 0
     Do While Not .EOF
        Printer.FontName = "宋体"
        Printer.FontSize = "10"
        Printer.CurrentX = ColPosition(0)
        Printer.Print .Fields("编号");
        Printer.CurrentX = ColPosition(1)
        Printer.Print .Fields("商品名称");
        Printer.CurrentX = ColPosition(2)
        Printer.Print .Fields("CT");
        Printer.CurrentX = ColPosition(3)
        Printer.Print .Fields("G");
        Printer.CurrentX = ColPosition(4)
        Printer.Print Format(.Fields("金额"), "##,##0.00")
        Row = Row + 1
        .MoveNext
         Loop
     Printer.EndDoc
  End With
End Sub
发表于 2010-5-7 17:33:37 | 显示全部楼层
本帖最后由 zdingyun 于 2010-5-7 17:35 编辑

LZ:用Printer对象无法实现要求.
参阅:http://www.vbgood.com/thread-86681-1-1.html

参阅:http://topic.csdn.net/u/20100319 ... 3-ef99bcc5b70f.html21楼22楼回复.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-11 09:59:00 | 显示全部楼层
楼上的建议我看过了,虽然不太懂。。。
不过呢2楼的回复我试了可以的。。值得参考

printer.ScaleHeight  
printer.ScaleWidth  

printer.TextHeight
printer.TextWidth

这几个参数是什么意思?谁帮我解析下,好吗?
回复 支持 反对

使用道具 举报

发表于 2010-5-12 10:42:20 | 显示全部楼层
本帖最后由 cwa9958 于 2010-5-12 10:45 编辑

printer.ScaleHeight  打印纸张的高度
printer.ScaleWidth   打印纸张的宽度

printer.TextHeight   获得文字的高度
printer.TextWidth    文字的宽度

单位由scalemode 确定
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-6-29 20:48

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表