FastReport: Abhängige Formatierung von Feldern

Aus GEVITAS
Version vom 17. September 2015, 15:09 Uhr von Gevitas (Diskussion | Beiträge) (Formatierung per Code ändern)
Wechseln zu: Navigation, Suche

1 Allgemeines

Felder in einem Report kann man im FastReport-Designer selbst ja ganz einfach formatieren, indem man man das Feld markiert (einfach anklickt) und dann in den Formatlietsen oben einstellt:

  • Schriftart
  • Schriftgröße
  • Schriftstil
  • Ausrichtung

usw. Hier wird beschrieben, wie man die Formatierung auch abhängig von bestimmten Werten (z.B. einem Druck-Kennzeichen aus der Datenbank) ändern kann.

2 Highlight setzen

2.1 Feld bearbeiten

Klicken Sie mit der rechten Maustaste auf das Feld und wählen Bearbeiten aus.

Dann wählen Sie in dem Bearbeitungsfenster die Seite Highlight aus.

Beispiel:

FastReport Feld Highlight.png

Hier können Sie nun Formeln angeben, die unter bestimmten Ergebnissen die Formatierung des Feldes festlegen.

Für ein Feld können mehrere Formeln hinterlegt werden. So ist es z.B. möglich, dass ein Feld in Fettschrift ausgegeben wird, wenn ein bestimmtes Kennzeichen der Wert 1 hat und in roter Farbe, wenn der Wert 2 ist.

Um eine Formel hinzuzufügen klicken Sie auf Hinzufügen, zum Bearbeiten einer Formel auf Ändern.


2.2 Daten

Hier kann man Formeln mit Datenbank-Feldern erstellen:

FastReport Feld Highlight Daten.png


2.3 Variablen

FastReport Feld Highlight Variablen.png


2.4 Funktionen

FastReport Feld Highlight Funktionen.png


3 Formatierung per Code ändern

Eine Alternative zum oben beschriebenen Highlight-Verfahren ist es, Felder per Code zu formatieren. Dieser Code wird erst kurz vor dem Drucken (oder anzeigen) des Objektes ausgeführt und ändert z.B. die Schrift des Feldes.

Das ist etwas aufwändiger, aber viel mächtiger.

3.1 OnBeforePrint: Kurz vor dem Drucken

Jedes Objekt in einem Report hat im Objekt-Inspektor Ereignisse. Uns interessiert von diesen Ereignissen nur eines:

OnBeforePrint

Dieses Ereignis wird von FastReport kurz vor dem Drucken des Objekts aufgerufen. Sie können nun einen Code schreiben, der das Objekt (oder andere!) formatiert, positioniert usw.

3.2 Einfaches Beispiel =

In einem Angebots-/Auftragsreport gibt es im Titel ein Feld "Rabatt":

FastReport Auftrag RabattTitel.png

Nun will man aber, dass dieses Feld nicht gedruckt wird, wenn es gar keinen Rabatt im Auftrag gibt. Also öffnet man im Objektinspektor das Ereignis OnBeforePrint mit einem Doppelklick darauf und gibt diesen Code ein:

  // Titel "Rabatt" in Überschrift unterdrücken, wenn keine
  // Rabatt-Postion vorhanden ist.
  if <AuftrStatistik."AnzahlRabattPos"> = 0 then
      memoHeaderRabattTitel.Visible := False
  else                       
      memoHeaderRabattTitel.Visible := True;           
  • Hinweis:
Hinter diesem Feld liegt ein leeres Textfeld, das den Rahmen anzeigt, wenn dieses Feld unsichtbar ist! Damit dieses Feld sich der maximalen Höhe des Bandes anpasst, wurde die Eigenschaft Auf Maximalhöhe dehnen eingeschaltet.


3.3 Aufwändiges Beispiel =

4 Farben

Sie können jedem Objekt eine Farbe zuweisen, abhängig von einem Wert in einem Datenbank-Feld. Dazu kann man der Eigenschaft "Color" eine Farb-Konstante oder eine Hexadezimale Zahl zuweisen.

Siehe FastReport Farb-Konstanten.


5 Links