FastReport Tipp Top-Position im Code
Allgemeines
In diesem Artikel wird ein beschrieben, wie man im Fuss eines Bestellung Felder nach oben schieben kann, wenn die "Zeile" darüber ausgeschaltet wurde.
Beispiel
In einem Report für eine Bestellung gibt es im Fuss rechts die Felder für die Netto-Summe, die Mehrwertsteuer-Zeilen und den Brutto-Betrag:
Wir bezeichnen die Felder als "Zeilen". Wie in anderen Report-Generatoren gibt es in FastReport allerdings keine wirklichen Zeilen, wie in einem Text-Editor wie z.B. Microsoft Word©. Die Felder können ja millimetergenau positioniert werden. Die Verwendung des Begriffs "Zeilen" veranschaulicht aber besser, was gemeint ist.
Die Vorgaben
Es soll folgendes passieren:
- Wenn es alle beiden Mehrwertsteuer-Beträge gibt, sollen alle "Zeilen" angezeigt werden (in Anführungszeichen, weil es ja keine Zeilen im Sinne eines Texteditors gibt).
- Wenn es nur die erste Mehrwertsteuer gibt, soll die zweite Zeile unterdrückt werden und die Brutto-Zeile nach oben "rutschen".
- Wenn es gar keine Mehrwertsteuer-Beträge gibt, sollen nur die Netto-Zeile angezeigt werden.
Der Code
Im Ereignis FussPositionen⇒OnBeforePrint
muss man dazu folgenden Code eingeben:
procedure FussPositionenOnBeforePrint(Sender: TfrxComponent);
begin
// Ohne Mwst. 1: Felder unterdrücken:
if <BestellFuss."MwstBetrag1"> <= 0 then
begin
// Mwst 1 ist 0, also Zeile ausblenden:
MemoFussMwstSatz1.Visible := False;
MemoFussMwstBetrag1.Visible := False;
end;
// Ohne Mwst. 2: Felder unterdrücken:
if <BestellFuss."MwstBetrag2"> <= 0 then
begin
// Mwst 2 ist 0, also Zeile ausblenden:
MemoFussMwstSatz2.Visible := False;
MemoFussMwstBetrag2.Visible := False;
// Die Brutto-Summenzeile dahin setzen, wo die Mwst2 steht:
memoFussGesamtbetragText.Top := MemoFussMwstSatz2.Top;
memoFussGesamtBetragBrutto.Top := MemoFussMwstSatz2.Top;
end;
// Wenn es GAR KEINE Mwst. gibt: Brutto-Zeile ausblenden:
if ( <BestellFuss."MwstBetrag1"> <= 0 ) and ( <BestellFuss."MwstBetrag2"> <= 0 ) then
begin
memoFussGesamtbetragText.Visible := False;
memoFussGesamtBetragBrutto.Visible := False;
end;
end;
Im Einzelnen:
Dieser Code...
if <BestellFuss."MwstBetrag1"> <= 0 then
begin
// Mwst 1 ist 0, also Zeile ausblenden:
MemoFussMwstSatz1.Visible := False;
MemoFussMwstBetrag1.Visible := False;
end;
...blendet die Zeile mit den Mehrwertsteuer-Feldern 1 aus, wenn es keinen Mehrwertsteuer-Betrag 1 gibt.
Dieser Code...
if <BestellFuss."MwstBetrag2"> <= 0 then
begin
// Mwst 2 ist 0, also Zeile ausblenden:
MemoFussMwstSatz2.Visible := False;
MemoFussMwstBetrag2.Visible := False;
// Die Brutto-Summenzeile dahin setzen, wo die Mwst2 steht:
memoFussGesamtbetragText.Top := MemoFussMwstSatz2.Top;
memoFussGesamtBetragBrutto.Top := MemoFussMwstSatz2.Top;
end;
...blendet die Zeile mit den Mehrwertsteuer-Feldern 2 aus, wenn es keinen Mehrwertsteuer-Betrag 2 gibt.
Zusätzlich wird die Zeile mit dem Brutto-Betrag nach oben verschoben, und zwar auf die Position, an der die Mehrwertsteuer-Felder 2 stehen. Dazu wird die Eigenschaft Top der Felder auf die Top-Eigenschaft der Mehrwertsteuer-Felder 2 gesetzt. Die Felder werden also nach oben versetzt, und zwar auf die Top-Position, auf der die (ausgeblendeten) Mehrwertsteuer-Felder 2 stehen!
Dieser Code...
// Wenn es GAR KEINE Mwst. gibt: Brutto-Zeile ausblenden:
if ( <BestellFuss."MwstBetrag1"> <= 0 ) and ( <BestellFuss."MwstBetrag2"> <= 0 ) then
begin
memoFussGesamtbetragText.Visible := False;
memoFussGesamtBetragBrutto.Visible := False;
end;
...blendet die Zeile mit dem Brutto-Betrag aus, wenn es weder Mehrwertsteuer-Betrag 1 noch Mehrwertsteuer-Betrag 2 gibt.

