Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.014 c
3-71542
grusty
2003-08-29 17:34
2003.09.22
Проблема с Locate в ADO...


1-71665
Immortal_Death
2003-09-08 14:06
2003.09.22
Иконка в прложениях без формы.


6-71790
Blondin
2003-07-22 14:56
2003.09.22
Подтверждение получения письма


14-71843
PVOzerski
2003-09-01 09:19
2003.09.22
Катастрофа с проектом FreePascal


1-71731
Марат
2003-09-10 14:04
2003.09.22
Календарь





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский