FastReport Beispiel Auftragsformular Struktur des Kopfs: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „== Allgemeines == Hie wird die Struktur eines Kopfbereichs eines Reports für ein Auftragsformular (Angebot, Auftrag) beschrieben. == Der Aufbau der Kopf-Be…“) |
(kein Unterschied)
|
Version vom 22. Dezember 2015, 01:05 Uhr
Inhaltsverzeichnis
1 Allgemeines
Hie wird die Struktur eines Kopfbereichs eines Reports für ein Auftragsformular (Angebot, Auftrag) beschrieben.
2 Der Aufbau der Kopf-Bereiche
| Bereich | Beschreibung |
|---|---|
| 1 | Der Header HeaderPositionen wird auf jeder Seite gedruckt und beinhaltet die Auftragsnummer und Seitennummer. Dazu mit der rechten Maustaste auf den Bereich klicken klicken und die Option "Auf neuer Seite wiederholen" auswählen. Über eine Formel wird dieses Band auf der ersten Seite jedoch unterdrückt, weil im Kopf die Auftragsnummer schon drin steht!
procedure HeaderPositionenOnBeforePrint(Sender: TfrxComponent);
begin // Auf der 1. Seite unterdrücken:
if <Page#> = 1 then
HeaderPositionen.Visible := False
else
HeaderPositionen.Visible := True;
end;
|
| 2 | Der Header HeaderPositionen hat ein darunterliegendes Kind-Band ("Child") mit dem Namen ChildHeaderPositionen. Es beinhaltet die Überschriften der Positionen.
Die Überschriften sind normale Textfelder ohne Rahmen. Unter den Textfeldern liegt ein weiteres Textfeld, das von ganz links bis ganz rechts geht und einen Rahmen unten und einen oben hat. Damit das Band nicht gedruckt wird, wenn es gar keine Positionen für die neue Seite mehr gibt, wird dies über einen Code unterdrückt, wie in diesem Artikel beschrieben. |
| 3 | Die Positionen werden von einer Gruppe umschlossen, die den Namen GroupHeaderKapitel hat. Hier werden die Kapitelnummer, -Bezeichnung und der -Preis ausgegeben. Die Gruppe wird ganz einfach festgelegt:
Die Felder kommen aus der Tabelle Positionen. |
| 4 | Hier stehen nun die eigentlichen Position im Band DetailPositionen.
Die Felder kommen aus der Tabelle Positionen. Damit das Überschriften-Band nicht gedruckt wird, wenn es gar keine Positionen für die neue Seite mehr gibt, wird dies über einen Code in OnAfterPrint dieses Bands unterdrückt, wie hier beschrieben. Da die Kapitel-Position (1.0, 2.0, 3.0 usw.) schon im Gruppenkopf gedruckt wird, muss im Detailbereich die Ausgabe unterdrückt werden, wenn es sich um eine ".0"-Position handelt. Dazu wird dieser Code benutzt: procedure DetailPositionenOnBeforePrint(Sender: TfrxComponent);
begin
// Kapitel-Position ausblenden:
if <Positionen."PosNr"> = 0 then
DetailPositionen.Visible := False // Kapitel-Position
else
DetailPositionen.Visible := True; // Normale Position
Wenn das Kennzeichen "Seitenwechsel Vorher" benutzt werden soll, kann dieser Code verwendet werden: // Wenn das Kennzeichen "Seitenwechsel Vorher" gesetzt ist:
if <Positionen."PosNr"> > 0 then // NICHT bei Kapitel-Position, das wird da schon gemacht!
if <Positionen."Seitenwechsel_0Nein_1Vorher_2Nachher"> = 1 then
Engine.NewPage;
Der Code für dieses Band beinhaltet noch weitere Abfragen, um z.B. das Rabattfeld optional zu unterdrücken. |
| 5 | Das Child-Band ChildDetailPositionen hängt am DetailPositionen-Band. Es ist deshalb ein Child-Band, weil es per Kennzeichen abschaltbar ist, z.B. mit:
procedure DetailPositionenOnBeforePrint(Sender: TfrxComponent);
begin
// Dieser Code wird ausgeführt, BEVOR das Positionen-Detail-Band ausgegeben wird.
// Wenn Kennzeichen 4 auf 'Nein' steht: Bezeichnung nicht drucken!
if <AuftragsKopf."KENNZ4"> = 'Nein' then
ChildDetailPositionen.Visible := False
else
ChildDetailPositionen.Visible := True;
|
| 6 | Der Footer FussPositionen wird unterhalb der Positionen ausgegeben. Er beinhaltet die Auftragssummen, Mwst., Zahlungskonditionen usw.
Im Code kann man das Rabattfeld und Mwst.-Feld unter bestimmten Bedigungen ausschalten, z.B. mit: procedure FussPositionenOnBeforePrint(Sender: TfrxComponent);
begin
// Kennzeichen 3 = Rabatt Ja/Nein
if <AuftragsKopf."KENNZ3"> = 'Nein' then
begin
memoFooterRabatt.Visible := False;
memoFooterPreis.Visible := False;
AuftrStatistikSummeRabatt.Visible:= False;
MemoFooterGespreis.Visible:= False;
end;
// Mwst-Zeile unterdrücken, wenn es keine gibt:
if <AuftragsFuss."MwstSatzProzent"> = 0 then
begin
AuftragsFussMwstSatzProzent.Visible := False;
AuftragsFussMwstBetrag.Visible := False;
AuftragsFussGesamtBetragBrutto.Visible := False;
end;
end;
|
2.1 Anmerkungen
- Namen der Bänder und Felder
- Die einzelnen Bänder (Bereiche) haben aussagekräftige Namen bekommen. "DetailPositionen" ist aussagekräftiger als "Details1". Sie sollten es sich angewöhnen, einem Band gleich nach dem einfügen in den Report einen vernünftigen Namen zu geben!
- Formatierungen im Code
- Wenn mehrere Code-Zeilen untereinander stehen, sind diese mit Leerstellen aufgefüllt, damit sie untereinander stehen. Das dienst nur der besseren Lesbarkeit und ist nicht unbedingt notwendig!
2.2 Code-Sprache
Alle Beispiele (wie auch alle GEVITAS-Standard-Reports) verwendet als Code-Sprache "Pascal". Alternativ kann man auch die Sprach-Syntax Basic, C++ oder JavaScript verwenden.
Beispiel Pascal:
procedure FussPositionenOnBeforePrint(Sender: TfrxComponent);
begin
// Kennzeichen 3 = Rabatt Ja/Nein
if <AuftragsKopf."KENNZ3"> = 'Nein' then
begin
memoFooterRabatt.Visible := False;
memoFooterPreis.Visible := False;
AuftrStatistikSummeRabatt.Visible:= False;
MemoFooterGespreis.Visible:= False;
end;
// Mwst-Zeile unterdrücken, wenn es keine gibt: //JC//151221//
if <AuftragsFuss."MwstSatzProzent"> = 0 then
begin
AuftragsFussMwstSatzProzent.Visible := False;
AuftragsFussMwstBetrag.Visible := False;
AuftragsFussGesamtBetragBrutto.Visible := False;
end;
end;
Beispiel Basic:
sub FussPositionenOnBeforePrint(Sender)
' Kennzeichen 3 = Rabatt Ja/Nein
if <AuftragsKopf."KENNZ3"> = "Nein" then
memoFooterRabatt.Visible = False
memoFooterPreis.Visible = False
AuftrStatistikSummeRabatt.Visible= False
MemoFooterGespreis.Visible = False
end if
' Mwst-Zeile unterdrücken, wenn es keine gibt: //JC//151221//
if <AuftragsFuss."MwstSatzProzent"> = 0 then
begin
AuftragsFussMwstSatzProzent.Visible = False
AuftragsFussMwstBetrag.Visible = False
AuftragsFussGesamtBetragBrutto.Visible = False
end if
end sub
- Achtung
- Das Wechseln der Code-Sprache in einem bestehenden Report löscht den ganzen Code des Reports!

