Foxtable(狐表)用户栏目专家坐堂 → [求助] 窗体循环打印


  共有2236人关注过本帖树形打印复制链接

主题:[求助] 窗体循环打印

帅哥哟,离线,有人找我吗?
goodhawk
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:120 积分:1134 威望:0 精华:0 注册:2018/3/22 15:58:00
[求助] 窗体循环打印  发帖心情 Post By: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()

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/21 15:34:00 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
goodhawk
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:120 积分:1134 威望:0 精华:0 注册:2018/3/22 15:58:00
  发帖心情 Post By:2018/5/21 15:59:00 [只看该作者]

不是, 就是简单的要把当前的窗口, 打印 n 遍。

我用了

for i = 0 to 10
print()
next

这样子没法打印  10遍的啊

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/21 16:01:00 [只看该作者]

For i As Integer = 1 to 10

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

Next


 回到顶部
帅哥哟,离线,有人找我吗?
goodhawk
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:120 积分:1134 威望:0 精华:0 注册:2018/3/22 15:58:00
  发帖心情 Post By: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



 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:120 积分:1134 威望:0 精华:0 注册:2018/3/22 15:58:00
  发帖心情 Post By:2018/5/22 12:51:00 [只看该作者]

感谢, 实现得很完美, 赞 @有点甜

 回到顶部