2015-10-24 2 views
0

Я пытаюсь разрешить пользователю выбирать подходящий формат бумаги для своего принтера в моем собственном диалоговом окне настроек печати. Кто-нибудь знает работоспособное решение - желательно перекрестная платформа, но в остальном OSX.Размер бумаги для печати в Firemonkey

Если я использую TPageSetupDialog, тогда при выполнении он выдает ошибку в окне PASever Invalidpmobject, хотя диалог показывает, но не влияет на текущий размер бумаги для принтеров. Кажется, что нет никаких возможностей посмотреть, что выбрал пользователь.

Мне нужно установить размер бумаги без фактической печати, так как пользователь должен сначала настроить параметры с новым размером бумаги.

ответ

0

я наконец понял, проблема так вот это решение для тех, кто еще с проблемой:

Используйте TPageSetupDialog, но вы должны установить действительные PageWidth и PageHeight значения для текущего принтера перед вызовом - в противном случае вы получите сообщение об ошибке отображается в окне PAServer, а в поле выбора принтера будет установлен «любой принтер» вместо текущего имени принтера.

К сожалению, вы не можете получить размер бумаги непосредственно из ширины и разрешающей способности страницы принтера, так как она сообщает области печати, а не размер бумаги. Поэтому я устанавливаю значение по умолчанию A4, когда пользователь выбирает другой принтер. Я думаю, вы могли бы установить ближайший стандартный размер бумаги к вычисленному значению из файла printer.pagewidth/printer.activeprinter.activedpi.x, если хотите позаботиться о принтерах, которые не поддерживают формат A4.

Другой момент, который следует учитывать, заключается в неправильном размере страниц по умолчанию в компоненте TPageSetupDialog. Установите единицы измерения на мм и используйте ширину 210000 и высоту 297000 (обратите внимание, что в 10 раз больше значений по умолчанию) для формата A4, который должен поддерживать большинство принтеров.

Смежные вопросы