У нас есть приложение VB6, которое использует vbprndlg.dll
библиотека, чтобы показать диалоговые окна выбора печати пользователю. Здесь недавно мы получили отчеты от пользователей на Windows Vista и 7 (оба 32 и 64 бита) заявление, что количество копий всегда остается 1 независимо от того, что они вставляют количество поля копий на диалоговом окне. При выполнении того же самого кода XP Pro машина, количество передач копий как он должно к объекту создания отчетов.
До сих пор я запустил тесты с помощью и управления стандартным диалогом и vbprndlg.dll
для повышения диалоговых окон печати и на Vista и на 7 компьютерах, и каждый раз, количество копий, как всегда сообщают, 1, неважно, если я ввожу число в поле или использую выключатели стрелки для увеличения числа копий. Другие свойства - такой как, какой принтер выбран и от и до номеров страниц, сообщают правильно.
Когда я трудно кодирую количество копий к Кристаллическому Объекту отчета (показанный ниже), корректный # печати копий - таким образом, это кажется большим количеством проблемы с диалоговым управлением вместо Кристаллического Объекта отчета.
Вот отрывок кода, который я использую:
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. Есть ли что-либо еще, что я могу попробовать диалоговыми средствами управления?