類似於-“中國移動話費單列印”的思路
前一陣子給 安徽省棉麻交易市場 作了一個咚咚
(類似於中國移動話費單列印)
其中一個模組的功能就是實現單據列印
單據是專用紙,不是白紙
模組程式簡單,主要是思路要對,要不然就複雜了
開始走了彎路,老是想怎麼用報表
比如datareport,ms的MSFlexGrid,還有更為複雜的第三方水晶報表
事實上用一個極為簡單的Printer.CurrentX和printer.CurrentY就可以了
要做的準備工作就是量好單據每個要列印項的座標
再乘以56.7,轉化成“緹”
如果是水平列印,則要先將印表機的走紙設為橫向(控制面板裡。。)
還有個細節是換行問題
在VB中,text文字框的輸入是可以自動換行的,但列印則不會自動換行
為此,我編寫了一個函式實現每個文字框每行最多列印6個字元:
Sub PrintSingleLine(s As String, X As Long, n As Integer)
Dim nLines As Integer
nLines = Len(s) / n
If Len(s) > n * nLines Then nLines = nLines + 1
If Len(s) = 0 Then nLines = 1 ' 空 行
For i = 0 To nLines - 1
Printer.CurrentX = X
Printer.Print Mid(s, i * n + 1, n)
Next
End Sub
再實行以下呼叫:
Dim s As String, sLine As String
Printer.CurrentY = 72 * 56.7 '72是我例子的座標
s = txtProductInfo(2).Text '我例子的文字框
pos = InStr(s, vbCrLf) 'vbCrlf索回車的意思。。
Do While pos > 0
sLine = Left(s, pos - 1)
s = Mid(s, pos + 2)
PrintSingleLine Trim(sLine), 49 * 56.7, 6
pos = InStr(s, vbCrLf)
Loop
PrintSingleLine Trim(s), 49 * 56.7, 6 '每行6個字元
---------作者卡卡---------