Home » Tutorials » Third-Party-Komponenten » Quick Reports

Quick Reports

Überblick über Quick-Report-Komponenten

QRLabel

Diese Komponente wird für Eingabe von Text verwendet, welcher sich im Verlauf des Reports normalerweise nicht ändert. Sie können den Text programmseitig ändern, die meiste Zeit ist er jedoch statisch und soll erklären, was die Daten bedeuten. Um den Text programmseitig zu verändern, verwenden Sie das OnPaint-Ereignis. Um den Ausdruck eines Labels zu unterdrücken, ändern Sie die Eigenschaft Enabled auf False.

QRDBText

Diese Komponente erledigt im QR die meiste Arbeit. Sie verbinden sie mit einem Feld Ihrer Datenbanktabelle und lassen sie machen. Normalerweise sollten Sie die Eigenschaft AutoSize auf True lassen und AutoStretch auf False. Das bedeutet, dass das Feld horizontal gedehnt werden kann, damit die Daten hineinpassen, der Text aber keinen Zeilenumbruch enthält. Wenn es sich bei dem Feld um ein Memo handelt, setzen Sie AutoStretch auf true, damit die Zeilenumbrüche funktionieren. Sie sollten ebenfalls die Eigenschaft AutoSize abschalten und die Größe des Felds manuell setzen, damit die Daten an der richtigen Stelle in Ihrem Report umgebrochen werden. Memo-Felder sind beim Schreiben eines Reports eine große Herausforderung, besonders, wenn sie von Seitenwechseln betroffen sind. Andere Probleme mit Memo-Feldern entstehen, wenn mehrere Memos in derselben Detail-Zeile angezeigt werden.

QRExpression

Diese Komponente wurde bereits früher besprochen, so dass hier keine weiteren Kommentare nötig sind.

QRSysData

Diese Komponente arbeitet mit Daten vom Computer selbst und von der QReport-Komponente, wie z.B. Seitenzahl und Datum. Wenn Sie eine dieser Komponenten zentrieren wollen (wie z.B. den Report-Titel), setzen Sie AlignToBand auf True und Alignment auf taCenter. Es gibt auch eine Text-Eigenschaft, die Sie dazu verwenden können, die Daten zu erklären, z.B. „Seite Nr.“ oder „Druckdatum“. Das ist einfacher, als eine extra Label-Komponente zur SysData-Komponente hinzuzufügen. Der Wert, der für den Report-Titel verwendet wird, kommt von der Eigenschaft Titel der QuickRep-Komponente. Man sollte sich angewöhnen, diese zu verwenden, da einige Netzwerke einen Report-Namen für Tracking-Zwecke benötigen und dafür diesen Wert nehmen.

QRMemo

Diese Komponente wird täuschenderweise nicht dazu verwendet wird, um Memofeld-Daten zu drucken. Stattdessen stellt sie eine Komponente dar, die viele Textzeilen in einem Reportformular enthalten kann. Die Art, wie sie das tut, ist die Verwendung der Eigenschaft Lines, um es Ihnen zu erlauben, Ihren Text so zu formatieren, wie Sie es wollen. Schalten Sie AutoSize und AutoStretch ab und dehnen Sie die Komponente von Hand, bis die Daten so aussehen, wie Sie sich das vorstellen.

QRRichText-Memo

Diese Komponente ist QRMemo ähnlich, außer dass sie es erlaubt, den Text zu formatieren. Die AutoSize-Eigenschaft ist zur Entwicklungszeit nicht verfügbar. Sie können diese Komponente dazu verwenden, ein vorforamtiertes Formular vorzubereiten, in dem Sie zur Laufzeit Text innerhalb des Memos durch Text aus einer Datenbank ersetzen wie bei der Einfüge-Funktion (Überschreiben) von MS Word. Dazu müssen Sie eine RichText-Komponente ihrem Report hinzufügen und Ihren Text eingeben. Verwenden Sie dann die ParentRichEdit-Eigenschaft, um die RichText-Komponente mit dem QRRichTextMemo zu verbinden. Die RichText-Komponente hat die Fähigkeit zu suchen und zu ersetzen.

QRDBRichText-Memo

