Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

Проблемы с Printer.PageWidth/PageHeight   Найти похожие ветки 

 
Andy BitOff ©   (2005-12-15 18:18) [0]

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

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-15 21:37) [1]

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


 
Джо ©   (2005-12-15 21:39) [2]

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


 
Andy BitOff ©   (2005-12-15 21:52) [3]

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


 
Prohodil Mimo ©   (2005-12-15 22:25) [4]

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

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


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


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

Это не понял.


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

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


 
Andy BitOff ©   (2005-12-16 19:12) [7]

Блин, вчера так не вовремя кончилось время =( Но сегодня я опять в строю =)
Такое ощущение, что никто не работал с 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.


 
Джо ©   (2005-12-16 19:25) [8]


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

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


 
Andy BitOff ©   (2005-12-16 19:44) [9]

Джо ©   (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;



Страницы: 1 вся ветка

Текущий архив: 2006.01.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.031 c
14-1135503730
Vudu
2005-12-25 12:42
2006.01.22
Чем можно перегнать Mov файл в avi ?


4-1131625646
max999
2005-11-10 15:27
2006.01.22
Вопрос по размерам окна


8-1124134643
Никита
2005-08-15 23:37
2006.01.22
Как залить замкнутый участок в Canvas каким либо цветом


4-1131393148
MAXHO
2005-11-07 22:52
2006.01.22
Как поместить все значки из трея на форму?


2-1135686772
vasa
2005-12-27 15:32
2006.01.22
Как запустить программу на серверее вроде PHP?