FastReport Tipp Top-Position im Code: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „== Allgemeines == In diesem Artikel wird ein beschrieben, wie man im Fuss eines Bestellung Felder nach oben schieben kann, wenn die "Zeile" darüber ausgescha…“) |
|||
| (10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 3: | Zeile 3: | ||
In diesem Artikel wird ein beschrieben, wie man im Fuss eines Bestellung Felder nach oben schieben kann, wenn die "Zeile" darüber ausgeschaltet wurde. | 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 1 == | ||
| + | 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: | ||
| + | |||
| + | [[Datei:Bestellung_Fuss_Bsp_01.png]] | ||
| + | |||
| + | [[Datei:Info.png|links]] 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''' | ||
| + | |||
| + | [[Datei:Bestellung_Fuss_Bsp_02.png]] | ||
| + | |||
| + | 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. | ||
| + | |||
| + | |||
| + | == 2. Beispiel == | ||
| + | |||
| + | In den Auftragspositonen soll die Überschrift "Alternativ:" über der Positions-Bezeichnung stehen (wenn's alternativ ist): | ||
| + | |||
| + | Alternativ: | ||
| + | Artikelbeispielbezeichnung 100,00 usw. | ||
| + | |||
| + | |||
| + | <nowiki> // Alternativ-Positionen farbig kennzeichnen:</nowiki> | ||
| + | <nowiki> if <Positionen."Alternativ_0_1"> = 1 then</nowiki> | ||
| + | <nowiki> begin</nowiki> | ||
| + | <nowiki> // Alternativ-Position: Ges.Betrag farbig: </nowiki> | ||
| + | <nowiki> memoPosGesBetrag.Font.Color := clHighlight;</nowiki> | ||
| + | <nowiki> </nowiki> | ||
| + | <nowiki> // Textfeld "Alternativ" (Überschrift) sichtbar:</nowiki> | ||
| + | <nowiki> memoAlternativCaption.Visible := True;</nowiki> | ||
| + | <nowiki> </nowiki> | ||
| + | <nowiki> // Felder um 0.5 cm nach unten verschieben, weil die Überschrift jetzt da ist:</nowiki> | ||
| + | <nowiki> memoPosMenge.Top := 0.5 * fr1cm;</nowiki> | ||
| + | <nowiki> RichPosText.Top := 0.5 * fr1cm;</nowiki> | ||
| + | <nowiki> memoPosEinzelPreis.Top := 0.5 * fr1cm;</nowiki> | ||
| + | <nowiki> memoPosFaktor.Top := 0.5 * fr1cm;</nowiki> | ||
| + | <nowiki> memoPosRabattProzent.Top := 0.5 * fr1cm;</nowiki> | ||
| + | <nowiki> memoPosGesBetrag.Top := 0.5 * fr1cm;</nowiki> | ||
| + | <nowiki> </nowiki> | ||
| + | <nowiki> end</nowiki> | ||
| + | <nowiki> else</nowiki> | ||
| + | <nowiki> begin</nowiki> | ||
| + | <nowiki> // Normale Position: Ges.Betrag schwarz, Textfeld "Alternativ" unsichtbar:</nowiki> | ||
| + | <nowiki> memoPosGesBetrag.Font.Color := clWindowText;</nowiki> | ||
| + | <nowiki> memoAlternativCaption.Visible := False;</nowiki> | ||
| + | <nowiki> </nowiki> | ||
| + | <nowiki> // Felder ganz oben (in dem Band!) auf 0.5 cm:</nowiki> | ||
| + | <nowiki> memoPosMenge.Top := 0 * fr1cm;</nowiki> | ||
| + | <nowiki> RichPosText.Top := 0 * fr1cm;</nowiki> | ||
| + | <nowiki> memoPosEinzelPreis.Top := 0 * fr1cm;</nowiki> | ||
| + | <nowiki> memoPosFaktor.Top := 0 * fr1cm;</nowiki> | ||
| + | <nowiki> memoPosRabattProzent.Top := 0 * fr1cm;</nowiki> | ||
| + | <nowiki> memoPosGesBetrag.Top := 0 * fr1cm;</nowiki> | ||
| + | <nowiki> end;</nowiki> | ||
| + | |||
Aktuelle Version vom 24. Januar 2019, 12:35 Uhr
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 1
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.
2.1 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.
2.2 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.
3 2. Beispiel
In den Auftragspositonen soll die Überschrift "Alternativ:" über der Positions-Bezeichnung stehen (wenn's alternativ ist):
Alternativ: Artikelbeispielbezeichnung 100,00 usw.
// Alternativ-Positionen farbig kennzeichnen:
if <Positionen."Alternativ_0_1"> = 1 then
begin
// Alternativ-Position: Ges.Betrag farbig:
memoPosGesBetrag.Font.Color := clHighlight;
// Textfeld "Alternativ" (Überschrift) sichtbar:
memoAlternativCaption.Visible := True;
// Felder um 0.5 cm nach unten verschieben, weil die Überschrift jetzt da ist:
memoPosMenge.Top := 0.5 * fr1cm;
RichPosText.Top := 0.5 * fr1cm;
memoPosEinzelPreis.Top := 0.5 * fr1cm;
memoPosFaktor.Top := 0.5 * fr1cm;
memoPosRabattProzent.Top := 0.5 * fr1cm;
memoPosGesBetrag.Top := 0.5 * fr1cm;
end
else
begin
// Normale Position: Ges.Betrag schwarz, Textfeld "Alternativ" unsichtbar:
memoPosGesBetrag.Font.Color := clWindowText;
memoAlternativCaption.Visible := False;
// Felder ganz oben (in dem Band!) auf 0.5 cm:
memoPosMenge.Top := 0 * fr1cm;
RichPosText.Top := 0 * fr1cm;
memoPosEinzelPreis.Top := 0 * fr1cm;
memoPosFaktor.Top := 0 * fr1cm;
memoPosRabattProzent.Top := 0 * fr1cm;
memoPosGesBetrag.Top := 0 * fr1cm;
end;

