以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 窗体循环打印  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=119249)

--  作者:goodhawk
--  发布时间:2018/5/21 15:26:00
--  [求助] 窗体循环打印
进行打印标签, 用的是窗体打印。 

我期望能按一个打印按钮, 能把当前窗体做连续打印:
以下内容为程序代码:

1 \'页面设置
2 With e.Form.page
3 .Landscape = False \'纵向打印
4 .width = 80
5 .height = 50
6 .LeftMargin = 1
7 .TopMargin = 1
8 .RightMargin = 1
9 .BottomMargin = 1
10 End With
11
12 \'打印
13 Dim doc As PrintDoc = e.Form.GernatePrintDoc()
14 Doc.AutoRotate = False
15 \'Doc.SavePDF("e:\\3.pdf")
16
17 With Tables("printer_setting")
18 Dim r As Integer
19 r = .FindRow("[flag]=\'标签打印机\'" )
20 If r >= 0 Then
21 Doc.PrinterName = .Current("printer_address")
22 Else
23 MessageBox.Show("打印机未设定,路径:我的工作台->基础资料->打印机设定")
24 Return
25 End If
26 End With
27
28 Doc.PrinterName = "\\\\192.168.1.3\\Argox CP-2140M PPLB"
29 Doc.print()
30 Forms("标签").Close()

--  作者:有点甜
--  发布时间:2018/5/21 15:34:00
--  

你窗口的控件是绑定表列的?你想切换不同的行,然后打印?如果是,那你写成循环就行了。


--  作者:goodhawk
--  发布时间:2018/5/21 15:59:00
--  
不是, 就是简单的要把当前的窗口, 打印 n 遍。

我用了

for i = 0 to 10
print()
next

这样子没法打印  10遍的啊

--  作者:有点甜
--  发布时间:2018/5/21 16:01:00
--  

For i As Integer = 1 to 10

    Dim doc As PrintDoc = e.Form.GernatePrintDoc()
    doc.Print()

Next


--  作者:goodhawk
--  发布时间:2018/5/21 17:50:00
--  
@有点甜, 用上面的code是可以打印多次了。 

有个问题不太清楚, 为啥用下面这个是不ok的 ?
因为我发现用这种方式打印的时候, 速度很慢, 每次都要重新生成文档, 重新发送打印指令。 

有没有办法把这个 doc的文档, n多份拼接一下, 同时发送给 打印机呢 ?

Dim doc As PrintDoc = e.Form.GernatePrintDoc()

For i As Integer = 1 to 10    

    doc.Print()

Next



--  作者:有点甜
--  发布时间:2018/5/21 17:53:00
--  

参考这种方式

 

Dim doc As PrintDoc = e.Form.GernatePrintDoc()
Dim ps As new System.Drawing.Printing.PrinterSettings 
ps.PrinterName = "HP LaserJet 6L"
ps.Copies = 10   \'设置份数
doc.Print(ps)     \'打印

--  作者:goodhawk
--  发布时间:2018/5/22 12:51:00
--  
感谢, 实现得很完美, 赞 @有点甜