Dies ist die Komponente, die zum Umgang mit Memo-Feldern in einer Datenbank verwendet wird. Sie hat Einträge für Tabellenname und Feldname. Denken Sie daran, die AutoStretch-Eigenschaft auf true zu setzen, damit alle Daten angezeigt werden. Wenn Sie Ihr Layout aufsetzen, achten Sie darauf, genügend Platz zu lassen, damit sich Ihre Komponenten ausreichend dehnen können. Jede Komponente wird einmal von links nach rechts von QR durchgearbeitet, um den ursprünglichen Abstand zu erreichen. Wenn Sie nicht genügend Platz lassen und AutoSize und AutoStretch true sind, können Sie seltsame Ergebnisse bekommen.

QRShape

Diese Komponente wird für Linien und andere Formen verwendet. Es handelt sich um die „Papier-Version“ der Shape-Komponente, die Sie auf der Komponentenseite „Zusätzlich“ finden. Daher sind die meisten Eigenschaften die gleichen. Die Komponente kann in einem Band platziert und dadurch jedesmal gedruckt werden, wenn auch das Band gedruckt wird. Oder Sie können Sie verwenden, um die Grafik in einem bestimmten Teil des Papiers zu platzieren, und ses wird dann immer dort gedruckt. Dazu platzieren Sie die Grafik unter allen Bändern auf Ihrem Report und ziehen Sie dann an die Stelle auf dem Papier, wo Sie sie haben wollen. Sie müssen den Pen-Mode der Grafik auf pmMask ändern müssen, um zu sehen, was vermutlich innerhalb der Grafik ist. Leider müssen Sie alle Ihre Druckkomponenten, die Sie benötigen, auf den Bändern des Reports platzieren, bevor Sie die Shape-Komponente darüber legen. Alles was Sie innerhalbe des Shapes platzieren, wird Teil des Shapes und wird nur einmal pro Seite gedruckt. Eine andere Möglichkeit, mit Grafiken zu arbeiten, ist die Verwendung der Eigenschaft Frame, welche es in allen druckbaren Komponenten gibt (sogar in der QRShape-Komponente). Die Eigenschaft Frame erlaubt es Ihnen, Kästen um Daten zu erzeugen, was diese evtl. besser aussehen lässt. Sie können den Stil des Rahmens verändern wie Sie auch den Stil eines Shapes ändern können.

QRImage

Diese Komponente lässt Sie Bitmaps oder andere Grafiken (z.B. ein Logo) auf Ihrem Report platzieren. Sie ist ein Nachkomme der Image-Komponente und hat deshalb einen Bildeditor, der es Ihnen erlaubt, eine Bitmap oder eine andere Grafik in den Bereich zu laden, den Sie dafür erstellt haben. Verwenden Sie die Eigenschaften AutoSize, Stretch und Center, um die Grafik anzuzeigen, wo Sie wollen. Wie auch QRShape können Sie QRImage innerhalb oder außerhalb von Bändern platzieren, wie Sie wollen.

QRDBImage

Dies ist die datensensitive Version von QRImage und wird dazu benutzt, Grafiken aus Dateien anzuzeigen. Sie hat ähnliche Eigenschaften und ähnliches Verhalten wie die QRImage-Komponente.

QRCompositeReport

QRCompositeReport lässt sich nicht intuitiv bedienen. Es tut viel mehr als einfach einen Report nach dem anderen aufzurufen. QRCompositeReport macht sich die Tatsache, dass für jede Seite ein Metafile erzeugt und diese Datei zum Senden von Daten an den Drucker verwendet wird, zu Nutze, dass alle Reports als ein einziger großer Report behandelt werden, von dem jede einzelne Seite in einem Aufruf erzeugt und gesendet wird. Folgen Sie diesen Schritten, um diese Komponente zu verwenden:

  1. Gestalten Sie alle Reports, die Sie verwenden, jeden mit eigener Datei und eigenem Fenster. Fügen Sie diese Units dem aufrufenden Formular hinzu, damit dieses sie verwenden kann.
  2. Platzieren Sie eine QRCompositeReport-Komponente in Ihrem Hauptfenster.
  3. Klicken Sie auf das Add Reports-Ereignis und platzieren dort Code, um jeden Report in der von Ihnen gewünschten Reihenfolge aufzurufen. Etwa so:
    procedure TForm1.QRCompositeReport1AddReports(Sender : TObject);
    begin
    with QRCompositeReport1.Reports do
    begin
    Add(RepCustomer.Report);
    Add(RepSales.Report);
    Add(RepTotals.Report);
    end;
  4. Fügen Sie in den Code Ihres Hauptfensters die Zeile zum Drucken oder Anzeigen dieser Komponente ein. Z.B.
    QRCompositeReport1.Preview;

