CrystalReports: Positionshintergrund mit alternierenden Farben
Aus GEVITAS
Inhaltsverzeichnis
1 Anforderung
Der Hintergrund der Positionen (Detail-Bereich) soll abwechselnd weiß und farbig sein.
2 Lösungsansatz
Dieser Lösungsansatz sieht so aus:
- Man erstellt in einer Formel im Berichtskopf eine Variable, die man auf "Tue" (=Wahr, eingeschaltet) setzt.
- Im Positionsbereich (also den Details) hat man eine zweite Formel, die den Zustand der Variable immer umkehrt, also von "True" auf "False" oder umgekehrt. Diese Formel kommt in den Detailereich und liefert also abwechselnd "True" oder "False" zurück.
- Im Selektionsassistent des Detailbereichs "-> Farbe" gibt man nun an, welche Farbe verwendet werden soll, wenn die Variable auf "True" steht.
2.1 Formel im Berichtskopf
Erstellen Sie eine neue Formel "HintergrundDunkel_Init" mit diesem Inhalt:
// Erstellt eine "Shared"-Variable, die auch in anderen Formeln verwendet werden kann: // booleanVar : Die Variable kann True oder False (Wahr oder Falsch) annehmen. // Setzt die Variable dann auf einen definierten Anfangszustand. // Im Berichskopf platzieren! Shared booleanVar bDunkel; bDunkel := True;
2.2 Formel im Detailsbereich
Erstellen Sie eine neue Formel "HintergrundDunkel_EinAus" mit diesem Inhalt:
// Mit dieser Formel wird die Variable bei jedem Aufruf umgekehrt: // Aus True wird False und umgekehrt! // Im Detail-Bereich platzieren. whileprintingRecords; Shared booleanVar bDunkel; // Ein- und ausschalten des Merkers: bDunkel := not bDunkel; // Rückgabe des neuen Wertes: bDunkel;
Wenn Sie z.B. mit den Auftragspositionen arbeiten und das Druckkenzeichen MAUFPO.DRUCKKENNZ verwenden, müssen Sie die Formel u.U. anpassen:
// Ein- und ausschalten des Merkers abhängig vom Druckkennzeichen: if {Maufko.DruckKennz} = 0 then bDunkel := not bDunkel;
2.3 Formel verwenden
Im Selektionsassistent des Detailbereichs "-> Farbe" gibt man nun an, ob bzw. welche Farbe verwendet werden soll, wenn die Variable auf "True" steht:
// Diese Formel für bedingte Formatierung muss einen der folgenden Werte zurückgeben Konstanten für die Farbe: whileprintingRecords; Shared booleanVar bDunkel; if bDunkel=True then crSilver else crNoColor;