如何控制打印机的打印问题!

cmt123 2002-05-06 04:46:43
我想打印一张发票,要在发票固定的范围打印数据,但不知如何控制打印机的打印范围,请高手帮忙!
...全文
77 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lindqp 2002-05-06
  • 打赏
  • 举报
回复
Option Explicit
Public rowlab As Integer
Public PositionX As Integer
Public PositionY As Integer

'定義一個公用變量

'---- 注: Prnt11函數原形:prnt11(X As Integer, Y As Integer, Font As Single, Txt As String, Val As Integer),其各參數含義如下:
'
'---- X、Y為待打印字符串左上角起始座標;
'
'---- Font為字体大小;
'
'---- Txt為待打印字符串;
'
'---- Val為字符串打印折行長度。

Function prnt11(x As Integer, Y As _
Integer, Font As Single, Txt As String, Val As Integer)
Dim str As String, str1 As String, str2 As String, i As Integer
Printer.CurrentX = x
Printer.CurrentY = Y
Printer.FontBold = False
Printer.FontSize = Font
str = Txt
str2 = str
i = 0
rowlab = 0
If Len(Trim(str)) = 0 Then
rowlab = 1 '待打印字符串為空的標志
Else
Do While Len(str) > 0
Printer.CurrentX = x
Printer.CurrentY = Y + rowlab * 240
rowlab = rowlab + 1
If Len(str) >= Val Then
str1 = Mid(str, 1, Val)
Printer.Print str1
i = i + 1
str = Mid(str2, i * Val + 1)
Else
Printer.Print str
Exit Do
End If
Loop
End If
End Function

'---- 3. 在Project1中新建一個窗体Form1,窗体上添加一個Data控件Data1,一個MSFlexGrid控件MSFGrid1,7個TextBox和兩個命令按鈕CmdPrnt1、CmdPrnt2。設置Data控件的屬性:
'
'.. DatabaseName="Standards.mdb"
'..RecordSourse="SN"
'  MSFGrid1屬性:
.DataSource = "Data1"
'  Text1屬性:
.DataSource = "Data1"
.DataField = "標准號"
'  Text2~Text7類同。
'
'---- CmdPrnt1、CmdPrnt2分別為打印單條記錄和多條記錄的按鈕。
'
'---- 實例1:文字串定位折行打印在口岸聯檢部門中應用非常廣泛。下述例子是用CmdPrnt1的Click事件代碼實現了對文字串定位折行打印:

Private Sub CmdPrnt1_Click()
Dim str As String, str1 As String, Txt As String
Dim strx As Integer, stry As Integer, i As Integer
strx = 200
stry = 0
Txt = Space(20) + "中國出入境檢驗檢疫標准目錄檢索STEMS 2000"
Printer.FontName = "黑体"
dd = prnt11(strx, stry, 10, Txt, 50)
stry = stry + rowlab * 240
Printer.Line (0, stry)-(9000, stry)
Printer.FontName = "宋体"
Txt = "標准號:" + Space(2) + Trim(Text1) + Space(3) + _
"發布日期:" + Trim(Text4) + Space(3) + "實施日期:" _
+ Trim(Text6) + Space(3) + "修定日期:" + Trim(Text5) '+ Chr(13)
stry = stry + 240
dd = prnt11(strx, stry, 10, Txt, 70)
stry = stry + rowlab * 240
Txt = "代替標准:"
dd = prnt11(strx, stry, 10, Txt, 10)
dd = prnt11(strx + 1000, stry, 10, Trim(Text7), 60)
stry = stry + rowlab * 240
Txt = "標准名稱:"
dd = prnt11(strx, stry, 10, Txt, 10)
dd = prnt11(strx + 1000, stry, 10, Trim(Text4), 38)
stry = stry + rowlab * 240
Txt = "英文名稱:"
dd = prnt11(strx, stry, 10, Txt, 10)
dd = prnt11(strx + 1000, stry, 10, Text5, 72)
Printer.EndDoc
End Sub
coolydy 2002-05-06
  • 打赏
  • 举报
回复


象楼上说的,scalemode设置打印时你用的单位
scalewidth,scaleheight是打印机的按你单位出来的宽度和高度
COOL099 2002-05-06
  • 打赏
  • 举报
回复
Printer.ScaleMode=6 '單位為毫米
Printer.CurrentX=10 '在离打印起始點(10,29)處打印字符串,注意單位為毫米,
Printer.CurrentY=29
Printer.Print "打印到此處"
chenwulin 2002-05-06
  • 打赏
  • 举报
回复
用自己学语句
printer对象哦
brotherfromaq 2002-05-06
  • 打赏
  • 举报
回复
crystal report是一个很不错的工具。

7,763

社区成员

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

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