Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 259
  • Last Modified:

Print form

Hi

   I have to print a form and center it on the page. When i print the form (with form1.print), its always print it in the left top corner of the paper and i didnt want that. How can i center it ?
Id like to have some example.

Thanks
0
sierra20
Asked:
sierra20
  • 4
  • 3
  • 2
1 Solution
 
pjdbCommented:
Var
  DestRect:TRect;
Begin
 Printer.BeginDoc;
 DestRect.Left:=Printer.Canvas.ClipRect.Left + (Printer.Canvas.ClipRect.Right - Form1.Width) div 2;
 DestRect.Right:=DestRect.Left + Form1.Width;
 DestRect.Top:=Printer.Canvas.ClipRect.Top + (Printer.Canvas.ClipRect.Bottom - Form1.Height) div 2;
 DestRect.Bottom:=DestRect.Top + Form1.Height;
 Printer.Canvas.CopyRect( DestRect, Form1.Canvas, Form1.ClientRect);
 Printer.EndDoc;
end;
0
 
MatveyCommented:
Here is a code that draws the form image on the Printer.Canvas in the center by calculating coordinates:

Printer.BeginDoc;
Printer.Canvas.Draw(Printer.PageWidth/2 - Form1.GetFormImage.Width/2, Printer.PageHeight/2 - Form1.GetFormImage.Height/2, Form1.GetFormImage);
Printer.EndDoc

Cheers, Matvey
0
 
pjdbCommented:
Use div instead of / for the division, the parameters need to be integer
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
MatveyCommented:
Of course, thanks.
0
 
sierra20Author Commented:
Ok, now im able to center the form but when i print it, it didnt print on all the paper, it just print the form really small. How can i print on all the paper??
0
 
sierra20Author Commented:
Ok, now im able to center the form but when i print it, it didnt print on all the paper, it just print the form really small. How can i print on all the paper??
0
 
MatveyCommented:
It's even easier - set form.PrintScale := poPrintToFit, and call form.print, or center it and print.
If you want your form to cover all the page, than you have to stretch it. Use Printer.Canvas.StretchDraw for this.
0
 
sierra20Author Commented:
Nice, its work now.
Just answers and thanks

0
 
MatveyCommented:
OK, glad it works.
As I said - use PrintScale or StretchDraw.
Good luck, Matvey
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 4
  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now