Уважаемые, следующая проблема:
Функция PrintDlg не возвращает корректное значение бита PD_COLLATE поля Flags структуры PRINTDLG. Каким бы ни был установлен режим "разобрать по копиям" в диалоге, бит PD_COLLATE поля Flags возвращается нулевым. Как получить корректное значение этого режима после его установки пользователем?
msdn поясняет, что если PD_USEDEVMODECOPIESANDCOLLATE того же поля Flags установлен, то PD_COLLATE (и nCopies) не будут устанавливаться в структуре PRINTDLG, а сразу в hDevMode установятся dmCopies и dmCollate, если устройство их поддерживает. Но в том-то и дело, что в моем случае PD_USEDEVMODECOPIESANDCOLLATE не установлен.
Последовательность действий такая:
бит PD_USEDEVMODECOPIESANDCOLLATE устанавливается (и так установлен) в 0
бит PD_COLLATE устанавливается в 0 или 1 (всеравно)
Инициализируется диалог:
в нем Collate check box сначала почему-то всегда Checked
теперь Collate check box можно устанавливать в любое положение
Далее если:
диалог завершается через OK, то бит PD_COLLATE всегда 0
если
диалог завершается через Cancel, то поле Flags не изменяется.
Возможно мне неизвесны некие особенности настройки/вызова PrintDlg, Сеть на эту тему как-то невыразительна

.
Буду рад вашему совету или рекомендации где его найти.
//Работаю в Delphi5 под W2000, свою задачу решаю через API.
Здравствуйте, SAI, Вы писали:
MSDN гласит
PD_COLLATE
If this flag is set, the Collate check box is selected.
If this flag is set when the PrintDlg function returns, the application must simulate collation of multiple copies. For more information, see the description of the PD_USEDEVMODECOPIESANDCOLLATE flag.
Не отображает настройки, он отображает выполнит ли настройку сам драйвер принтера или вам надо эмулировать данно поведение. Если вам возвращается 0, то значит драйвер сам будет делать collate.
Или проблема в другом?