Difference between revisions of "LazReport Documentation/de"

From Free Pascal wiki
Jump to navigationJump to search
m
 
(26 intermediate revisions by 5 users not shown)
Line 2: Line 2:
  
 
== Überblick ==
 
== Überblick ==
LazReport is a group of components to add reporting capabilities to applications,
+
LazReport ist eine Gruppe von Komponenten, um Anwendungen um die Möglichkeit zur Reporterstellung zu erweitern. Es verwendet einen visuellen Designer, um auf Bändern basierende Berichte zu erstellen. Es beinhaltet eine Report Engine mit Vorschaufunktion sowie einen Interpreter, um Benutzerskripte auszuführen. Der Report-Designer kann auch zur Laufzeit aufgerufen werden.
it uses a visual designer to create banded reports and includes a report engine
 
with previewer and includes a interpreter to run user scripts. Report designer can
 
be invoked at runtime.  
 
  
 
== Lizenz ==
 
== Lizenz ==
LazReport is based on FreeReport 2.32 and thanks to Fast Reports Inc. it's
+
LazReport basiert auf FreeReport 2.32 (von Fast Reports Inc). Es ist unter einer modifizierten LGPL verfügbar, der selben Lizenz wie auch die Lazarus LCL. Die Details stehen in lazreport/license.txt, license-rus.txt und license-lazreport.txt.
available under modified LGPL, the same license as the Lazarus LCL.
 
see files lazreport/ license.txt, license-rus.txt and license-lazreport.txt
 
for details.
 
  
 
== Autoren ==
 
== Autoren ==
FreeReport was created for Fast Reports Inc.
+
FreeReport wurde von Fast Reports Inc erstellt. Die erste LazReport Portierung erfolgte durch Olivier Guilbaud. Die Integration in Lazarus sowie zahlreiche Fehlerbehebungen wurden durch [[User:Jesusrmx|Jesus Reyes A.]] vorgenommen. Zahlreiche weitere Personen haben an LazReport mitgewirkt (siehe lazreport/doc/contributors.txt).
LazReport initial port was made by Olivier Guilbaud.
 
Lazarus integration and fixes by Jesus Reyes A.
 
Many contributors, see lazreport/doc/contributors.txt file
 
  
 
== Installation ==
 
== Installation ==
To install LazReport under lazarus IDE:
+
Um LazReport in die Lazarus IDE zu installieren:
  
1. Open LazReport Package. Menu: Components->Open package file (.lpk)...
+
# Öffnen sie das Package "LazReport". Menü: Package -> Package-Datei (.lpk) öffnen ...
2. Open file components/lazreport/source/lazreport.lpk
+
# Wählen sie die Datei "components/lazreport/source/lazreport.lpk"
3. Compile
+
# Klicken sie auf ''Installieren''
4. Install
 
  
Next time lazarus is started, it should show a LazReport tab in component
+
Beim nächsten Start von Lazarus sollte es einen Tab "LazReport" in der Komponentenpalette geben.
palette.
 
  
 
== Dokumentation ==
 
== Dokumentation ==
 
Entwickler- und Benutzerhandbücher für LazReport müssen noch geschrieben werden. In der Zwischenzeit sind die meisten LazReport Features im FreeReport Entwicklerhandbuch (siehe lazreport/doc/fr_eng.sxw) beschrieben. Plattform-spezifische Dinge wie OLE Objekte, die dort beschrieben sind, sind noch nicht in LazReport implementiert. Auch sind einige Beispiele bzw. Referenzen darauf nur für Delphi verfügbar.  
 
Entwickler- und Benutzerhandbücher für LazReport müssen noch geschrieben werden. In der Zwischenzeit sind die meisten LazReport Features im FreeReport Entwicklerhandbuch (siehe lazreport/doc/fr_eng.sxw) beschrieben. Plattform-spezifische Dinge wie OLE Objekte, die dort beschrieben sind, sind noch nicht in LazReport implementiert. Auch sind einige Beispiele bzw. Referenzen darauf nur für Delphi verfügbar.  
  
Until LazReport documentation is elaborated, this wiki page will be used as a documentation container, maybe in the future the missing documentation could be generated from here. Users are welcomed to add topics that they feel need to be documented.
+
Bis eine LazReport Dokumentation ausgearbeitet ist, soll diese Wiki-Seite als Aufbewahrungsort für Informationen dienen. Vielleicht können in der Zukunft fehlende Teile aus dieser Seite erstellt werden. Die Benutzer sind aufgerufen, Themen zu ergänzen, zu denen sie eine Dokumentation vermissen.
  
 
=== Exportfilter ===
 
=== Exportfilter ===
LazReport export filters are invoked using the following code.
+
Die LazReport Exportfilter werden wie folgt aufgerufen:
<Delphi>
+
<source lang="delphi">
 
   if TheReport.PrepareReport then
 
   if TheReport.PrepareReport then
     TheReport.ExportTo(TfrHTMExportFilter, 'exportedfile.html');
