FastReport Farb-Konstanten

Aus GEVITAS
Wechseln zu: Navigation, Suche

1 Allgemeines

Allen sichtbaren Objekte eines Report können Sie eine Farbe zuweise, entweder fest im Objekt-Inspektor oder über einen Code.

Bitte beachten Sie
Die Eigenschaft Objekt.Color gibt die Hintergrundfarbe an! Wenn Sie die Schriftfarbe ändern wollen, so müssen Sie die Eigenschaft Objekt.Font.Color setzen!

2 Konstanten

Diese Farb-Konstanten gibt es:

FastReport Farbkonstanten.png

Die wichtigsten Farben sind:


Konstante Farbe
clNone Keine Farbe, das Objekt ist durchsichtig. Dies ist die Standardfarbe für Felder.
clBlack Schwarz
clWhite Weiß
clRed Rot
clYellow Gelb
clGreen Dunkles Grün
clLime Helles grün
clNavy Dunkles Blau
clGray Dunkles Grau
clSilver Helles Grau


3 Farbwerte über Hexadezimale Zahl

Alternativ zu den Konstanten kann man eine Farbe auch über eine hexadezimale Zahl festlegen.

Dabei geben die drei niederwertigen Bytes die RGB-Farbintensität für Blau, Grün und Rot an.

$00FF0000 Blau mit voller Intensität
$0000FF00 Grün
$000000FF Rot
$00000000 Schwarz
$00FFFFFF Weiß 

Es sind alle denkbaren Kombinationen möglich.

Das höchstwertige Byte steuert die Annäherung an die Systenfarbe

$00 Farbe ist der in der Systempalette am ähnlichsten
$01 ergibt eine Farbe, die derjenigen in der aktiven Palette am ähnlichsten ist.
$02 ergibt eine möglichst ähnlichste Farbe in der logischen Palette des aktuellen Gerätekontexts. 

Normalerweise verwendet man "$00".

Tipp
Wenn Sie eine bestimmte Farbe wollen, so setzen Sie die Farbe eine beliebigen Objekts im Objektinspektor, kopieren die Hexa-Zahl in Zwischenablage und fügen Sie diese in den Code ein.

4 Beispiel

4.1 Ein Feld mit grauer Schrift

In einem Angebot soll das Feld GesamtBetrag (PositionenGesBetrag) grau dargestellt werden, wenn es eine Alternativ-Position ist. Dazu wählt man das Feld und wählt im Objekt-Inspektor unter Ereignisse aus:

FastReport OnBeforePrint.png

Mit einem Doppelklick darauf kommt man in den Code-Editor und gibt diesen Code ein:

 if (<Positionen."Alternativ_0_1"> = 1) and (<Positionen."PosNr"> > 0 ) then
        PositionenGesBetrag.Font.Color := clWindowFrame  
 else            
        PositionenGesBetrag.Font.Color := clWindowText;


Hinweis
Das Feld hat den Namen Alternativ_0_1. Es könnte auch nur Alternativ heißen, aber das "_0_1" gibt Ihnen den Hinweis darauf, dass das Feld eine 0 beinhaltet (☐=Ausgeschaltet) oder eine 1 (☑=eingeschaltet).
Diese Namensgebung verwenden wir oft, weil wir der Meinung sind, dass z.B. das Feld Bezahlt_0_1 aussagekräftiger ist als Bezahlt.
Das Feld Artikelart_1M_2V_3DL_4AZ mag auf den ersten Blick ungewöhnlich erscheinen. Schaut man jedoch genauer hin, erkennt man, dass dieses Feld eine Bedeutung hat: 1=Miete, 2=Verkauf 3=Dienstleistung 4=Verkauf. Einfach, oder?


So, nun zu der Funktion des Codes:

Code Bedeutung
if (<Positionen."Alternativ_0_1"> = 1) Wenn das Alternativ-Kennzeichen der Position eingeschaltet ist ( = 1)...
and (<Positionen."PosNr"> > 0 ) ...und wenn es kein Kapitel ist (<Positionen."PosNr"> > 0 )
then dann...
PositionenGesBetrag.Font.Color := clWindowFrame ...wird die Schriftfarbe auf mittelgrau gesetzt...
else ansonsten...
PositionenGesBetrag.Font.Color := clWindowText ...wird die Schriftfarbe auf die Standard-Schriftfarbe gesetzt, im Regelfall schwarz (man könnte auch clBlack verwenden).

4.2 Man beachte die Klammern

in diesem Code! Die sind wichtig!

     if (<Positionen."Alternativ_0_1"> = 1) and (<Positionen."PosNr"> > 0 ) then

In einer if-Anfrage mit and oder or wird jede Abfrage darauf geprüft, ob die Antwort wahr (true) oder falsch (false) ist. In diesem Fall muss also diese Teil der Abfrage

     if (<Positionen."Alternativ_0_1"> = 1) and (<Positionen."PosNr"> > 0 ) 

wahr ergeben und dieser Teil:

     if (<Positionen."Alternativ_0_1"> = 1) and (<Positionen."PosNr"> > 0 )

Jeder dieser beiden Abfragen sind sozusagen ein Block für sich, der ein logischen Ergebnis Wahr oder Falsch ergibt. Und solch ein Block muss halt in Klammern stehen, so ist das festgelegt! Diese Festlegung entspricht der Vorgehensweise in den meisten üblichen Programmiersprachen.

5 Links