gpt4 book ai didi

vb6 - 从未从打印对话框中传递的份数,始终为 1

转载 作者:行者123 更新时间:2023-12-02 20:04:17 26 4
gpt4 key购买 nike

我们有一个 VB6 应用程序,它使用 vbprndlg.dll 库向用户显示打印选择对话框。最近,我们收到 Windows Vista 和 7(32 位和 64 位)用户的报告,指出无论他们在对话框的份数框中输入什么内容,份数始终保持为 1。当在 XP Pro 计算机上运行完全相同的代码时,副本数会像应有的那样传递给报告对象。

到目前为止,我已经使用通用对话框控件和 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.cdlPDUuseDevModeCopies 标志修复了该问题,副本数再次起作用。

希望这可以帮助遇到类似问题的人!

关于vb6 - 从未从打印对话框中传递的份数,始终为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3407600/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com