+
     TheReport.ExportTo(TfrHTMExportFilter, 'exportiertedatei.html');
</Delphi>
+
</source>
Where TheReport holds an instance of TfrReport component. In this sample a TfrHTMExportFilter is used to generate a file named 'exportedfile.html'. It's not necesary to prepare again the report if it has been prepared previously. In order to use TfrHTMExportFilter the developer has to drag and drop an instance of TfrHTMExportFilter component from the LazReport tab in componente palette to form in Form Desginer. As an alternative the unit lr_e_htm.pas file needs to be added to unit uses clause.
+
wobei TheReport eine Instanz der Komponente "TfrReport" ist. In diesem Beispiel wird ein TfrHTMExportFilter verwendet, um eine Datei namens 'exportiertedatei.html' zu erstellen. Ist der Bereicht bereits erstellt (prepared), muss er nicht erneut erstellt werden. Um den TfrHTMExportFilter zu nutzen, muss man eine Instanz der Komponente "TfrHTMExportFilter" aus dem Tab "LazReport" in der Komponentenpalette auf dem Formular ablegen (im Formular-Desginer). Alternativ muss die Unit "LR_E_HTM" (Dateiname: lr_e_htm.pas) zum Abschnitt ''uses'' der aktuellen Unit hinzugefügt werden.
  
Since LazReport 0.9.6, the export filters support has been enhanced, now export filters can take parameters which users can customize either by changing values directly or by presenting the end user some UI. In order to make changes in parameters, the developer can create an event handler for TfrReport.OnExportFilterSetup event, available by selecting the TfrReport component and selecting the Events tab in Object Inspector.
+
Seit LazReport 0.9.6 wurde die Exportfilter-Unterstützung verbessert. Jetzt können die Exportfilter Parameter übernehmen, die die Benutzer entweder durch direktes Ändern der Werte oder durch eine Bedienoberfläche (UI) anpassen können. In order to make changes in parameters, the developer can create an event handler for TfrReport.OnExportFilterSetup event, available by selecting the TfrReport component and selecting the Events tab in Object Inspector.
  
 
The OnExportFilterSetup (of type TExportFilterSetup) event handler takes an argument sender of type TfrExportFilter, in order to use this types, lr_class.pas unit must be added to unit uses clause. All ExportFilter clases share this event and developer has to type-cast the sender argument to the desired export filter class for example:
 
The OnExportFilterSetup (of type TExportFilterSetup) event handler takes an argument sender of type TfrExportFilter, in order to use this types, lr_class.pas unit must be added to unit uses clause. All ExportFilter clases share this event and developer has to type-cast the sender argument to the desired export filter class for example:
<Delphi>
+
<source lang="delphi">
 
if sender is TfrHTMExportFilter then
 
if sender is TfrHTMExportFilter then
 
begin
 
begin
 
   TfrHTMExportFilter(sender).UseCSS := false;
 
   TfrHTMExportFilter(sender).UseCSS := false;
 
end;
 
end;
</Delphi>
+
</source>
below a description of available export filters.
+
Es folgt eine Beschreibung der verfügbaren Exportfilter:
  
 
==== TfrExportFilter ====  
 
==== TfrExportFilter ====  
is the base class of all export filters, and defines two properties that can be modified by developer in the OnExportFilterSetup event:
+
ist die Basisklasse aller Exportfilter. Sie definiert zwei Eigenschaften, die vom Entwickler im Ereignis ''OnExportFilterSetup'' angepasst werden können:
*'''BandTypes''': TfrBandTypes. this is a set of band types, only bands included in this set are actually exported, the rest of bands present on report will be ignored. Using this property a developer could for example export only the master band content, leaving titles, headers and footers out of exported output by doing:
+
*'''BandTypes''': TfrBandTypes. Dies ist ein Satz von Bandtypen, nur die in diesem Satz enthaltenen Bänder werden tatsächlich exportiert, der Rest der im Bericht vorhandenen Bänder wird ignoriert. Mit dieser Eigenschaft kann ein Entwickler zum Beispiel nur den Inhalt des Masterbandes exportieren und dabei Titel, Kopf- und Fußzeilen aus der exportierten Ausgabe herauslassen:
<Delphi>
+
<source lang="delphi">
 
sender.BandTypes := [btMasterData];
 
sender.BandTypes := [btMasterData];
</Delphi>
+
</source>
by default, all bands are processed but TfrCSVExportFilter changes this property to process only master header, column header and master data bands.
+
standardmäßig werden alle Bänder verarbeitet, aber TfrCSVExportFilter ändert diese Eigenschaft so, dass nur Stammkopf-, Spaltenkopf- und Stammdatenbänder verarbeitet werden.
*'''UseProgressbar''': boolean. This property enable or disable showing the progress bar while processing the export filter. This property is false by default.
+
*'''UseProgressbar''': boolean. Mit dieser Eigenschaft lässt sich die Anzeige eines Fortschrittsbalkens aktivieren oder deaktivieren, der den Fortschritt des Exportprozesses zeigt. Per Vorgabe ist die Eigenschaft auf ''false'' gesetzt.
  
 
==== TfrTextExportFilter ====
 
