FastReport Tipp Top-Position im Code
Inhaltsverzeichnis
1 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.
2 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.
3 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.
4 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.

