在vb里打印机的脚本的写法是什么ESC

dandelionl 2004-04-01 03:35:19
在vb里打印机的脚本的写法是什么ESC
另外谁能说说WritePrinter()、Open "LPT1"、Printer、Escape()、SpoolFile()最后一个函数查不到!
...全文
103 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dandelionl 2004-04-07
  • 打赏
  • 举报
回复
~
啊维 2004-04-07
  • 打赏
  • 举报
回复
..............
dandelionl 2004-04-03
  • 打赏
  • 举报
回复
: kissoflife(明月高楼休独倚,酒入愁肠,化作相思泪!)
非常感谢!不过我记得Printer是按页打印的,能控制按行打印吗?比如说给顾客打印小票后要直接撕纸。这就是我需要直接控制打印机ESC/PK、ESC/POS命令集的原因,但是不知道用法。
dandelionl 2004-04-03
  • 打赏
  • 举报
回复
: kissoflife(明月高楼休独倚,酒入愁肠,化作相思泪!)
非常感谢!不过我记得Printer是按页打印的,能控制按行打印吗?比如说给顾客打印小票后要直接撕纸。这就是我需要直接控制打印机ESC/PK、ESC/POS命令集的原因,但是不知道用法。
wumy_ld 2004-04-03
  • 打赏
  • 举报
回复
完整的printer对象打印代码:

Public Sub PrintGZLTJ(ByVal strSql As String, ByVal dtmBegin As Date, dtmStop As Date)
On Error Resume Next
Dim rsTemp As ADODB.Recordset
Dim i As Integer
Dim lngTotal As Long

Dim intPage As Integer
Dim sngCurrY As Single
Dim intCurrLine As Integer

Dim sngTitleTop As Single
Dim sngHospitalTop As Single

Dim sngPersonTop As Single
Dim sngTextLeft As Single
Dim sngHeaderTop As Single
Dim sngTextTop As Single
Dim sngTextBottom As Single
Dim sngPageNumberTop As Single

Me.MousePointer = 11

sngTitleTop = 25
sngHospitalTop = 34
sngPersonTop = 42
sngTextLeft = 40
sngHeaderTop = 52
sngTextTop = 59
sngTextBottom = 272
sngPageNumberTop = 285

Set rsTemp = New ADODB.Recordset
rsTemp.Open strSql, GCon, adOpenStatic, adLockOptimistic
If rsTemp.EOF Then
MsgBox "没有需要打印的内容,请重新设置时间范围!", vbInformation, "提示"
GoTo ExitLab
End If

intPage = 1 '从第一页开始
'打印第一页的标题
GoSub PrintTitle

rsTemp.MoveFirst
With Printer
'打印报表正文
'循环打印所有记录
intCurrLine = 1
For i = 1 To rsTemp.RecordCount
.FontSize = 9
.FontBold = False
'计算纵坐标
sngCurrY = sngTextTop + (intCurrLine - 1) * .TextHeight("高度") * 1.5
If sngCurrY > sngTextBottom Then '该分页
Printer.NewPage
intPage = intPage + 1
GoSub PrintTitle

intCurrLine = 1
.FontSize = 9
.FontBold = False
'分页后重新计算纵坐标
sngCurrY = sngTextTop + (intCurrLine - 1) * .TextHeight("高度") * 1.5
End If
.CurrentX = sngTextLeft
.CurrentY = sngCurrY
Printer.Print rsTemp(0)

.CurrentX = sngTextLeft + 100
.CurrentY = sngCurrY
Printer.Print IIf(IsNull(rsTemp(1)), "", rsTemp(1))

If Not IsNull(rsTemp(1)) Then
lngTotal = lngTotal + rsTemp(1)
End If

intCurrLine = intCurrLine + 1
rsTemp.MoveNext
Next

'在最后一页上打印合计
.FontSize = 9
.FontBold = True
sngCurrY = sngTextTop + (intCurrLine - 1) * .TextHeight("高度") * 1.5 + 5
Printer.Line (sngTextLeft - 5, sngCurrY - 1.5)-(sngTextLeft + 120, sngCurrY - 1.5)
.CurrentX = sngTextLeft
.CurrentY = sngCurrY
Printer.Print "合计:"

.CurrentX = sngTextLeft + 100
.CurrentY = sngCurrY
Printer.Print lngTotal

'提交打印
Printer.EndDoc
End With
GoTo ExitLab

'打印报表标题
PrintTitle:
With Printer
'打印标题
.FontName = "宋体"
.FontSize = 17
.FontBold = True
.FontItalic = False
.FontUnderline = False

.CurrentX = (Printer.ScaleWidth - .TextWidth("**工作量统计")) / 2
.CurrentY = sngTitleTop
If mblnKShi = True Then
Printer.Print "**工作量统计"
Else
Printer.Print "**工作量统计"
End If

'打印单位
.FontSize = 11
.CurrentX = (Printer.ScaleWidth - .TextWidth(gstrDWMC)) / 2
.CurrentY = sngHospitalTop
Printer.Print gstrDWMC

'打印起始日期
.FontSize = 9
.CurrentX = (Printer.ScaleWidth - .TextWidth("(" & dtmBegin & " 至 " & dtmStop & ")")) / 2
.CurrentY = sngPersonTop
Printer.Print "(" & dtmBegin & " 至 " & dtmStop & ")"

'打印报表题头
Printer.DrawWidth = 5
Printer.Line (sngTextLeft - 5, sngHeaderTop - 1.5)-(sngTextLeft + 120, sngHeaderTop - 1.5)

.CurrentX = sngTextLeft
.CurrentY = sngHeaderTop
If mblnKShi = True Then
Printer.Print "**名称"
Else
Printer.Print "工作人员"
End If

.CurrentX = sngTextLeft + 100
.CurrentY = sngHeaderTop
Printer.Print "工作量(人次)"
Printer.Line (sngTextLeft - 5, sngHeaderTop + .TextHeight("高度") + 1)-(sngTextLeft + 120, sngHeaderTop + .TextHeight("高度") + 1)

.CurrentX = (Printer.ScaleWidth - .TextWidth(Str(intPage))) / 2
.CurrentY = sngPageNumberTop
Printer.Print intPage
End With
Return

ExitLab:
Me.MousePointer = 0
End Sub
dandelionl 2004-04-02
  • 打赏
  • 举报
回复
!

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