==== TfrTextExportFilter ====
inheritance: TfrExportFilter <- TfrTextExportFilter<br>located in: lr_e_txt.pas file included with LazReport package.
+
Vererbung: TfrExportFilter <- TfrTextExportFilter<br>befindet sich in der Datei: lr_e_txt.pas, die zum LazReport Package gehört.
  
is the base class of text based export filters. This export filter tries to make a text representation of a graphical report by fitting the original graphical coordinates into a more coarse grid where each unit is of "UsedFont" pixels, depending on the value of UsedFont value, the exported output may more or less represent the layout of objects in graphical report. Beside the properties inherited from TfrExportFilter class, TfrTextExportFilter define two more properties.
+
ist die Basisklasse der textbasierten Exportfilter. Dieser Exportfilter versucht, eine Textdarstellung eines grafischen Berichts zu erstellen, indem er die ursprünglichen grafischen Koordinaten in ein gröberes Raster einpasst, bei dem jede Einheit aus "UsedFont"-Pixeln besteht. Abhängig vom Wert des UsedFont-Wertes kann die exportierte Ausgabe mehr oder weniger das Layout der Objekte im grafischen Bericht darstellen. Neben den Eigenschaften, die von der Klasse TfrExportFilter geerbt wurden, definiert TfrTextExportFilter zwei weitere Eigenschaften.
*'''UsedFont''':integer. this property define the pixel dimensions on the output grid, objects on report are fitted into this grid by reclaculating each x and y position. The default value is 10, if user changes this value to 0 o less, LazReport will show automatically a dialog asking for the UsedFont value, if user enter a invalid value, a 10 value will be used. The 10 value is used because is the value that better fits the usual reports which are made with fonts 10-13 points.
+
*'''UsedFont''':integer. Diese Eigenschaft definiert die Pixelabmessungen des Ausgaberasters, in das die Objekte im Bericht durch Umrechnung der einzelnen x- und y-Positionen eingepasst werden. Der Standardwert ist 10, wenn der Benutzer diesen Wert auf 0 oder weniger ändert, wird LazReport automatisch einen Dialog anzeigen, der nach dem UsedFont Wert fragt, wenn der Benutzer einen ungültigen Wert eingibt, wird ein 10er Wert verwendet. Der Wert 10 wird verwendet, weil er besser zu den üblichen Berichten passt, die mit Schriftarten von 10-13 Punkten erstellt werden.
*'''UseBOM''':boolean. This property enable the inclusion of UTF-8 Byte Order Mark character at the start of text output (see [http://en.wikipedia.org/wiki/Byte_order_mark BOM]) needed by some editors/viewers, by default no BOM is used in exported output.
+
*'''UseBOM''':boolean. Diese Eigenschaft ermöglicht die Einbeziehung eines UTF-8 Byte Order Mark Zeichens am Beginn der Textausgabe (siehe [http://de.wikipedia.org/wiki/Byte_Order_Mark BOM]), das von einigen Editoren/Betrachtern benötigt wird. Per Vorgabe wird BOM in der exportierten Ausgabe nicht verwendet.
  
 
==== TfrCSVExportFilter ====
 
==== TfrCSVExportFilter ====
inheritance: TfrExportFilter <- TfrTextExportFilter <- TfrCSVExportFilter<br>located in: lr_e_csv.pas file included in LazReport package.
+
Vererbung: TfrExportFilter <- TfrTextExportFilter <- TfrCSVExportFilter<br>befindet sich in der Datei: lr_e_csv.pas, die zum Package "LazReport" gehört.
  
This special text export filter produces Comma Separated Value output (actually any character can be used as separator), it differs from it's ancestor in that it doesn't try to create text layout representation of graphical report, instead, for each record output it tries to guess the fields order from the source report, it then produce a list of fields using a separator defined by the user. Beside the properties inherited from its ancestor classes it defines some properties to customize the generated output.
+
Dieser spezielle Text-Exportfilter erzeugt eine Ausgabe von Komma-separierten Werte (Comma Separated Value). Aktuell kann jedes Zeichen als Separator verwendet werden (wobei dies nicht bedeutet, dass das auch sinnvoll ist). Er unterscheidet sich von ihrer Vorgängerklasse dadurch, dass er nicht versucht, eine Textlayout-Darstellung des grafischen Berichts zu erstellen. Stattdessen versucht er, für jede Datensatzausgabe die Reihenfolge der Felder aus dem Quellbericht zu erraten und erzeugt dann eine Liste von Feldern unter Verwendung eines vom Benutzer definierten Trennzeichens. Neben den Eigenschaften, die er von seinen Vorgängerklassen geerbt hat, definiert er einige Eigenschaften zur Anpassung der generierten Ausgabe.
*'''QuoteType''':TfrQuoteType. This property controls whether the generated field value should be wrapped using specified quote char or not. Possible values are ''qtNone'', ''qtQuoteChar'' and ''qtAutoQuote''. With ''qtNone'' the field value is never wrapped, ''qtQuoteChar'' will use the character specified by property '''QuoteChar''', any instance of '''QuoteChar''' already present in field value is duplicated. ''qtAutoQuote'' first try to find if any instance of '''separator''' or '''QuoteChar''' is already present in field value, if affirmative it behaves as if ''qtQuoteChar'' has been specified, on the contrary case, the field value is not wrapped just as if ''qtNone'' has been specified. '''QuoteType''' property is set to ''qtQuoteChar'' by default.
+
*'''QuoteType''':TfrQuoteType. Diese Eigenschaft steuert, ob der generierte Feldwert mit dem angegebenen Anführungszeichen umgebrochen werden soll oder nicht. Mögliche Werte sind ''qtNone'', ''qtQuoteChar'' und ''qtAutoQuote''. Mit ''qtNone'' wird der Wert des Feldes niemals umgebrochen, ''qtQuoteChar'' verwendet den Character, der in '''QuoteChar'''definiert ist, wobei alle '''QuoteChar''' innerhalb des Feldes dupliziert werden. '''qtAutoQuote''' prüft zuerst, ob '''QuoteChar''' in dem Feld vorkommt. Wenn das der Fall ist, wird '''QuoteChar''' gesetzt, andernfalls wird nichts unternommen (als hätte man '''qtNone''' gesetzt). Standardmäßig wird '''QuoteType''' wie '''qtQuoteChar''' gesetzt.
*'''QuoteChar''':TUTF8Char. This holds the character to be used to wrap the field value in case of '''QuoteType''' of value ''qtQuoteChar'' has been specified or deduced if ''qtAutoQuote'' is set. Any instance of this character in the field value will be duplicated. by default '''QuoteChar''' is set to the " character.
+
*'''QuoteChar''':TUTF8Char. Hier wird das Zeichen angegeben, mit dem der Feldwert umbrochen werden soll, wenn der '''Quotetype''' des Wertes '''qtQuoteChar''' angegeben bzw. abgeleitet wurde, wenn '''qtAutoQuote''' eingestellt ist. Jede Instanz dieses Zeichens im Feldwert wird dupliziert. Standardmäßig ist '''QuoteChar''' auf das Zeichen " gesetzt.
*'''Separator''':TUTF8Char. This is the character used to separate the fields in each record, by default is set to the ',' (COMMA) character but any UTF-8 valid character could be used. Some CSV files are actually TAB separated files, to get this, set Separator:=#9;
+
*'''Separator''':TUTF8Char. Dieses Zeichen wird verwendet, um die Felder in jedem Datensatz zu separieren. Per Vorgabe wird das Komma (',') verwendet. Es kann aber auch jedes adere gültige UTF-8 Zeichen verwendet werden. Einige CSV Dateien verwenden das TAB Zeichen zum Separieren. Um dies zu erreichen, setzen sie Separator:=#9 ein.
The CSV exporter do not use the inherited UsedFont property value so any value set will be ignored. With default property values, TfrCSVExportFilter will produce Excel compatible files, the only caveat is that Excel will not recognize the file as UTF-8 encoded. To force Excel to recognize the encoding automatically, set the property '''UseBOM''' to true.
+
Der CSV-Exporter verwendet den geerbten Eigenschaftswert UsedFont nicht, so dass jeder eingestellte Wert ignoriert wird. Mit den Standard-Eigenschaftswerten erzeugt TfrCSVExportFilter Excel-kompatible Dateien. Der einzige Nachteil ist, dass Excel die Datei nicht als UTF-8-kodiert erkennt. Um Excel zu zwingen, die Kodierung automatisch zu erkennen, setzen Sie die Eigenschaft '''UseBOM''' auf true.
  
 
==== TfrHTMExportFilter ====
 
==== TfrHTMExportFilter ====
inheritance: TfrExportFilter <- TfrTextExportFilter <- TfrHTMExportFilter. <br> Located in: lr_e_htm.pas in LazReport package.
+
Vererbung: TfrExportFilter <- TfrTextExportFilter <- TfrHTMExportFilter. <br>befindet sich in der Datei: lr_e_htm.pas, die zum Package "LazReport" gehört.
  
This special text export filter produces valid "HTML 4.01 Transitional" output. Currently it defines only one additional property.
+
Dieser spezielle Text-Exportfilter erzeugt eine gültige "HTML 4.01 Transitional" Ausgabe. Gegenwärtig definiert er nur eine zusätzliche Eigenschaft:
*'''UseCSS''':boolean. This property controls whether or not the produced output include CSS information, this property is set to true by default.
+
*'''UseCSS''':boolean. Diese Eigenschaft bestimmt, ob die erzeugte Ausgabe CSS Informationen enthält oder nicht. Sie ist per Vorgabe auf ''false'' gesetzt.
  
== BUG REPORTS ==
+
==== TfrImageExportFilter und TfrHtmlDivExportFilter ====
Please report problems using the
+
 
[http://www.freepascal.org/mantis/main_page.php lazarus/freepascal bugtracker], project: "Lazarus Packages", Category
+
Für die Verwendung dieser beiden Filter muß das Package ''lr_extexp'' installiert werden. Man findet es im addons Unterverzeichnis von LazReport.
"LazReport", for patches please submit a bug report and attach the patch to it.
+
 
 +
==== PDF-Exportfilter ====
 +
 
 +
Um einen Report ins PDF-Format exportieren zu können, muß das Package ''LazReportPDFExport'' installiert werden. Man findet es im addons Unterverzeichnis von LazReport. Dieses Package wiederum setzt [[PowerPDF/de|PowerPDF]] voraus, welches daher zuerst installiert werden sollte. Nach der Installation kann der neue Exportfilter wie einer der anderen Exportfilter verwendet werden.
 +
 
 +
== Schnellstart ==
 +
 
 +
=== Report Records from a Dataset ===
 +
In diesem Beispiel werden wir einen Bericht entwerfen, um Datensätze aus einer abgeleiteten Komponente zu drucken (TDbf, TSQLQuery, TZTable, TZQuery, etc.). Dabei wird davon ausgegangen, dass LazReport bereits installiert ist und die Komponente "dataset", hier "Dbf1" genannt, bereits konfiguriert und aktiv ist.
 +
#Vom LazReport Tab wählen sie eine TfrReport Komponente und legen diese auf dem Formular ab, sie erhält den Namen "frReport1".
 +
#Fügen Sie eine TfrDbDataset-Komponente hinzu, sie erhält den Namen "frDbDataset1"
 +
#Fügen Sie einen TButton hinzu, er enthält den Namen Button1, benennen Sie ihn um zu "btnShowReport"
 +
#Nach Auswahl von frDbDataset1 im Objekt Inspector setzen Sie in der "Dataset" Eigenschaft den Wert auf "Dbf1"
 +
#Wählen Sie nun frReport1 und verknüpfen Sie mit demselben Verfahren die Eigenschaft "Dataset" mit "frDbDataset1":<p><center>[[Image:lrformsetup.png]]</center></p>
 +
#Klicken Sie mit der rechten Maustaste auf frReport1 und wählen Sie "Bericht entwerfen" aus dem Menü, LazReport Berichtsdesigner wird erscheinen.
 +
#Wählen Sie im Designer-Fenster das Menü Werkzeuge(Tools)->Werkzeuge->DB-Felder einfügen, der Dialog Felder einfügen erscheint.
 +
#In der Liste mit den Feldern wählen sie die Felder, die sie im Report verwenden möchten.
 +
#Aktivieren sie die Optionen "Include Headers" und "Include Bands". Das Ergebnis sollte etwa so aussehen:<p><center>[[Image:lrinsertfieldsdialog.png]]</center></p>
 +
#Klicken sie auf "Ok" und LazReport wird die Bänder und Felder etwa so anordnen:<p><center> [[Image:lrreportwithfields.png]]</center></p>
 +
#Klicken sie auf den Vorschau Button [[Image:lrprevieweye.png]], LazReport wird dann die Daten zusammenführen und etwa so anzeigen:<p><center>[[Image:lrpreviewreport.png]]</center></p>
 +
#Speichern sie den Report über das Menü: Datei -> Speichern. Wählen sie das selbe Verzeichnis wie für das aktuelle Projekt und benennen sie den Report listing1.lrf .
 +
#Schließen sie den Report-Designer.
 +
#Klicken sie doppelt auf btnShowReport und geben sie in der Prozedur den folgenden Code ein:
 +
<source lang="delphi">
 +
  frReport1.LoadFromFile('listing1.lrf');
 +
  frReport1.ShowReport;
 +
</source>
 +
 
 +
== Bug Reports ==
 +
Bitte melden sie Probleme und Fehler mittels des [http://www.freepascal.org/mantis/main_page.php lazarus/freepascal Bugtrackers]. Wählen sie dort unter ''project:'' "Lazarus Packages" und als ''Category'' "LazReport". Für Patches erstellen sie bitte einen Bug Report und hängen dort den Patch an.

Latest revision as of 15:53, 12 October 2023

Deutsch (de) English (en) español (es) polski (pl)

Überblick

LazReport ist eine Gruppe von Komponenten, um Anwendungen um die Möglichkeit zur Reporterstellung zu erweitern. Es verwendet einen visuellen Designer, um auf Bändern basierende Berichte zu erstellen. Es beinhaltet eine Report Engine mit Vorschaufunktion sowie einen Interpreter, um Benutzerskripte auszuführen. Der Report-Designer kann auch zur Laufzeit aufgerufen werden.

Lizenz

LazReport basiert auf FreeReport 2.32 (von Fast Reports Inc). Es ist unter einer modifizierten LGPL verfügbar, der selben Lizenz wie auch die Lazarus LCL. Die Details stehen in lazreport/license.txt, license-rus.txt und license-lazreport.txt.

Autoren

FreeReport wurde von Fast Reports Inc erstellt. Die erste LazReport Portierung erfolgte durch Olivier Guilbaud. Die Integration in Lazarus sowie zahlreiche Fehlerbehebungen wurden durch Jesus Reyes A. vorgenommen. Zahlreiche weitere Personen haben an LazReport mitgewirkt (siehe lazreport/doc/contributors.txt).

Installation

Um LazReport in die Lazarus IDE zu installieren:

  1. Öffnen sie das Package "LazReport". Menü: Package -> Package-Datei (.lpk) öffnen ...
  2. Wählen sie die Datei "components/lazreport/source/lazreport.lpk"
  3. Klicken sie auf Installieren

Beim nächsten Start von Lazarus sollte es einen Tab "LazReport" in der Komponentenpalette geben.

Dokumentation

Entwickler- und Benutzerhandbücher für LazReport müssen noch geschrieben werden. In der Zwischenzeit sind die meisten LazReport Features im FreeReport Entwicklerhandbuch (siehe lazreport/doc/fr_eng.sxw) beschrieben. Plattform-spezifische Dinge wie OLE Objekte, die dort beschrieben sind, sind noch nicht in LazReport implementiert. Auch sind einige Beispiele bzw. Referenzen darauf nur für Delphi verfügbar.

Bis eine LazReport Dokumentation ausgearbeitet ist, soll diese Wiki-Seite als Aufbewahrungsort für Informationen dienen. Vielleicht können in der Zukunft fehlende Teile aus dieser Seite erstellt werden. Die Benutzer sind aufgerufen, Themen zu ergänzen, zu denen sie eine Dokumentation vermissen.

Exportfilter

Die LazReport Exportfilter werden wie folgt aufgerufen:

  if TheReport.PrepareReport then
    TheReport.ExportTo(TfrHTMExportFilter, 'exportiertedatei.html');

wobei TheReport eine Instanz der Komponente "TfrReport" ist. In diesem Beispiel wird ein TfrHTMExportFilter verwendet, um eine Datei namens 'exportiertedatei.html' zu erstellen. Ist der Bereicht bereits erstellt (prepared), muss er nicht erneut erstellt werden. Um den TfrHTMExportFilter zu nutzen, muss man eine Instanz der Komponente "TfrHTMExportFilter" aus dem Tab "LazReport" in der Komponentenpalette auf dem Formular ablegen (im Formular-Desginer). Alternativ muss die Unit "LR_E_HTM" (Dateiname: lr_e_htm.pas) zum Abschnitt uses der aktuellen Unit hinzugefügt werden.

Seit LazReport 0.9.6 wurde die Exportfilter-Unterstützung verbessert. Jetzt können die Exportfilter Parameter übernehmen, die die Benutzer entweder durch direktes Ändern der Werte oder durch eine Bedienoberfläche (UI) anpassen können. In order to make changes in parameters, the developer can create an event handler for TfrReport.OnExportFilterSetup event, available by selecting the TfrReport component and selecting the Events tab in Object Inspector.

The OnExportFilterSetup (of type TExportFilterSetup) event handler takes an argument sender of type TfrExportFilter, in order to use this types, lr_class.pas unit must be added to unit uses clause. All ExportFilter clases share this event and developer has to type-cast the sender argument to the desired export filter class for example:

if sender is TfrHTMExportFilter then
begin
  TfrHTMExportFilter(sender).UseCSS := false;
end;

Es folgt eine Beschreibung der verfügbaren Exportfilter:

TfrExportFilter

ist die Basisklasse aller Exportfilter. Sie definiert zwei Eigenschaften, die vom Entwickler im Ereignis OnExportFilterSetup angepasst werden können:

  • BandTypes: TfrBandTypes. Dies ist ein Satz von Bandtypen, nur die in diesem Satz enthaltenen Bänder werden tatsächlich exportiert, der Rest der im Bericht vorhandenen Bänder wird ignoriert. Mit dieser Eigenschaft kann ein Entwickler zum Beispiel nur den Inhalt des Masterbandes exportieren und dabei Titel, Kopf- und Fußzeilen aus der exportierten Ausgabe herauslassen:
sender.BandTypes := [btMasterData];

standardmäßig werden alle Bänder verarbeitet, aber TfrCSVExportFilter ändert diese Eigenschaft so, dass nur Stammkopf-, Spaltenkopf- und Stammdatenbänder verarbeitet werden.

  • UseProgressbar: boolean. Mit dieser Eigenschaft lässt sich die Anzeige eines Fortschrittsbalkens aktivieren oder deaktivieren, der den Fortschritt des Exportprozesses zeigt. Per Vorgabe ist die Eigenschaft auf false gesetzt.

TfrTextExportFilter

Vererbung: TfrExportFilter <- TfrTextExportFilter
befindet sich in der Datei: lr_e_txt.pas, die zum LazReport Package gehört.

ist die Basisklasse der textbasierten Exportfilter. Dieser Exportfilter versucht, eine Textdarstellung eines grafischen Berichts zu erstellen, indem er die ursprünglichen grafischen Koordinaten in ein gröberes Raster einpasst, bei dem jede Einheit aus "UsedFont"-Pixeln besteht. Abhängig vom Wert des UsedFont-Wertes kann die exportierte Ausgabe mehr oder weniger das Layout der Objekte im grafischen Bericht darstellen. Neben den Eigenschaften, die von der Klasse TfrExportFilter geerbt wurden, definiert TfrTextExportFilter zwei weitere Eigenschaften.

  • UsedFont:integer. Diese Eigenschaft definiert die Pixelabmessungen des Ausgaberasters, in das die Objekte im Bericht durch Umrechnung der einzelnen x- und y-Positionen eingepasst werden. Der Standardwert ist 10, wenn der Benutzer diesen Wert auf 0 oder weniger ändert, wird LazReport automatisch einen Dialog anzeigen, der nach dem UsedFont Wert fragt, wenn der Benutzer einen ungültigen Wert eingibt, wird ein 10er Wert verwendet. Der Wert 10 wird verwendet, weil er besser zu den üblichen Berichten passt, die mit Schriftarten von 10-13 Punkten erstellt werden.
  • UseBOM:boolean. Diese Eigenschaft ermöglicht die Einbeziehung eines UTF-8 Byte Order Mark Zeichens am Beginn der Textausgabe (siehe BOM), das von einigen Editoren/Betrachtern benötigt wird. Per Vorgabe wird BOM in der exportierten Ausgabe nicht verwendet.

TfrCSVExportFilter

Vererbung: TfrExportFilter <- TfrTextExportFilter <- TfrCSVExportFilter
befindet sich in der Datei: lr_e_csv.pas, die zum Package "LazReport" gehört.

Dieser spezielle Text-Exportfilter erzeugt eine Ausgabe von Komma-separierten Werte (Comma Separated Value). Aktuell kann jedes Zeichen als Separator verwendet werden (wobei dies nicht bedeutet, dass das auch sinnvoll ist). Er unterscheidet sich von ihrer Vorgängerklasse dadurch, dass er nicht versucht, eine Textlayout-Darstellung des grafischen Berichts zu erstellen. Stattdessen versucht er, für jede Datensatzausgabe die Reihenfolge der Felder aus dem Quellbericht zu erraten und erzeugt dann eine Liste von Feldern unter Verwendung eines vom Benutzer definierten Trennzeichens. Neben den Eigenschaften, die er von seinen Vorgängerklassen geerbt hat, definiert er einige Eigenschaften zur Anpassung der generierten Ausgabe.

  • QuoteType:TfrQuoteType. Diese Eigenschaft steuert, ob der generierte Feldwert mit dem angegebenen Anführungszeichen umgebrochen werden soll oder nicht. Mögliche Werte sind qtNone, qtQuoteChar und qtAutoQuote. Mit qtNone wird der Wert des Feldes niemals umgebrochen, qtQuoteChar verwendet den Character, der in QuoteChardefiniert ist, wobei alle QuoteChar innerhalb des Feldes dupliziert werden. qtAutoQuote prüft zuerst, ob QuoteChar in dem Feld vorkommt. Wenn das der Fall ist, wird QuoteChar gesetzt, andernfalls wird nichts unternommen (als hätte man qtNone gesetzt). Standardmäßig wird QuoteType wie qtQuoteChar gesetzt.
  • QuoteChar:TUTF8Char. Hier wird das Zeichen angegeben, mit dem der Feldwert umbrochen werden soll, wenn der Quotetype des Wertes qtQuoteChar angegeben bzw. abgeleitet wurde, wenn qtAutoQuote eingestellt ist. Jede Instanz dieses Zeichens im Feldwert wird dupliziert. Standardmäßig ist QuoteChar auf das Zeichen " gesetzt.
  • Separator:TUTF8Char. Dieses Zeichen wird verwendet, um die Felder in jedem Datensatz zu separieren. Per Vorgabe wird das Komma (',') verwendet. Es kann aber auch jedes adere gültige UTF-8 Zeichen verwendet werden. Einige CSV Dateien verwenden das TAB Zeichen zum Separieren. Um dies zu erreichen, setzen sie Separator:=#9 ein.

Der CSV-Exporter verwendet den geerbten Eigenschaftswert UsedFont nicht, so dass jeder eingestellte Wert ignoriert wird. Mit den Standard-Eigenschaftswerten erzeugt TfrCSVExportFilter Excel-kompatible Dateien. Der einzige Nachteil ist, dass Excel die Datei nicht als UTF-8-kodiert erkennt. Um Excel zu zwingen, die Kodierung automatisch zu erkennen, setzen Sie die Eigenschaft UseBOM auf true.

TfrHTMExportFilter

Vererbung: TfrExportFilter <- TfrTextExportFilter <- TfrHTMExportFilter.
befindet sich in der Datei: lr_e_htm.pas, die zum Package "LazReport" gehört.

Dieser spezielle Text-Exportfilter erzeugt eine gültige "HTML 4.01 Transitional" Ausgabe. Gegenwärtig definiert er nur eine zusätzliche Eigenschaft:

  • UseCSS:boolean. Diese Eigenschaft bestimmt, ob die erzeugte Ausgabe CSS Informationen enthält oder nicht. Sie ist per Vorgabe auf false gesetzt.

TfrImageExportFilter und TfrHtmlDivExportFilter

Für die Verwendung dieser beiden Filter muß das Package lr_extexp installiert werden. Man findet es im addons Unterverzeichnis von LazReport.

PDF-Exportfilter

Um einen Report ins PDF-Format exportieren zu können, muß das Package LazReportPDFExport installiert werden. Man findet es im addons Unterverzeichnis von LazReport. Dieses Package wiederum setzt PowerPDF voraus, welches daher zuerst installiert werden sollte. Nach der Installation kann der neue Exportfilter wie einer der anderen Exportfilter verwendet werden.

Schnellstart

Report Records from a Dataset

In diesem Beispiel werden wir einen Bericht entwerfen, um Datensätze aus einer abgeleiteten Komponente zu drucken (TDbf, TSQLQuery, TZTable, TZQuery, etc.). Dabei wird davon ausgegangen, dass LazReport bereits installiert ist und die Komponente "dataset", hier "Dbf1" genannt, bereits konfiguriert und aktiv ist.

  1. Vom LazReport Tab wählen sie eine TfrReport Komponente und legen diese auf dem Formular ab, sie erhält den Namen "frReport1".
  2. Fügen Sie eine TfrDbDataset-Komponente hinzu, sie erhält den Namen "frDbDataset1"
  3. Fügen Sie einen TButton hinzu, er enthält den Namen Button1, benennen Sie ihn um zu "btnShowReport"
  4. Nach Auswahl von frDbDataset1 im Objekt Inspector setzen Sie in der "Dataset" Eigenschaft den Wert auf "Dbf1"
  5. Wählen Sie nun frReport1 und verknüpfen Sie mit demselben Verfahren die Eigenschaft "Dataset" mit "frDbDataset1":

    lrformsetup.png

  6. Klicken Sie mit der rechten Maustaste auf frReport1 und wählen Sie "Bericht entwerfen" aus dem Menü, LazReport Berichtsdesigner wird erscheinen.
  7. Wählen Sie im Designer-Fenster das Menü Werkzeuge(Tools)->Werkzeuge->DB-Felder einfügen, der Dialog Felder einfügen erscheint.
  8. In der Liste mit den Feldern wählen sie die Felder, die sie im Report verwenden möchten.
  9. Aktivieren sie die Optionen "Include Headers" und "Include Bands". Das Ergebnis sollte etwa so aussehen:

    lrinsertfieldsdialog.png

  10. Klicken sie auf "Ok" und LazReport wird die Bänder und Felder etwa so anordnen:

    lrreportwithfields.png

  11. Klicken sie auf den Vorschau Button lrprevieweye.png, LazReport wird dann die Daten zusammenführen und etwa so anzeigen:

    lrpreviewreport.png

  12. Speichern sie den Report über das Menü: Datei -> Speichern. Wählen sie das selbe Verzeichnis wie für das aktuelle Projekt und benennen sie den Report listing1.lrf .
  13. Schließen sie den Report-Designer.
  14. Klicken sie doppelt auf btnShowReport und geben sie in der Prozedur den folgenden Code ein:
  frReport1.LoadFromFile('listing1.lrf');
  frReport1.ShowReport;

Bug Reports

Bitte melden sie Probleme und Fehler mittels des lazarus/freepascal Bugtrackers. Wählen sie dort unter project: "Lazarus Packages" und als Category "LazReport". Für Patches erstellen sie bitte einen Bug Report und hängen dort den Patch an.