![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с 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][робко] Никто не знает или я не понятно описал проблему.