![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Господа, такая проблема:
Подаю на печать такой код: Код:
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() закомментирую, то перезагрузки не происходит! Как сделать, чтоб печатал оба КОПИРЕКТА??? Последний раз редактировалось Bargest, 14.05.2012 в 16:46. |