FastReport Schulungsplan: Unterschied zwischen den Versionen
| (10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 21: | Zeile 21: | ||
;Bänder | ;Bänder | ||
:[[Erstellen_eines_Reports_mit_FastReport#Elemente_eines_Reports|Elemente eines Reports]] | :[[Erstellen_eines_Reports_mit_FastReport#Elemente_eines_Reports|Elemente eines Reports]] | ||
:[[Erstellen_eines_Reports_mit_FastReport#B.C3.A4nder|Bänder]] | |||
;Tabellen, DataSets | ;Tabellen, DataSets | ||
:[[FastReport_Daten,_Tabellen_und_Felder|Daten, Tabellen und Felder]] | :[[FastReport_Daten,_Tabellen_und_Felder|Daten, Tabellen und Felder]] | ||
:[[Erstellen_eines_Reports_mit_FastReport#Was_ist_ein_Dataset.3F|DataSets]] | |||
;Objekte | ;Objekte | ||
:[[Erstellen_eines_Reports_mit_FastReport#Texte_.28Memos.29|Memo-Felder, Objekte im Report]] | :[[Erstellen_eines_Reports_mit_FastReport#Texte_.28Memos.29|Memo-Felder, Objekte im Report]] | ||
== Der Designer == | == Der Designer == | ||
| Zeile 71: | Zeile 72: | ||
** Rahmen | ** Rahmen | ||
* Nur am Rande: Barcode, QR-Code, siehe [[Etiketten_mit_QR-Code|Etiketten mit QR-Code]] | * Nur am Rande: Barcode, QR-Code, siehe [[Etiketten_mit_QR-Code|Etiketten mit QR-Code]] | ||
* Eigenschaften eines Objekts im Objekt-Inspektor | |||
| Zeile 78: | Zeile 80: | ||
Dazu in die Auftragsverwaltung und ein Angebot/Auftrag öffnen und auf '''Drucken''' klicken. | 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 [[Datei:btn_refresh_blau.png]] 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: [[FastReport_Tipps_und_Tricks:_Child-Band_wird_nicht_gedruckt|Child-Band wird nicht gedruckt]] | |||
* Welche Band-Typen gibt es: [[FastReport_Bands|Bänder]] | |||
;Seitenkopf | |||
* Basis-Report, siehe: [[FastReport_Vererbung/Basis-Report|Vererbung/Basis-Report]] und [[REFLEX_Standard-Basis-Report|Standard-Basis-Report]] und [[Checkliste_Anpassen_Standard-Basis-Report|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! | |||
== 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; | |||
=== 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... | |||
=== 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]] | |||
<nowiki>if {Ausdruck} then</nowiki> | |||
...wobei <nowiki>{Ausdruck}</nowiki> ein logischer Ausdruck ist, der entweder '''wahr''' (true) oder '''falsch''' (false) ergibt. | |||
Wenn nach dem | |||
<nowiki>then</nowiki> | |||
nur '''eine Zeile''' folgt, kann man diese direkt darunter schreiben. | |||
Beispiel: | |||
<nowiki> // Kapitel-Position (PosNr=0) ausblenden:</nowiki> | |||
<nowiki> if ( <Positionen."PosNr"> = 0 ) then</nowiki> | |||
<nowiki> ddPositionen.Visible := False;</nowiki> | |||
Wenn nach dem | |||
<nowiki>then</nowiki> | |||
'''mehrere Zeilen''' folgen, muss man einen Block mit | |||
<nowiki>begin</nowiki> | |||
und | |||
<nowiki>end;</nowiki> | |||
schreiben. Dazwischen schreibt man die Zeilen des Codes. | |||
Beispiel: | |||
<nowiki> // Kapitel-Position (PosNr=0) ausblenden:</nowiki> | |||
<nowiki> if ( <Positionen."PosNr"> = 0 ) then</nowiki> | |||
<nowiki> begin</nowiki> | |||
<nowiki> ddPositionen.Visible := False;</nowiki> | |||
<nowiki> ddPosTexte.Visible := False;</nowiki> | |||
<nowiki> end;</nowiki> | |||
=== Das Semikolon ''';''' === | |||
:Das Ende einer Programmzeile wird durch das Semikolon ''';''' festgelegt. | |||
=== Ist-Gleich ist nicht Ist-Gleich! === | |||
Das Gleich-Zeichen hat zwei Syntax-Varianten: | |||
;<nowiki> = </nowiki> | |||
<nowiki> = </nowiki> wird verwendet, wenn man zwei Werte miteinander vergleichen will. | |||
Beispiel: | |||
<nowiki> if ( <Positionen."PosNr"> = 0 ) then</nowiki> | |||
;<nowiki> := </nowiki> | |||
<nowiki> := </nowiki> wird verwendet, wenn man dem linken Objekt den Wert rechts zuweisen will. | |||
<nowiki> ddPositionen.Visible := False;</nowiki> | |||
=== Felder und Variablen im Code === | |||
Wenn man Datenbank-Felder, Variablen usw. im Code ansprechen will, muss man die Namen in spitzen Klammern... | |||
<nowiki> <Name> </nowiki> | |||
angeben. | |||
;Hinweis: | |||
:Der Schulungsplan ist hier frühzeitig beendet, CORONA/COVID-19 "sei Dank"! Er wird später weitergeführt... | |||
== Links == | == Links == | ||
Aktuelle Version vom 21. April 2020, 20:18 Uhr
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.
Funktionsweise
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
Bereiche eines Reports
- Bänder
- Elemente eines Reports
- Bänder
- Tabellen, DataSets
- Daten, Tabellen und Felder
- DataSets
- Objekte
- Memo-Felder, Objekte im Report
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
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
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!
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;
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...
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;
Das Semikolon ;
- Das Ende einer Programmzeile wird durch das Semikolon ; festgelegt.
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;
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...
