In die Tabelle können zusätzliche Objekte eingefügt werden. Wozu braucht man das? Man kann z. B. bestimmte Werte in den Zellen damit grafisch hervorheben. Zwar kann man dazu auch das Hervorheben unter bestimmten Bedingungen verwenden, aber das reicht nicht immer aus.
Betrachten wir ein Beispiel. Jeder Wert in den Zellen soll zusätzlich einen kleinen Balken erhalten, welcher die Höhe des Gehaltes anzeigt. Wir erhalten folgendes:
In rot werden Werte unter 100 angezeigt, in gelb die weniger 3000 und in grün die Werte über 3000.
Fangen wir mit der Erstellung des Reports an. Legen wir das Objekt "Datenbank Cross-tab Objekt" auf das Blatt und stellen es wie folgt ein:
Jetzt stellen wir das Erscheinungsbild ein. Hierzu wählen wir eine Farbe für die Köpfe, ändern die englischen Bezeichnungen in deutsche (Gehalt, Mitarbeiter, Jahr, Summe) und deaktivieren die Eigenschaft "Größe automatisch" (AutoSize). Als Resultat erhalten wir folgende Tabelle:
Nun fügen wir die Elemente in die Tabelle ein, die den Balken darstellen sollen. Wählen Sie "Zeichnen/Rechteck" im Objektenpanell aus und legen diesen in die Zelle:
Jetzt erstellen wir ein Script, das die nötige Anzahl der Rechtecke einfügt und diese in der gewünschten Farbe anzeigt. Wählen Sie die Zelle an und erstellen einen Bearbeiter des Ereignisses OnBeforePrint:
Im Bearbeiter schreiben wir folgendes (beachten Sie Objektbezeichnungen, die Objekte in der Tabelle haben genau die Namen):
procedure DBCross1Cell0OnBeforePrint(Sender: TfrxComponent);
begin
// Value - aktueller Wert der Zelle
if Value < 100then
begin
// das ist das erste Objekt
DBCross1Object1.Color := clMaroon; // rot
// das ist das zweite Objekt
DBCross1Object2.Color := clWhite;
// das ist das dritte Objekt
DBCross1Object3.Color := clWhite;
end
elseif Value < 3000then
begin
DBCross1Object1.Color := $00CCFF; // gelb
DBCross1Object2.Color := $00CCFF;
DBCross1Object3.Color := clWhite;
end
else
begin
DBCross1Object1.Color := $00CC98; // grün
DBCross1Object2.Color := $00CC98;
DBCross1Object3.Color := $00CC98;
end;
end;
Wenn wir den Report nun starten, sehen wir die am Anfang gezeigte Tabelle.