Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   QuickReport.Header auf jeder Seite und ForceNewPage (https://www.delphipraxis.net/203529-quickreport-header-auf-jeder-seite-und-forcenewpage.html)

norwegen60 26. Feb 2020 16:39

QuickReport.Header auf jeder Seite und ForceNewPage
 
Hallo zusammen,

ich verwende Delphi XE udn QuickReport 5.06

Eine Frage von der ich zunächst dachte, dass sie ganz einfach zu lösen ist:

Was muss ich tun, wenn ich eine Master-Tabelle mit einem Satz und dazu zwei Detail-Tabellen mit bis zu 700 Datensätzen habe und
  1. bei Detail 1 auf allen Seiten Überschrift 1
  2. bei Detail 2 auf allen Seiten Überschrift 2 haben möchte

Egal ob ich
Delphi-Quellcode:
TQRGroup
oder
Delphi-Quellcode:
TQRBand.rbGroupHeader
verwende wird der immer nur am Anfang der Tabelle gedruckt. Nicht aber auf den Folgeseiten
Delphi-Quellcode:
TQRBand.rbColumnHeader
wird zwar auf allen Seiten gedruckt, aber auf der ersten Seite zwei mal und der gleiche auch bei Detail2

Die Settings ForceNewPage, RePrintOnNewPage scheinen keinerlei Auswirkungen zu haben. (Gilt auch für KeepOnOnePage)

Hat jemand eine Lösung?

himitsu 26. Feb 2020 17:07

AW: QuickReport.Header auf jeder Seite und ForceNewPage
 
Klingt wie das Problemchen hier
https://borland.public.cppbuilder.vc...printonnewpage

norwegen60 26. Feb 2020 18:39

AW: QuickReport.Header auf jeder Seite und ForceNewPage
 
Den Beitrag hatte ich noch nicht gefunden, er hilft mir aber auch nicht weiter. Oder ich verstehe ihn nicht richtig.
Ich habe mehrere Subdetails und keine Kombination gefunden, in der die Lösung weiter hilft. Ich hatte auch schon zuvor mit den Linkbändern rum probiert.

Jetzt habe ich eine Lösung die geht

qrbaPageHeader................TQrBand.rbPageHeader
---qrcbDetail1Header..........TQrChildPand.Parent = qrbaPageHeader
---qrcbDetail2Header..........TQrChildPand.Parent = qrcbDetail1Header
qrbaMaster.......................TQrBand.rbDetail
---qrbaDetail1Header..........TQrBand.GroupHeader
---qrsdDetail1...................TQrSubDetail Header = qrbaDetail1Header, Footer = qrbaDetail1Footer
---qrbaDetail1Footer..........TQrBand.GroupFooter

---qrbaDetail2Header..........TQrBand.GroupHeader
---qrsdDetail2...................TQrSubDetail Header = qrbaDetail2Header, Footer = qrbaDetail2Footer
---qrbaDetail2Footer..........TQrBand.GroupFooter

Und dann der große Gag
Delphi-Quellcode:
procedure TrptTest2.qrbaDetail1FooterBeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean);
begin
  qrcbDetail1Header.Enabled := false;
end;

procedure TrptTest2.qrbaDetail1HeaderBeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean);
begin
  qrcbDetail1Header.Enabled := true;
end;

procedure TrptTest2.qrbaDetail2FooterBeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean);
begin
  qrcbDetail2Header.Enabled := false;
end;

procedure TrptTest2.qrbaDetail2HeaderBeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean);
begin
  qrcbDetail2Header.Enabled := true;
end;
Das heißt ich blende die an den PageHeader angebundenen ChildBänder ein und aus. Natürlich müssen die die redundante Tabellenbeschriftung wie die beiden GroupHeader enthalten.
Im Moment denke ich drüber nach nur ein ChildBand anzubinden und im qrbaDetail2HeaderBeforePrint den jeweilgen Inhalt des Orginalen GroupHeader zu kopieren

Dafür gehört mindestens ein Verantwortlicher bei QBS geteert und gefedert.

norwegen60 26. Feb 2020 19:18

AW: QuickReport.Header auf jeder Seite und ForceNewPage
 
Jetzt habe ich auch ein anderes Mysterium von QuickReport gelöst, nämlich die Positionierung von Bändern.
Durch normales verschieben schafft man es in obigem Konstrukt kaum den Deatil2-Block vor Detail1 zu schieben. Auch nicht, wenn man die Top-Eigenschaft von Deatil2 vor Detail 1 setzt.

Es klappt aber sicher, mit folgenden Schritten:
  • QR-Report in die Text-Ansicht wechseln
  • im Source-Code den kompletten qrsdDetail2-Block vor qrsdDetail1 schieben
  • wieder zurück in Form-Ansicht wechseln
Danach wird qrsdDetail2 vor qrsdDetail1 angezeigt und auch die GroupHeader und GroupFooter werden korrekt zugeordnet.
Es muss also nur der TSubDetail Block verschoben werden.

Zeit für den nächsten QBS-Manager.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz