Page 1 of 1

How I create borders to pages preview or printed?

Posted: Wed Mar 20, 2013 11:19 am
by RobertoVG
How I create borders pages?
(I not found an example or property ready for use)

if i use the properties:
SRichViewEdit,ViewProperty.MarginsRectVisible
SRichViewEdit,ViewProperty.MarginsPen
in edit mode, when is set to preview or print the border disappear.

(in other applications in the form of set usually comprises border page left, right, top, bottom separately)

Posted: Thu Mar 21, 2013 8:33 am
by Sergey Tkachenko
The only solution is drawing this border yourself.

In ScaleRichView, you can use TSRichViewEdit.OnPaintPage event.
This event has the full page rectangle as a parameter PageRect. To get margins, use SRichViewEdit.TopMargin100Pix and so on.
For example, the top line Y coordinate is PageRect.Top + SRichViewEdit1.TopMargin100Pix

You can distinguish drawing in TSRichViewEdit and printing using Printing: Boolean parameter of this event.
Another useful parameter – Prepaint: Boolean. This event is called twice: before drawing page content (Prepaint=True) and after (False). Use this parameter to draw only one time, either before or after.

border on preview pages to print

Posted: Thu Mar 21, 2013 12:27 pm
by RobertoVG
In EditMode on event onPaint i draw retangle (border) ok.

In preview mode, the onPaint is executed once

But

when i alter to preview, (srvvmPreviewMode) using srvActionsResource.srvActionPreview1 the
event onPaint (SRichViewEdit) is executed but the retangle that drawing in editMode disappears! Why ?

(this contradicts what you said "by default, these drawing will be both on screen and on paper/preview")

border pages

Posted: Thu Mar 21, 2013 1:43 pm
by RobertoVG
Please disregard the previous message.Sorry.

I had understood incorrect event (onPaint).

Now I understand that the correct event is onPaintPage as follows and this word.
. . . .

procedure TFormEditor.SRichViewEdit1PaintPage(Sender: TObject;
PageNo: Integer; PageRect, R: TRect; Canvas: TCanvas; Prepaint,
Printing: Boolean);
begin
if Prepaint then
exit;
with Canvas do begin
Brush.Style := bsClear;

pen.Width := 2;//BorderWidth;
pen.Color := clBlack;//BorderColor;

rectangle( PageRect.Left+30,PageRect.Top+30,
PageRect.Right-30, PageRect.Bottom-30);

end


end;