Hallo,
leider bin ich kein Delphianer sondern eher aus der Builder-Fraktion. Ich denke aber, dass mein Problem damit nichts zu tun hat.
Es geht um den Rave
Tip Nr 41.
Leider funktioniert das OnPrint-Event bei mir nicht. Ich benutze noch BCB 5.0 und BEX 5.1.2.
Die Events für BeforePrint und AfterPrint sind ok, es wird auch etwas gedruckt. Ich habe gesehen, dass es schon mal etwas ähnliches gegeben hat. "[Rave] Vorlagen zur Laufzeit automatisch ausfüllen" Im Prinzip hab ich es auch so gemacht, eben nur mit dem Builder:
//--------------------------------------------------------------------------
//Header File:
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // Von der
IDE verwaltete Komponenten
TRvProject *RvProject1;
TRvSystem *RvSystem1;
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
void __fastcall RvSystem1BeforePrint(TObject *Sender);
void __fastcall RvSystem1Print(TObject *Sender);
void __fastcall RvSystem1AfterPrint(TObject *Sender);
private: // Anwender-Deklarationen
public: // Anwender-Deklarationen
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern
PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//--------------------------------------------------------------------------
// CPP - File
//--------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
RvProject1->Open();
RvProject1->Execute();
RvProject1->Close();
}
//---------------------------------------------------------------------------
// THIS IS FIRED
void __fastcall TForm1::RvSystem1BeforePrint(TObject *Sender)
{
MessageDlg("Hi BeforePrint", mtInformation, TMsgDlgButtons() << mbOK,0);
}
//---------------------------------------------------------------------------
// THIS IS NOT FIRED
void __fastcall TForm1::RvSystem1Print(TObject *Sender)
{
MessageDlg("Hi On Print", mtInformation, TMsgDlgButtons() << mbOK, 0);
}
//---------------------------------------------------------------------------
// THIS IS FIRED
void __fastcall TForm1::RvSystem1AfterPrint(TObject *Sender)
{
MessageDlg("Hi AfterPrint", mtInformation, TMsgDlgButtons() << mbOK, 0);
}
//---------------------------------------------------------------------------
Die einzige Erkenntnis die ich inzwischen gewonnen habe ist, dass das OnPrint-Event dann stattfindet wenn im BeforePrint-Event mit RvSystem1->BaseReport->OnPrint = RvSystem1Print; das Event manuell zugewiesen wird. Dann feuert zwar der Event aber eine Steuerung der Reports mit
TBaseReport *l_br = dynamic_cast<TBaseReport*>(Sender);
if (l_br)
{
RvProject1->ExecuteReport("Report1");
l_br->NewPage();
RvProject1->ExecuteReport("Report2");
}
so wie im Beispiel ist nicht möglich. Es wird immer nur der Report1 gedruckt.
Please Help!