Главная страница
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.036 c
2-1136187898
Khim
2006-01-02 10:44
2006.01.22
Как можно вставить свою иконку в MessageBox, подробнее


2-1136395174
ArtemESC
2006-01-04 20:19
2006.01.22
Прописать в реестре прогу.


10-1112243476
AloneAli
2005-03-31 08:31
2006.01.22
OLE+Excel


2-1135798689
JEK2
2005-12-28 22:38
2006.01.22
Передать данные в главную форму из неглавной


6-1128695410
NikNet
2005-10-07 18:30
2006.01.22
Как изменить Сетевое имя/IP/Коментарий?