
31.08.2007, 13:08
|
Прохожий
|
|
Регистрация: 31.08.2007
Сообщения: 2
Репутация: 10
|
|
вощем добавил в код:
procedure TForm2.Button1Click(Sender: TObject);
Код:
var
X1,X2,Y1,Y2:integer;
i, start, stop: integer;
PointsX,PointsY:double;
begin
PrintDialog1.Options:=[poPageNums,poSelection];
PrintDialog1.FromPage:=1;
PrintDialog1.ToPage:=PageControl1.PageCount;
PrintDialog1.MinPage:=1;
PrintDialog1.MaxPage:=PageControl1.PageCount;
if not PrintDialog1.Execute then Exit;
if PrintDialog1.PrintRange=prAllPages
then
begin
Start:=PrintDialog1.MinPage-1;
Stop:=PrintDialog1.MaxPage-1;
end
else // если выбрано отличное от 'Print All'
if PrintDialog1.PrintRange=prSelection
then
begin
Start:=PageControl1.ActivePageIndex;
Stop:=Start;
end
else // если выбрано отличное от 'Выделенный фрагмент'
begin
Start:=PrintDialog1.FromPage-1;
Stop:=PrintDialog1.ToPage-1;
end;
// начало печати
Printer.BeginDoc;
Printer.Canvas.Refresh;
PointsX:=GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSX)/30;
PointsY:=GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSY)/30;
X1:=round((printer.PageWidth - Pagecontrol1.Width*PointsX)/2);
Y1:=round((printer.PageHeight - Pagecontrol1.Height*PointsY)/2);
X2:=round(X1+Pagecontrol1.Width*PointsX);
Y2:=round(Y1+Pagecontrol1.Height*PointsY);
Printer.Canvas.CopyRect(Rect(X1,Y1,X2,Y2),Pagecontrol1.Canvas,Rect(0,0,Pagecontrol1.Width,Pagecontrol1.Height));
for i:=start to stop do
begin
PageControl1.Pages[i].PaintTo(Printer.Handle,500,500);
if i<>stop
then Printer.NewPage;
end;
Printer.EndDoc;
end;
картинка не на много увеличилась, лейблы в ней остались такого же размера. Объясните что в этом коде отвечает именно за масштабирование? И будут ли увеличиватся лейблы вместе с панелькой?
|