Sample OnPrint event code for C++Builder

Category

Code Based - General

Question

What is a typical example of an OnPrint event for C++Builder?

Solution

This sample code, which is placed inside the OnPrint event for C++Builder users, should make printing using RAVE fairly easy:

void __fastcall TForm1::ReportPrinter1Print(TObject *Sender) {
    TBaseReport *rp = dynamic_cast(Sender);
    rp->SetFont("Arial",12);
    rp->Home();
    rp->Println("This is a test");
  }

And another example showing how to print with a TMemoBuf object:

void __fastcall TForm1::ReportSystem1Print(TObject *Sender) {
    TBaseReport *rp = dynamic_cast(Sender);
    TMemoBuf *mb = new TMemoBuf();
    try {
    // Initialize memo buffer
      mb->LoadFromFile("LETTER.TXT");
      mb->PrintStart = rp->SectionLeft;
      mb->PrintEnd = rp->SectionRight;
    // Modify text in memo buffer
      mb->ReplaceAll("{NAME}","John P Doe",true);
      mb->ReplaceAll("{DAY}","21st",true);
      mb->ReplaceAll("{MONTH}","November",true);
    // Output memo buffer
      rp->PrintMemo(mb,0,false);
    } catch(...) {
      mb->Free();
      return;
    }
    mb->Free();
  }