Header and footer don't print in TDBRichViewEdit

General TRichView support forum. Please post your questions here
Post Reply
AlbertDasi
Posts: 21
Joined: Tue Nov 04, 2008 11:34 am
Location: Barcelona (Catalonia)
Contact:

Header and footer don't print in TDBRichViewEdit

Post by AlbertDasi »

Hello,

In the editor I have a TDBRichViewEdit. I assign a values for header and footer:
RVA_HeaderInfo.Text := 'this is a header';
RVA_FooteriNFO.Text := 'this is a footer';

In the page setup shows correctly the value assigned in RVA_HeaderInfo.Text and RVA_FooteriNFO.Text, also when I print in the edit shows the footer and header.

The problem is after save the report in the database and show it in a TDBRichViewEdit (or TDBRichView) and print it don't show the footer and header. What I do to show footer and header when I print??

My version of DBRichViewEdit is 11.0.5 and I use Delphi 6.
Sergey Tkachenko
Site Admin
Posts: 17560
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Post by Sergey Tkachenko »

RVA_Header/FooterInfo are used only when you print using TrvActionPrint ot TrvActionQuickPrint, and they are not saved in documents.
If you want to save them, see http://www.trichview.com/forums/viewtopic.php?t=3196
AlbertDasi
Posts: 21
Joined: Tue Nov 04, 2008 11:34 am
Location: Barcelona (Catalonia)
Contact:

Post by AlbertDasi »

Thank you for the information.
AlbertDasi
Posts: 21
Joined: Tue Nov 04, 2008 11:34 am
Location: Barcelona (Catalonia)
Contact:

Header and footer in PDF

Post by AlbertDasi »

Hello,

I print header and footer correctly using TrvActionPrint but now I'll like to show the footer and header in a PDF document.

I try this:

Code: Select all

    
rve2     := TRichView(DBRichview1);

rveFooter.Clear;
RVEFooter.InsertText('footer page test');
rveFooter.Format;
RVE2.RTFReadProperties.SetFooter(rveFooter.RVData);
RVE2.Format;

RVPdf.RichView := Rve2;

RVPdf.SaveToPDFFile(path);
DBRichview1 is a TDBRichView
rveFooter os a TrichViewEdit
RVPDF is a TRichViewPDF.


The compilation of the code is OK but in the generate PDF doesn't show the footer. Any advice?

Thanks.
Sergey Tkachenko
Site Admin
Posts: 17560
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Post by Sergey Tkachenko »

RichViewActions use TRVPrint.OnPagePrepaint to draw a header and a footer. They are drawn if printing is made using TRVPrint, and only by the specific actions.

TRichViewPDF - is this an old PDF component what is not available now?
I do not have its code now, but I suppose it uses TRVReportHelper to draw pages.
In order to draw a header or a footer, you need to modify its code: find the place of the code where it calls RVReportHelper.DrawPage (or DrawPageAt), and use Canvas.TextOut to draw the header/footer at the same coordinates.
AlbertDasi
Posts: 21
Joined: Tue Nov 04, 2008 11:34 am
Location: Barcelona (Catalonia)
Contact:

Post by AlbertDasi »

Thank your very much Sergey!

I modified TRVReportHelper.DrawPageAt in RVReport unit, and TRichViewPDF.SaveToPDFFile in trvpdf unit and works fine!

Code: Select all

procedure TRVReportHelper.DrawPageAtWithHeaderAndFooter(Left, Top, APageNo: Integer;
  ACanvas: TCanvas; APreview: Boolean; AHeight: Integer;header:string;footer:string);
var pt: TPoint;
begin
  SetWindowOrgEx(ACanvas.Handle, -Left, -Top, @pt);
  try
    DrawPage(APageNo, ACanvas, APreview, AHeight);
    acanvas.TextOut(-Left, -Top,header); //Grava capçalera
    acanvas.TextOut(-Left, AHeight,footer); //Grava peu de pàgina
  finally
    SetWindowOrgEx(ACanvas.Handle, pt.x, pt.y, nil);
  end;
end;

Code: Select all

procedure TRichViewPDF.SaveToPDFFileWithHeaderAndFooter(FileName: string; Header: string; Footer: String); 
var
  i, Parent, DocWidth, DocHeight, ATop, ALeft, ARight, ABottom: integer;
  ms: TMemoryStream;
  OldCursor: TCursor;
begin
[...]
   FReportHelper.DrawPageAtWithHeaderAndFooter(ALeft, ATop, i + 1, FRolePDF.Canvas, false, DocHeight, header, footer);
[...]
end;
Ah, TRichViewPDF is a freeware VCL component to print TRichView on TRolePDF.Canvas:
author: mohab elsherif
version 1.03
Post Reply