vb6 – 从未从打印对话框传递的副本数,始终为1
发布时间:2020-12-17 00:33:04 所属栏目:大数据 来源:网络整理
导读:我们有一个VB6应用程序,它使用vbprndlg.dll库向用户显示打印选择对话框.最近我们收到了用户在 Windows Vista和7(32位和64位)上的报告,指出无论在对话框中的副本数量框中放置什么,副本的数量始终保持为1.在XP专业版计算机上运行完全相同的代码时,副本数量应尽
我们有一个VB6应用程序,它使用vbprndlg.dll库向用户显示打印选择对话框.最近我们收到了用户在
Windows Vista和7(32位和64位)上的报告,指出无论在对话框中的副本数量框中放置什么,副本的数量始终保持为1.在XP专业版计算机上运行完全相同的代码时,副本数量应尽可能地传递到报告对象.
到目前为止,我已经使用通用对话框控件和vbprndlg.dll运行测试,以在Vista和7计算机上引发打印对话框,并且无论是否输入数字,每次报告的副本数始终为1在框中或使用箭头切换按钮来增加副本数量.其他属性 – 例如选择了哪台打印机以及从和到页码编号正确报告. 当我将拷贝数硬编码到Crystal Report对象(如下所示)时,正确的拷贝数打印 – 所以这似乎是对话框控件而不是Crystal Report对象的问题. 这是我正在使用的代码片段: Dim PD As vbprndlglib.PrinterDlg Set PD = New vbprndlglib.PrinterDlg ''//load default settings PD.PrinterName = Printer.DeviceName PD.DriverName = Printer.DriverName PD.Port = Printer.Port PD.PaperBin = Printer.PaperBin PD.CancelError = True PD.Min = 1 PD.Max = 32767 PD.flags = (vbprndlglib.cdlPDNoSelection Or vbprndlglib.cdlPDHidePrintToFile) If PrintFlags And PrintDialogFlags.DisablePagesButton Then PD.flags = PD.flags Or vbprndlglib.cdlPDNoPageNums PD.ShowPrinter (hwnd) ''//cr is a reference to a CrystalReport object cr.PrinterPort = PD.Port cr.PrinterDriver = PD.DriverName cr.PrinterName = PD.PrinterName cr.CopiesToPrinter = PD.Copies ''//always 1 on Vista/7,correct # on XP If PD.flags And vbprndlglib.cdlPDPageNums Then cr.PrinterStartPage = PD.FromPage ''// these work fine cr.PrinterStopPage = PD.ToPage End If ''//... cr.Action = 1 ''//prints report End If 我似乎无法找到有关在VB6和Windows Vista / 7中提升打印对话框之间的已知兼容性问题的任何信息.我还可以尝试使用对话框控件吗?
我提交这个问题时,答案立刻就出现了.
更改VBPrnDlg控件的Flags属性以包含修复它的vbprndlglib.cdlPDUseDevModeCopies标志,副本数量再次起作用. 希望这有助于有人陷入类似的问题! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |