How to ensure a label printing at the end.
I have a standard procedure that making a label to print it at the end.
i.e *** End of Report ***' and place it on sammary band and using the
inherited
But for some reports, that is a sub-report in sammary band. I don't know how
to set it in the procedure that ensure the label is at the end ?
i.e *** End of Report ***' and place it on sammary band and using the
inherited
But for some reports, that is a sub-report in sammary band. I don't know how
to set it in the procedure that ensure the label is at the end ?
This discussion has been closed.
Comments
exists in the summary band. The band has an objects array property which
you can loop through looking for a subreport component by checking its class
type. There is an article on looping through the objects in the CodeBased
thread of the tech-tips newsgroup.
Otherwise, it may be possible to use a draw command approach and add a
TppDrawText draw command object on the last page using the Report.OnEndPage
event. You would need to hook into the summary band's afterprint event to
get the last printing position to be able to correctly position the draw
command.
uses
ppDrwCmd, ppTypes, ppUtils;
procedure TForm1.ppReport1EndPage(Sender: TObject);
var
liHeight: Integer;
lDrawText: TppDrawText;
liTop: Integer;
liWidth: Integer;
lBitmap: TBitmap;
begin
lBitmap := TBitmap.Create;
liTop := FCurrentPosition;
lDrawText := TppDrawText.Create(nil);
lDrawText.Page := ppReport1.Engine.Page;
lDrawText.Text := 'Some Text';
lDrawText.Font.Size := 10;
lDrawText.Font.Name := 'Arial';
lDrawText.Font.Color := clRed;
lDrawText.Color := clAqua;
lDrawText.Left := ppReport1.PrinterSetup.PageDef.mmMarginLeft +
(ppReport1.PrinterSetup.PageDef.mmPrintableWidth) div 2;
lBitmap.Canvas.Font := lDrawText.Font;
liHeight := lBitmap.Canvas.TextHeight(lDrawText.Text);
liHeight := ppToMMThousandths(liHeight, utScreenPixels, pprtVertical,
ppReport1.Printer);
lDrawText.Height := liHeight;
lDrawText.Top := liTop - liHeight;
liWidth := lBitmap.Canvas.TextWidth(lDrawText.Text);
liWidth := ppToMMThousandths(liWidth, utScreenPixels, pprtHorizontal,
ppReport1.Printer);
lDrawText.Width := liWidth;
lBitmap.Free;
end;
procedure TForm1.ppSummaryBand1AfterPrint(Sender: TObject);
begin
FCurrentPosition := ppReport1.Engine.PrintPosRect.Bottom;
end;
Cheers,
Jim Bennett
Digital Metaphors
http://www.digital-metaphors.com
info@digital-metaphors.com