FastReport Schulungsplan
Inhaltsverzeichnis
1 Allgemeines
Hier finden Sie einen Schulungsplan als Leitfaden für eine FastReport©-Schulung.
Es sind hilfreiche Links enthalten, so dass man Details zu einem Thema schnell aufrufen kann.
2 Funktionsweise
2.1 Wie funktioniert das Drucken mit GEVITAS-Programmen und FastReport
- Das heißt
- Das Programm stellt alle benötigten Daten-Tabellen zur Verfügung
- Es sind nur die Tabellen vorhanden, die beim jeweiligen Vorgang auch benötigt werden
- In den Tabellen sind die Daten für den jeweiligen Vorgang enthalten
2.2 Bereiche eines Reports
- Bänder
- Elemente eines Reports
- Bänder
- Tabellen, DataSets
- Daten, Tabellen und Felder
- DataSets
- Objekte
- Memo-Felder, Objekte im Report
3 Der Designer
- Designer öffnen mit ausgewähltem Formular (=Report-Datei)
- Wie öffnet man den Designer
- Zugriffsrecht wird benötigt
- Zugriffsrecht
- Designer-Elemente
- Übersicht über den Designer
- Report-Einstellungen, Seitengröße usw.
- Grundlegende Einstellungen des Reports
4 Einfacher Report: Artikel-Etikett
Anhand eines Artikel-Etiketts kann man in die Report-Gestaltung einsteigen:
Dazu in die Artikel-Stammdaten, einen Artikel öffnen und auf Etikett klicken.
Das Modul GevitasLabelPrint wird gestaret.
- Im Designer
- Klicken auf Datei - Neu
- Standard Report auswählen
- Report - Daten auswählen, DataSet anklicken
- Nun hat man ein leeres Fenster
- Rechts die möglichen Datenbank-Tabelle(n) und -felder
- Man könnte nun einfach Felder hineinziehen
- Funktioniert aber nur mit einem Datensatz, weil: Band fehlt! Siehe Es wird nur EIN Etikett gedruckt
- Ein Band Masterdaten hineinziehen
- Felder nun auf diesem Band platzieren.
- Text-Felder heißen "Memos"
- Erklärung der Feld-Formatierung
- Größe
- Position
- Schrift
- Rahmen
- Nur am Rande: Barcode, QR-Code, siehe Etiketten mit QR-Code
- Eigenschaften eines Objekts im Objekt-Inspektor
5 Etwas aufwändigerer Report: Angebot/Auftrag
Anhand eines Angebot/Auftrag kann man die Report-Gestaltung erweitern:
Dazu in die Auftragsverwaltung und ein Angebot/Auftrag öffnen und auf Drucken klicken.
- Eine Kopie des Reports erstellen
- Doppelklick auf den Formular-Namen öffnet Windows-Explorer
- Die Datei xxx.fr3 kopieren mit sinnvollem Namen
- Zurück zum Druckprogramm, Button klicken, um die Dateiliste zu aktualisieren!
- Viele Bänder in dem Report
- Mehrere MasterData-Bänder für den Auftragskopf
- Ein Detail-Band, mehrere "Child-Bander" darunter, wozu?
- Hauptsächlich wegen Ein-/ausblenden von Bereichen
- Child kann Child haben! Siehe: Child-Band wird nicht gedruckt
- Welche Band-Typen gibt es: Bänder
- Seitenkopf
- Basis-Report, siehe: Vererbung/Basis-Report und Standard-Basis-Report und Checkliste Anpassen Standard-Basis-Report
- Keine Datenfelder in den Basis-Report ziehen!
- MasterData-Bänder
- Unterschiedliche Bereichen ein-/ausblenden, das kommt später!
- Detail-Band (nur eines!)
- Hat Child-Bänder zum ein-/ausblenden, das kommt später!
- Footer
- Seitenfuss am Ende des Reports
- Seitenfuß
- Aus Basis-Report!
6 Code: Die Script-Sprache von FastReport
- Der Code-Editor
- Aufrufen über das Register "Code"
- oder Durch Doppelklick auf ein Ereignis im Objekt-Inspektor
- Was sind Ereignisse?
- Ein Ereignis wird bei bestimmten Geschehnissen ausgelöst und kann eine Code beinhalten.
- Das wichtigste Ereignis: OnBeforePrint wir ausgelöst, bevor ein Objekt (Band, Feld usw.) "gedruckt" wird.
- "Gedruckt" meint hier auch angezeigt, exportiert usw.
- Prozeduren, begin und end;
procedure DetailPositionenOnBeforePrint(Sender: TfrxComponent); begin // Dieser Code wird ausgeführt, BEVOR das Positionen-Detail-Band // ausgegeben wird. // Wenn der Gesamtpreis 0 ist, den Einzelpreis unterdrücken: // (z.B. bei 100 % Rabatt) if <Positionen."GesBetrag"> = 0 then begin memoPosEinzelPreis.Visible := False; memoPositionenRabattProz.Visible := False; end; end;
6.1 procedure
Prozeduren sind Code-Blöcke, die für bestimmte Aufgaben (=Ereignisse) bestimmte Befehle enthalten.
Die Befehle befinden sich zwischen...
procedure DetailPositionenOnBeforePrint(Sender: TfrxComponent); begin
...und...
end;
Sender: TfrxComponent wird nur für ganz wenige Spezialfälle benötigt, vergessen Sie das.
- Der Autor hat Sender in den letzten 5 Jahren nicht benötigt...
6.2 Begin und end
Begin und end legen den Anfang und das Ende eines Programm-Blocks fest.
Eine Prozedur beginnt und endet damit.
Blöcke werden auch in if ... then ...else verwendet, wenn nach dem if bzw. else mehrere Zeilen kommen.
Siehe FastReport: Der if-Befehl
if {Ausdruck} then
...wobei {Ausdruck} ein logischer Ausdruck ist, der entweder wahr (true) oder falsch (false) ergibt.
Wenn nach dem
then
nur eine Zeile folgt, kann man diese direkt darunter schreiben.
Beispiel:
// Kapitel-Position (PosNr=0) ausblenden: if ( <Positionen."PosNr"> = 0 ) then ddPositionen.Visible := False;
Wenn nach dem
then
mehrere Zeilen folgen, muss man einen Block mit
begin
und
end;
schreiben. Dazwischen schreibt man die Zeilen des Codes.
Beispiel:
// Kapitel-Position (PosNr=0) ausblenden: if ( <Positionen."PosNr"> = 0 ) then begin ddPositionen.Visible := False; ddPosTexte.Visible := False; end;
6.3 Das Semikolon ;
- Das Ende einer Programmzeile wird durch das Semikolon ; festgelegt.
6.4 Ist-Gleich ist nicht Ist-Gleich!
Das Gleich-Zeichen hat zwei Syntax-Varianten:
- =
= wird verwendet, wenn man zwei Werte miteinander vergleichen will.
Beispiel:
if ( <Positionen."PosNr"> = 0 ) then
- :=
:= wird verwendet, wenn man dem linken Objekt den Wert rechts zuweisen will.
ddPositionen.Visible := False;
6.5 Felder und Variablen im Code
Wenn man Datenbank-Felder, Variablen usw. im Code ansprechen will, muss man die Namen in spitzen Klammern...
<Name>
angeben.
- Hinweis
- Der Schulungsplan ist hier frühzeitig beendet, CORONA/COVID-19 "sei Dank"! Er wird später weitergeführt...