Einzelnen Beitrag anzeigen

hmb

Registriert seit: 24. Jul 2007
12 Beiträge
 
#1

Ravereport TRvSystem OnPrint

  Alt 24. Jul 2007, 18:56
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!
  Mit Zitat antworten Zitat