Page 1 of 1
Header and footer don't print in TDBRichViewEdit
Posted: Mon Jul 09, 2012 10:40 am
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.
Posted: Mon Jul 09, 2012 11:42 am
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
Posted: Mon Jul 09, 2012 3:07 pm
by AlbertDasi
Thank you for the information.
Header and footer in PDF
Posted: Fri Aug 03, 2012 3:42 pm
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.
Posted: Tue Aug 07, 2012 9:42 am
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.
Posted: Wed Aug 08, 2012 9:51 am
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