以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]纸张问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=69223)

--  作者:pcxjxjhkw
--  发布时间:2015/6/1 17:30:00
--  [求助]纸张问题
如何根据纸张类型返回值?

纸张类型
8

A3

9 A4
11 A5
12 B4
13 B5
66 A2
70 A6

--  作者:大红袍
--  发布时间:2015/6/1 17:40:00
--  

 比如

 

Dim prtdoc As new Printing.PrintDocument()
prtdoc.PrinterSettings.PrinterName = DefaultPrinter
msgbox(prtdoc.PrinterSettings.PaperSizes(8-1).papername)


--  作者:pcxjxjhkw
--  发布时间:2015/6/1 17:43:00
--  
老师,反了!
如:在一下拉列表框中选择A4,则输出值为9
[此贴子已经被作者于2015/6/1 17:42:45编辑过]

--  作者:大红袍
--  发布时间:2015/6/1 18:09:00
--  

Dim prtdoc As new Printing.PrintDocument()
prtdoc.PrinterSettings.PrinterName = DefaultPrinter
For Each ps As System.Drawing.Printing.PaperSize In prtdoc.PrinterSettings.PaperSizes  \'生成打印机的纸张下拉列表
    If ps.PaperName = "A4" Then
        msgbox(ps.RawKind)
        Exit For
    End If
Next

 


--  作者:pcxjxjhkw
--  发布时间:2015/6/1 18:16:00
--  
谢谢
--  作者:pcxjxjhkw
--  发布时间:2015/6/1 18:32:00
--  
在老师的指导下,将其写成一个自定义函数,分享给大家
\'\'函数名:获取纸张值,
\'\'作用:返回纸张值,在报表中常用
\'\'参数0:当前打印机
\'\'参数1:纸张类型
\'\'返回:纸张值

Dim str As String = Args(1)   \'\'纸张类型
Dim i As Integer   \'\'纸张值
Dim prtdoc As new Printing.PrintDocument()
prtdoc.PrinterSettings.PrinterName = Args(0)   \'\'DefaultPrinter  \'DefaultPrinter
For Each ps As System.Drawing.Printing.PaperSize In prtdoc.PrinterSettings.PaperSizes  \'生成打印机的纸张下拉列表
    If ps.PaperName = str Then
        i = ps.RawKind
        Return i
        Exit For
    End If
Next
If i = 0 Then
    MessageBox.Show("当前打印机不支持该纸张!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error)
    Return Nothing
End If