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

Вниз

Печать на принтер   Найти похожие ветки 

 
Alek Aaz ©   (2003-09-09 13:33) [0]

Добрый день.
Вывожу на принтер HP6L файлик такой процедурой:

begin
IF Edit1.Lines.Strings[0]="" then exit;
............................
IF PrintDialog1.Execute then
with Printer do
begin
Title:=Form1.Caption;
BeginDoc;
Canvas.Font:=Edit1.Font;
PHeight:=PageHeight;
THeight:=Canvas.TextHeight(Edit1.Lines.Strings[0]);
NLines:=Floor(PHeight/THeight);
NPage:=Floor(Edit1.Lines.Count/NLines)+1;
TPage:=1;
For i:=0 to Edit1.Lines.Count-1 Do
Begin
THeight:=Canvas.TextHeight(Edit1.Lines.Strings[i]);
Canvas.TextOut(0, 10+(i-(TPage-1)*NLines)*(THeight), Edit1.Lines.Strings[i]);
IF i=(TPage*NLines) then
Begin
TPage:=TPage+1;
NewPage;
End;
End;
EndDoc;
end;

Если жирную строчку не вставлять, то все ОК. Если поставить, то текст начинает "уезжать". Следующая строчка сдвинута относительно верхней в право на N символов. Доходит до правой границы печати и далше печатает по 3 символа от строки. Но ведь я указал Canvas.TextOut(0, ! Куда она лезет-то? Кто знает в чем тут грабли?


 
Johnmen ©   (2003-09-09 14:13) [1]

Грабли - в кривых драйверах для лазерных принтеров ХП.
Особенно это наглядно для 6L. Букет глюков его драйвера впечатляет ! И особенно это связано со шрифтами.

Попробуй поставь "облегченный" клиентский драйвер. Глюков почти нет, но и печатать будет медленнее...:)


 
Alek Aaz   (2003-09-09 16:35) [2]

Да не... не катит...
В принципе я нашел где глюк.
в PrinterSetupDialog изменил страницу на горизонтальную. А если на принтер смотреть через PrintDialog то страница оказалась вертикальная! Когда поменял все стало Ок. Но не понимаю я! Нафига нужен тогда PrinterSetupDialog? Что он делает-то?


 
Anatoly Podgoretsky ©   (2003-09-09 16:50) [3]

Для обратной связи между твоей программой и пользователем.


 
Alek Aaz ©   (2003-09-10 06:31) [4]

2Anatoly Podgoretsky
:) Обожаю "дельные" советы.


 
Anatoly Podgoretsky ©   (2003-09-10 07:37) [5]

Так не спрашивай :-)


 
Alek Aaz ©   (2003-09-10 08:20) [6]

2Anatoly Podgoretsky
Так не спрашивай
^^^^^^^^^^^^^
???????

2All
Вот еще вопросы:
// часть первая - определяем количество строк на листе
Printer.Canvas.Font:=Edit1.Font;
PHeight:=Printer.PageHeight;
THeight:=Printer.Canvas.TextHeight(Edit1.Lines.Strings[0]);
NLines:=Floor(PHeight/THeight);
NPage:=Floor(Edit1.Lines.Count/NLines)+1;
PrintDialog1.MinPage:=1;
PrintDialog1.FromPage:=1;
PrintDialog1.ToPage:=1;
PrintDialog1.MaxPage:=NPage;
// часть вторая - хочет ли пользователь что-нибудь исправить?
IF PrintDialog1.Execute then
// часть третья - определяем количество строк на листе и распечатываем
with Printer do
begin
Title:=Form1.Caption;
BeginDoc;
Canvas.Font:=Edit1.Font;
PHeight:=PageHeight;
THeight:=Canvas.TextHeight(Edit1.Lines.Strings[0]);
NLines:=Floor(PHeight/THeight);
NPage:=Floor(Edit1.Lines.Count/NLines)+1;
TPage:=1;

Так вот. THeight выдает разное значение в первой и третьей части. В первой - неправильное. Пробовал пихать Printer.Refresh и до и после Printer.Canvas.Font:=Edit1.Font; Ноль эмоций. Что делать?
Кажется здвиг получается когда строка не вмещается на страницу. Щас попробую или clipReg попробовать или TextRect или TextFlag поставить в ETO_CLIPPED

По поводу сменить драйвера. Так лучше может ОС сменить :)



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

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

Наверх




Память: 0.48 MB
Время: 0.041 c
14-71918
Vovchik_A
2003-09-04 16:40
2003.09.22
Анек


7-71966
_FreeMan_
2003-07-10 00:35
2003.09.22
Как отключить звуковую(или сетевую) карту?


1-71591
BustaBoss
2003-09-09 03:10
2003.09.22
ShellListView - помогайте!!!


6-71794
Dwemer
2003-07-22 00:31
2003.09.22
Как поймать момент подключения к инету?


3-71560
Domkrat
2003-08-28 22:41
2003.09.22
Вопрос по IBX - default значения полей в базе данных Firebird