Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблемы с Printer.PageWidth/PageHeight [D7, WinXP]


Andy BitOff ©   (2005-12-15 18:18:00) 

В справке написано, что свойства возвращают ширину/высоту страницы в пикселях и даже пример использования.

begin
 with Printer do
 begin
   BeginDoc;
   Canvas.TextRect(Rect(200,200,PageWidth-200,PageHeight-200), 200, 200, Memo1.Lines.Text);
   EndDoc;
 end;
end;


Так вот, мой принтер (LJ 4200) возвращает значения 4 и 6 с чем-то тысяч на А4. При этом, если я вывожу картинку на канвас размером во весь лист, то печатается чуть меньше чем четверть изображения, но она занимает весь лист (бумажный). А если использовать пример из справки с большим текстом, то на листе видна одна строка (начало текста).

Поясните мне пожалуйста.


Andy BitOff   (2005-12-16 19:44:00) [1]

Джо ©   (16.12.05 19:25) [8]

Всмысле? Какие цифры или что значит pw/ph?

При изменении приведенного в первом посте кода в соответствии с рассказанным мной, то как не странно он работает правильно, а в первой редакции не правильно.

begin
with Printer do
begin
  BeginDoc;
  Canvas.TextRect(Rect(200,200,pw-200,ph-200), 200, 200, Memo1.Lines.Text);
  EndDoc;
end;
end;


Джо   (2005-12-16 19:25:00) [2]


> [7] Andy BitOff ©   (16.12.05 19:12)

И что за значения ты таким образом получил?


Andy BitOff   (2005-12-16 19:12:00) [3]

Блин, вчера так не вовремя кончилось время =( Но сегодня я опять в строю =)
Такое ощущение, что никто не работал с TPrint напрямую, а все пользуются компонентами.

Prohodil Mimo ©   (15.12.05 22:25) [4]
Этот компонент я давно использую, спасибо. Но для данной задачи он не подходит.

GuAV ©   (16.12.05 00:39) [6]
Ваш код посмотрел, но поскольку уже решил эту задачу, смотрел поверхностно ;)

А решилось так, и как подозревал Prohodil Mimo, в деле оказался замешан DPI. Попробовать была возможность на двух принтерах (LJ1100 и LJ4200) и на Acrobat PDFWriter. Вот решение:

pw:=Printer.PageWidth div (GetDeviceCaps(Printer.Handle, LogPixelsX) div 100);
ph:=Printer.PageHeight div (GetDeviceCaps(Printer.Handle, LogPixelsY) div 100);

Подсмотрено в реализации TPrint.


GuAV   (2005-12-16 00:39:00) [4]

Может, ошибка в коде ?
Мой пример попробуй
http://www.kladovka.net.ru/index.cgi?pid=list&rid=261


GuAV   (2005-12-16 00:31:00) [5]


> если я вывожу картинку на канвас размером во весь
> лист, то печатается чуть меньше чем четверть
> изображения, но она занимает весь лист (бумажный).

Это не понял.


Prohodil Mimo   (2005-12-15 22:25:00) [6]

подозреваю что это для определённого DPI. попробуй при печати другой DPI выбери.

посмотри заодно вот это: http://www.delphiarea.com/products/preview/


Andy BitOff   (2005-12-15 21:52:00) [7]

Ну а почему тогда они не соответствуют действительности? Что это глюк принтера?


Джо   (2005-12-15 21:39:00) [8]

А что пояснить? Да, они возвращают  ширину/высоту страницы в пикселях.


Andy BitOff   (2005-12-15 21:37:00) [9]

[робко] Никто не знает или я не понятно описал проблему.


Наверх

Титульная страница Поиск, карта сайта Написать письмо