Размер печати принтера - PullRequest
       3

Размер печати принтера

1 голос
/ 05 октября 2010

Как установить размер печати (ширину и высоту) по коду без отображения диалогового окна? Спасибо

Ответы [ 4 ]

3 голосов
/ 06 октября 2010

Из ваших комментариев к другим ответам кажется, что вы хотите выбрать тип бумаги (A4, Legal и т. Д.) - это правильно?

На этой странице указано, что для выбора типа бумаги необходимо использовать функцию Printer.GetPrinter, чтобы получить дескриптор устройства для принтера, а затем использовать GlobalLock, чтобы получить указатель, к которому можно получить доступ, приведение к PDeviceMode. Затем существует PaperSize член TDeviceMode, на который указывает указатель, который может быть A4, Legal и т. Д.

Это все только что было найдено через Google. Перейдите к «Свойствам принтера» на этой странице , где я получил эту информацию. На этой странице упоминается замена лотка тоже.

Мета-примечание

Кстати, из всех ответов и ваших комментариев - например, одна цитата:

Это не то, что я хочу. Спасибо - Armin

@ Армин: Тогда, возможно, Вы должны более четко заявить, что вы хочу. - Кен Уайт

ясно, что вам нужно научиться задавать четкие вопросы . Когда вы впервые задали вопрос о SO, вас бы направили на эту страницу . Если вы пропустили его, вернитесь и прочитайте его. Если вы его прочитали, вам может пригодиться эта страница 'Задавая лучшие вопросы' , которую тоже можно прочитать.

Это для вашего пособия - если вы хотите найти решение, и мы предполагаем, что вы делаете это, потому что вы об этом спросили, тогда вам выгодно сделать все возможное, чтобы прояснить вашу проблему, не сбивает с толку, и легко для кого-то понять, чтобы они могли ответить. Никто не обязан отвечать - мы просто делаем это, потому что хотим по любой причине. Не усложняйте и не ставьте ненужные препятствия на пути.

Например, вы написали «размер печати» и «я имею в виду (как я уже говорил) формат бумаги. Я хочу изменить его (изменить ширину и высоту бумаги)». Это может означать несколько вещей. Размер полей? Разрешение или изменение единиц, на которые вы печатаете? Тип бумаги, то есть физический размер бумаги, на которой вы будете печатать, если принтер поддерживает несколько параметров? Вам нужно быть ясно, что вы хотите . Это может показаться вам понятным, но это потому, что вы думали об этом - единственное знание, которое мы имеем о вашей проблеме, - это то, что вы написали, поэтому вам необходимо включить в то, что вы пишете, все, что нам нужно знать, с нуля, понять проблему.

3 голосов
/ 06 октября 2010

См. Документацию MSDN для GetPrinter и SetPrinter . Вы можете найти основные примеры их использования в Delphi здесь и здесь . Во втором примере есть специальный код для настройки размера бумаги.

1 голос
/ 05 октября 2010

есть много для этого ...

Вот один маленький кусочек, который помогает получить правильный размер шрифта:

Printer.Canvas.Font.PixelsPerInch:=GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSY);
0 голосов
/ 05 октября 2010

Что именно вы подразумеваете под "размером печати"?Вы имеете в виду, что вы хотите выбрать тип бумаги для печати, если ваш принтер загружен бумагой другого формата?Тогда я не знаю.

Если вы просто хотите изменить поля, это легко, но зависит от того, как вы печатаете.

Если вы печатаете вручную (используя Printer.BeginDoc и т. Д.), то вы просто рисуете на холсте притера подальше от краев!Если вы печатаете с использованием TRichEdit, вы можете изменить свойство PageRect.

...