FastReport Tipp Top-Position im Code: Unterschied zwischen den Versionen

Aus GEVITAS
Wechseln zu: Navigation, Suche
K
 
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 ==
+
== 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:
 
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:
Zeile 13: Zeile 13:
  
  
== Die Vorgaben ==
+
=== Die Vorgaben ===
  
 
Es soll folgendes passieren:
 
Es soll folgendes passieren:
Zeile 21: Zeile 21:
 
* Wenn es '''gar keine''' Mehrwertsteuer-Beträge gibt, sollen nur die Netto-Zeile angezeigt werden.
 
* Wenn es '''gar keine''' Mehrwertsteuer-Beträge gibt, sollen nur die Netto-Zeile angezeigt werden.
  
== Der Code ==
+
=== Der Code ===
  
 
Im Ereignis '''FussPositionen⇒OnBeforePrint'''
 
Im Ereignis '''FussPositionen⇒OnBeforePrint'''
Zeile 101: Zeile 101:
  
 
...blendet die Zeile mit dem '''Brutto-Betrag aus''', wenn es weder '''Mehrwertsteuer-Betrag 1''' noch '''Mehrwertsteuer-Betrag 2''' gibt.
 
...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>
 +
 +
 +
  
 
== Links ==
 
== Links ==

Aktuelle Version vom 24. Januar 2019, 12:35 Uhr

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:

Bestellung Fuss Bsp 01.png

Info.png
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

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.


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;


4 Links