Количество копий, никогда не передающих от диалогового окна печати, всегда 1

У нас есть приложение 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. Есть ли что-либо еще, что я могу попробовать диалоговыми средствами управления?

6
задан Heather M 4 August 2010 в 16:24
поделиться