Hinzufügen von Objekten in die Tabelle

Navigation:  Bericht im FR-Designer > Kreuztabellen (Cross-tab Objekt) >

Hinzufügen von Objekten in die Tabelle

Previous pageReturn to chapter overviewNext page

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:

 

clip0220

 

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:

 

screenshot - 18.05.2009 , 17_16_48

 

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:

 

clip0222

 

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:

 

screenshot - 18.05.2009 , 17_20_22

 

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:

 

clip0224

 

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.