[BDS2006] RaveReport - NewPage bei OnGetRow



  • Hallo,

    ich fülle einen RaveReport im Quelltext über das OnGetRow-Ereignis der TConnection. Die Daten stammen aus einem Vector.
    Mein Problem ist nun, das ich, auf Grund gewisser Bedingungen, eine neue Seite erstellen muss. Mit BaseReport->NewPage() ist das auch möglich. Allerdings wird dann auf der gleichen Höhe weiter gedruckt, wie auf der letzten Seite aufgehört wurde. Ich möchte aber, das wieder oben angefangen wird.
    Wie kann ich das erreichen?

    mfg
    xXx



  • So, ich habs selber herausgefunden. In der Nevrona-Newsgroup hab ich einen Beitrag gefunden. Die Lösung ist etwas von hinten durch die Kniescheibe ins Gesicht:

    Als erstes fügt man im VisualEditor der Row noch eine FooterRow hinzu. Diese bekommt die Höhe 0 und eine Dummy-Connection zugewiesen, die im Quelltext per OnOpen-Ereignis einen RowCount von 1 bekommt (sonst wird der Footer ignoriert!). Dann geht man in den Event-Editor und erstellt ein OnBeforePrint-Ereignis für den Footer, mit folgendem Inhalt:

    If RaveProject.GetParam('PageBreak') = 'ON' Then
          self.FinishNewPage := True;
       else
          self.FinishNewPage := False;
       end if;
    

    Im entsprechenden OnGetRow-Ereignis der geünschten Datenverbindung kann man nun per

    RvProject1->SetParam("PageBreak","OFF");
    //bzw
    RvProject1->SetParam("PageBreak","ON");
    

    einen Seitenumbruch für den nächsten Datensatz einfügen.

    mfg
    xXx


Log in to reply