Просмотр темы
Автор
Как печатать два CopyRect(а)???
Arxivator
Пользователь
Сообщений: 1
Зарегистрирован: 14.05.12
Опубликовано 14-05-2012 05:30
Господа, такая проблема:
Подаю на печать такой код:
procedure TForm0.Print1Click(Sender: TObject);
var
K,A1,B1,A2,B2,A3,B3,A4,B4,
X01,Y01,X02,Y02,X03,Y03,X04,Y04,
X1,X2,X3,X4,Y1,Y2,Y3,Y4,
X1T,Y1T,X2T,Y2T,X3T,Y3T,X4T,Y4T,
X1L,Y1L,X2L,Y2L,X3L,Y3L,X4L,Y4L,
X1T1,Y1T1,X2T1,Y2T1,X3T1,Y3T1,X4T1,Y4T1,
X1L1,Y1L1,X2L1,Y2L1,X3L1,Y3L1,X4L1,Y4L1:Integer;
begin
Printer.BeginDoc;
Printer.Canvas.Refresh;
PointsX:=GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSX)/120;
PointsY:=GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSY)/120;
//Первый Badge>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
X1:=round(Form1.ClientWidth*PointsX);
Y1:=round(500*PointsY);
Printer.Canvas.CopyRect(Rect(100,100,X1+100,Y1+100),Form1.Canvas,
Rect(0,0,Form1.ClientWidth,500));
X1T:=round(Form1.Edit1.Left*PointsX+100);
Y1T:=round(Form1.Edit1.Top*PointsY+100);
X2T:=round(Form1.Edit2.Left*PointsX+100);
Y2T:=round(Form1.Edit2.Top*PointsY+100);
X3T:=round(Form1.Edit3.Left*PointsX+100);
Y3T:=round(Form1.Edit3.Top*PointsY+100);
X4T:=round(Form1.Edit4.Left*PointsX+100);
Y4T:=round(Form1.Edit4.Top*PointsY+100);
K:= round(Form1.Edit1.Height*PointsY/10);
Printer.Canvas.Font.Size:= 14;
Printer.Canvas.Font.Name:= 'Arial';
Printer.Canvas.TextOut(X1T+K, Y1T+K, Form1.Edit5.Text);
Printer.Canvas.TextOut(X2T+K, Y2T+K, Form1.Edit6.Text);
Printer.Canvas.TextOut(X3T+K, Y3T+K, Form1.Edit7.Text);
Printer.Canvas.TextOut(X4T+K, Y4T+K, Form1.Edit8.Text);
X01:=round(Form1.Image1.Width*PointsX);
Y01:=round(Form1.Image1.Height*PointsY);
A1:=round(Form1.Shape1.Width*PointsX/3);
B1:=round(Form1.Shape1.Height*PointsY/10);
Printer.Canvas.CopyRect(Rect(A1+100,B1+100,A1+X01+100,B1+Y01+100),
Form1.Image1.Picture.Bitmap.Canvas,
Rect(0,0,Form1.Image1.Picture.Bitmap.Width,Form1.Image1.Picture.Bitmap.Height));
Printer.EndDoc;
end;
У меня нет принтера, потому печатает один раз в файл *.xps.
Если тут же подаю на печать второй раз, то он перезагружает компьютер!!!
А печать на компе с принтером перезагружает сразу не печатая вообще!
Причину я понял: Потому что в коде между Printer.BeginDoc; и Printer.EndDoc;
Два раза стоят Printer.Canvas.CopyRect().
Когда один Printer.Canvas.CopyRect() закомментирую то перезагрузки не происходит!
Как сделать чтоб печатал оба КОПИРЕКТА???
Перейти на форум:
Вопросы от новичков
Базы данных
Графика и игры
Интернет и сети
Компоненты и классы
Мультимедия
Программа и интерфейс
Синтаксис
Технологии
Файловая система
Разное
Вопросы от новичков
Visual Basic
Assembler
Prolog
Turbo Pascal
GPSS
PHP
Perl
Апдейт 6 версии
Обсуждение модов
Разное
Битые ссылки
Исходники
WebReg
GamesBase
Converter AMR - WAV
FreeSMS
Партнерские программы
Платёжные системы и расчёты через Интернет
Продвижение и оптимизация сайтов
О рекламе
Контекстная реклама
Yandex
Google
Rambler
Aport, Webalta и другие
Рейтинги, Каталоги
Обмен ссылками
Мошенничество в интернете
Новости
Юмор
Флейм
О сайте и форуме
Работа: предложения и спрос