FastReport: Kapitel unterdrücken wenn alle Positionen ausgegeben sind
1 Aufgabe
In der Auftragsverwaltung gibt es Aufträge, die den verschiedenen Teilmengen entsprechen, die gefertigt und ausgeliefert werden.
Die Positionen, die vollständig ausgeliefert wurden, werden unterdrückt. Allerdings kommen die Kapitel-Überschriften noch, obwohl alle folgenden Positionen des Kapitels vollständig ausgegeben sind.
Aufgabe ist es also, die Kapitel zu unterdrücken, wenn alle Positionen des jeweiligen Kapitels ausgegeben sind.
Dazu kann man das Feld
KapitelAusgabeMenge
verwenden.
2 Lösung
Das GEVITAS-Druckprogramm "GevitasFormPrint", mit dem die FastReport-Formulare erzeugt werden, stellt ein paar besondere Felder zur Verfügung. Diese ermöglichen Konstruktionen, die man mit Code im Report nicht ermöglichen könnte.
Im Feld
Positionen.KapitelAusgabeMenge
steht in jeder Zeile der Positionen (also auch in der Kapitel-Position!) die Summe der Menge, die für dieses Kapitel noch auszugeben ist.
Also kann man die Kapitel-Position mit diesem Code (OnBeforePrint im Gruppen-Kopf, wo das Kapitel gedruckt wird) unterdrücken:
procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent); begin // Dieser Code wird ausgeführt, BEVOR das Positionen-Gruppenkopf-Band (die Kapitel-Überschrift) ausgegeben wird. // Wenn es keine Position im Kapitel gibt, die noch auszugeben ist: GroupHeader1.Visible := True; // Default if <Positionen."KapitelAusgabeMenge"> = 0 then begin GroupHeader1.Visible := False; exit; end; ... end;
Fertig sieht das dann so aus:
Es kommen nur noch die Kapitel-Überschriften, die noch nicht vollständig ausgegeben wurden!