兼容性还算可以,只不过我发现有些 Windows 消息无法拦截,比如像 WM_INITMENUPOPUP
解决方案 »
- VB+SQL SERVER 支持多客户端需要注意什么
- 怎么样写一段代码能让我的窗体里面的控间跟随窗体的大改变而改变!
- 菜鸟问题:写好vb程序后如何使用它
- 35分求教
- 请问在VB里怎么自动创建一个EXCEL文件,并打开保存啊?(我是新手,请多指教)
- VB 如何创建一个与打开的数据表结构相同的数据表
- Screen.TwipsPerPixelX什么意思?
- API函数ShowWindow(hWnd, nCmdShow)如何用?原始定义为BOOL型,在用ShowWindow为long型 ?
- 高手们好,一个关于VB中的数据库的问题?
- 问一下:在同时的访问量不超过500人的情况下,每个用户的session变量大约20个,对服务器不会有太大影响吧!变量很小的
- 文件的存储和读取的问题?
- 开新帖!怀念巴顿
如果使用游客登陆XP
VB不能用的.
用权限最高的用户登陆.
Static ColLen(20) As Integer, ColString(20) As String
Static LeftLen As Integer
'Dim PriPauNot As Boolean
Dim ThisLeftStar As Integer
Dim leftstar As Integer
If Vbook(0) <> False Then
adoPrimaryRS.Filter = Vbook
End If
PrintGuiGe = 0
RowHeight = 300
leftstar = 350
Col_Width = 500
ColLen(0) = 0 'this array must be the number!
ColLen(1) = 600
ColLen(2) = 1120
ColLen(3) = 1700
ColLen(4) = 1600
ColLen(5) = 1140
ColLen(6) = 1140
ColLen(7) = 1800
ColLen(8) = 900
ColLen(9) = 1120
ZonLen = 11000
'adoPrimaryRS.MoveFirst
PageMaxNo = PageMaxNo + 1
If adoPrimaryRS.RecordCount < 1 Then Exit Sub
pagecoun = Abs(Int(Sijicoun / (-PageMaxNo)))
For COPYC = 1 To Copies
firstpo = (PageMaxNo - 1) * (FromPage - 1)
adoPrimaryRS.Move firstpo, 1
pageno = FromPage - 1
Printer.Orientation = HONGSHU + 1
Do While Not adoPrimaryRS.EOF
ProgressBar1.Value = 0
'MsgBox CStr(adoPrimaryRS.AbsolutePosition)
beizhu_row = 0
RowNumb = 0
PrintFont "隶书", 14, False, False, False
PrintTextCenter "中华人民共和国机车司机驾驶证", 0, 50, ZonLen + 100 + LeftStart
PrintFont "黑体", 18, False, False, False
PrintTextCenter "花名册", 0, 400, ZonLen + 100 + LeftStart
PrintFont "宋体", 11, False, False, False
PrintText "单位:", 500, 1050
'PrintText "单位:" & are, 500, 1050
PrintText "制表时间:" + Format(Now, "yyyy年m月d日"), 3500, 1050
PrintText "№: " + Trim(Str(pageno + 1)), (PrintGuiGe + 1) * 10000, 1050
'Printer.Line (leftstar, 1280)-(leftstar + ZonLen, 1280)
Printer.Line (350, 1280)-(11350, 1280)
Do While Not adoPrimaryRS.EOF
If Trim(adoPrimaryRS!cxrzw) = "司机" Then
If RowNumb = 0 Then
PrintFont "黑体", 9, False, False, False
ColString(1) = "工 号"
ColString(2) = "驾驶证编号"
ColString(3) = "局 别"
ColString(4) = "分 局 别"
ColString(5) = "段 别"
ColString(6) = "姓 名"
ColString(7) = "出 生 年 月"
ColString(8) = "准驾机型"
ColString(9) = "备 注"
Else
PrintFont "楷体_GB2312", 9, False, False, False
ColString(1) = loadstring(adoPrimaryRS!cgh, 9)
ColString(2) = loadstring(adoPrimaryRS!cjszbh, 9)
ColString(3) = loadstring(adoPrimaryRS!cjb, 16)
ColString(4) = loadstring(adoPrimaryRS!cfjb, 16)
ColString(5) = loadstring(adoPrimaryRS!cdb, 16)
ColString(6) = loadstring(adoPrimaryRS!cxm, 16)
ColString(7) = loadstring(Format(adoPrimaryRS!dcsny, "yyyy年m月d日"), 16)
ColString(8) = loadstring(adoPrimaryRS!czjjx, 16)
ColString(9) = loadstring(beizhu(firstpo + beizhu_row - 1), 9)
'MsgBox firstpo + beizhu_row - 1 & "qqq" & beizhu(firstpo + beizhu_row - 1)
If Not adoPrimaryRS.EOF Then adoPrimaryRS.MoveNext
ProgressBar1.Value = 100 / PageMaxNo * RowNumb
End If
ThisLeftStar = leftstar
For col_num = 1 To 9
Printer.Line (ThisLeftStar, 1280 + RowHeight * RowNumb)-(ThisLeftStar, 1280 + RowHeight * (RowNumb + 1))
'PrintTextCenter ColString(col_num), ThisLeftStar, 1280 + 20 + RowHight * RowNumb, Len(ColString(col_num))
PrintTextCenter ColString(col_num), ThisLeftStar + 20, 1280 + RowHeight * RowNumb + 50, ColLen(col_num) - 10
ThisLeftStar = ThisLeftStar + ColLen(col_num)
Next
Printer.Line (leftstar + ZonLen, 1280 + RowHeight * RowNumb)-(leftstar + ZonLen, 1280 + RowHeight * (RowNumb + 1))
If RowNumb Mod 5 = 0 Then
Printer.DrawWidth = 3
Printer.Line (leftstar, 1280 + RowHeight * (RowNumb + 1))-(leftstar + ZonLen, 1280 + RowHeight * (RowNumb + 1))
Printer.DrawWidth = 1
Else
Printer.Line (leftstar, 1280 + RowHeight * (RowNumb + 1))-(leftstar + ZonLen, 1280 + RowHeight * (RowNumb + 1))
End If
RowNumb = RowNumb + 1
beizhu_row = beizhu_row + 1
If RowNumb >= PageMaxNo - 1 Or adoPrimaryRS.EOF Then
Printer.Print ""
PrintFont "宋体", 10, False, False, True
pageno = pageno + 1
PrintText "总" & pagecoun & "页", leftstar + 500, 1480 + RowHeight * (RowNumb + 1)
PrintText "制表人:", leftstar + 2000, 1480 + RowHeight * (RowNumb + 1)
PrintText "审核人(段长):", leftstar + 5500, 1480 + RowHeight * (RowNumb + 1)
Exit Do
End If
Else
adoPrimaryRS.MoveNext
End If
Loop
Printer.EndDoc
If pageno >= pagecoun Or pageno >= ToPage Then Exit Do
If PriPauNot Then
MsgSet = MsgBox("第" & pageno + 1 & "页" + "已经打印完毕,继续打印吗?", vbYesNo, "警报")
If MsgSet = vbNo Then Exit Do
'Printer.NewPage
End If
Loop
adoPrimaryRS.MoveFirst
Next
adoPrimaryRS.Filter = adFilterNone
End Sub
Printer.FontName = tName
Printer.FontSize = nSize
Printer.FontBold = bBold
Printer.FontUnderline = bUnderline
Printer.FontItalic = bItalic
End SubSub PrintTextCenter(tText As String, Tx As Integer, ty As Integer, tlen As Integer)
tWidth = Printer.TextWidth(tText)
Printer.CurrentX = Tx + Int((tlen - tWidth) / 2)
Printer.CurrentY = ty
Printer.Print tText
End SubSub PrintText(tText As String, Tx As Integer, ty As Integer)
Printer.CurrentX = Tx
Printer.CurrentY = ty
Printer.Print tText
End Sub
Sub print2text(Text As String, Tx As Integer, ty As Integer, tlen As Integer)
Select Case Len(Trim(Text))
Case 2
PrintTextCenter Left(Trim(Text), 1), Tx, ty, tlen
PrintTextCenter Right(Trim(Text), 1), Tx, ty + 420, tlen
Case 3
PrintTextCenter Mid(Trim(Text), 1, 1), Tx, ty, tlen
PrintTextCenter Mid(Trim(Text), 2, 1), Tx, ty + 210, tlen
PrintTextCenter Mid(Trim(Text), 3, 1), Tx, ty + 420, tlen
Case 4
PrintTextCenter Mid(Trim(Text), 1, 1), Tx, ty, tlen
PrintTextCenter Mid(Trim(Text), 2, 1), Tx, ty + 140, tlen
PrintTextCenter Mid(Trim(Text), 3, 1), Tx, ty + 280, tlen
PrintTextCenter Mid(Trim(Text), 4, 1), Tx, ty + 420, tlen
End Select
End SubSub PrintTextRight(tText As String, Tx As Integer, ty As Integer, tlen As Integer)
tWidth = Printer.TextWidth(tText)
Printer.CurrentX = Tx + tlen - tWidth
Printer.CurrentY = ty
Printer.Print tText
End Sub