Hallo,
ich habe vor, Etiketten zu drucken (Endlospapierrolle, daher unterschiedliche Formate innerhalb eines Reports möglich). Die Etiketten sind dann jeweils eine Seite, mal horizontal oder vertikal ausgerichtet. Der Drucker kann das.
Dazu habe ich einen Report mit 3 Seiten/Layouts definiert.
Jetzt möchte ich nur je Datensatz die Etiketten 1+2 drucken, weil ich das Etikett 3 zB nicht benötige.
Ich verwende keine Bänder, sondern weise die Inhalte über OnGetValue direkt zu (per
Value oder mit
c:=frxReport.FindObject('sn'); if c<>nil then TfrxMemoView(c).Text:='bla';).
Problem: es generiert mir die Vorschau eben immer mit allen 3 Seiten.
Durch die Forensuche habe ich die Möglichkeit gefunden, mit
PrintOptions.PageNumbers eine Auswahl für den Ausdruck zu definieren zB '1,2,4,5'. Aber das reduziert ja die Vorschau nicht.
Dann habe ich die Methode probiert, die immer wieder im Forum empfohlen wird, in der jede Seite in einer separaten Datei ist:
Code:
frxReport.LoadFromFile('eti1.fr3');
frxReport.PrepareReport(true);
frxMainReport.PreviewPages.AddFrom(frxReport); //oder AddPage(...) oder AddSourcePage(...) - was ist der Unterschied??
frxMainReport.ShowPreparedReport;
Hierbei bekomme ich aber ständig Zugriffsverletzungen - offenbar, weil ich durch die OnGetValue auf Elemente zugreife, die in dem jeweils geladenen Report nicht drin sind. Also habe ich die mit
if c<>nil then behandelt, aber die Exceptions treten auch innerhalb der frxXML auf (frxXML.TfrxXLMItem.GetItems(-1)).
Bei meinen ungezählten Versuchen hatte ich es auch schon ohne Exceptions, dann waren die Seiten aber leer.
Was tun?