Wenn Sie dies aufgerufen haben, ruft die Composite-Komponente jeden einzelnen Report der Reihe nach auf und fügt die Seiten des zweiten und des letzten Reports den Seiten des ersten hinzu und erzeugt dadurch einen einzigen großen Report. Das ist ein Versuch, unterschiedliche Reports nahtlos zusammenzufügen, um den Anwender den Eindruck zu geben, alles das stamme aus einem einzigen Report. Das kann z.B. sehr nützlich sein, wenn Sie einen Report haben, der Detail-Datensätze anzeig und dann einen drucken müssen, der Zusammenfassungen zeigt. Eine andere Möglichkeit wäre, einfach jeden einzelnen Report der Reihe nach aufzurufen, das würde dem Anwender jedoch nicht den Eindruck geben, den Sie wollen. Die Verfügbarkeit der CompositeReport-Komponente gibt Ihnen die Wahlmöglichkeit.

QRChart

Diese Komponente erlaubt es IHnen, einen TChart innerhalb eines Reports zu drucken. Sie müssen das Diagramm innerhalb der Komponente erzeugen, indem Sie in den Eigenschaften auf den TChart-Dialog klicken. Lesen Sie die TChart-Dokumentation, welche Möglichkeiten hier verfügbar sind.
Sie haben die Wahl, Ihr Diagramm als Bitmap oder als Metafile zu drucken. Ich habe mit beidem keine Erfahrung, deshalb empfehle ich Ihnen die Voreinstellung Metafile; Sie sollten aber mit der Bitmap-Option experimentieren, wenn es nötig ist.

Previewing Reports

Die QR QuickRep-Komponente enthält ihre eigene Vorschau-Komponente, weshalb Sie nichts tun müssen, um sie zu verwenden. Rufen Sie einfach die Methode in Ihrem Code auf, z.B.

NewForm1.QuickRep1.Preview;

Sehen Sie im Abschnitt zu den Report-Grundlagen nach dem Code, um einen Quick Report zu erzeugen und eine Vorschau anzuzeigen. Innerhalb der Vorschau können Sie manuell Papier und Drucker auswählen und, wenn Sie damit fertig sind, den Report ausdrucken. Ich ziehe diese Methode vor, weil sie dem Anwender die Gelegenheit zum Abbrechen gibt, falls es ein falscher Report ist, ohne Papier zu verschwenden. Wenn Sie Probleme mit dieser Vorschau haben, können Sie Ihr eigenes Vorschaufenster erstellen. Besuchen Sie die QuSoft-Website, dort finden Sie ein Tutorial dazu.

Probleme beim Drucken

QR hatte wegen der Fehler, die gefunden worden sind, und der Langsamkeit, wie diese behoben worden sind, einen schlechten Ruf. In aller Fairness: Entwickler, die nicht die 99 $ an QuSoft für den Sourcecode bezahlt haben, sind QuSoft ausgeliefert, wenn sei Probleme beseitigen müssen. Diejenigen, die den Beitarg für QR gezahlt haben, haben die Möglichkeit, Fehler schneller zu beseitigen und können sich selbst auf Fehlersuche machen. Dennoch ist es sehr empfohlen, ein Auge auf die QuSoft-Seite zu haben, wo die neuesten Releases von QR erscheinen. Die bekanntesten Fehler werden evtl. beseitigt sein und Ihnen viel Kummer ersparen. Wie am Anfang dieses Tutorials erwähnt, hängen viele Report-Probleme mit den Windows-Druckertreibern zusammen und wie diese mit QR arbeiten.