FastReport Schulungsplan: Unterschied zwischen den Versionen
(→Bereiche eines Reports) |
|||
| (17 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 == | ||
| + | |||
| + | ;Designer öffnen mit ausgewähltem Formular (=Report-Datei) | ||
| + | :[[Erstellen_eines_Reports_mit_FastReport#Wie_.C3.B6ffnet_man_den_Designer.3F|Wie öffnet man den Designer]] | ||
| + | |||
| + | ;Zugriffsrecht wird benötigt | ||
| + | :[[Erstellen_eines_Reports_mit_FastReport#Zugriffsrecht|Zugriffsrecht]] | ||
| + | |||
| + | ;Designer-Elemente | ||
| + | :[[Erstellen_eines_Reports_mit_FastReport#.C3.9Cbersicht_.C3.BCber_das_Designer-Fenster|Übersicht über den Designer]] | ||
| + | |||
| + | ;Report-Einstellungen, Seitengröße usw. | ||
| + | :[[Erstellen_eines_Reports_mit_FastReport#Grundlegende_Einstellungen_des_Reports|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. | ||
| + | |||
| + | :[[Etikettendruck_Allgemeines|Etikettendruck Allgemeines]] | ||
| + | |||
| + | ;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 [[FastReport_Etikettenformular:_Es_wird_nur_Ein_Etikett_gedruckt|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|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 [[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 == | ||
| + | |||
| + | {| class="hintergrundfarbe1" | ||
| + | |- | ||
| + | |[[FastReport Seitenformat]] | ||
| + | |[[FastReport Daten, Tabellen und Felder]] | ||
| + | |[[FastReport Tabellen der Reports]] | ||
| + | |'''Beispiele:''' | ||
| + | |- | ||
| + | |[[FastReport Bands]] | ||
| + | |[[FastReport Objekte und Elemente eines Reports]] | ||
| + | |[[FastReport: Abhängige Formatierung von Feldern]] | ||
| + | |[[Ladeliste/Packliste mit FastReport]] | ||
| + | |- | ||
| + | |[[FastReport: Standard-Formular-Texte|Standard-Formular-Texte]] | ||
| + | |[[FastReport: Steuerung des Report mit Auftragskennzeichen|Steuerung des Report mit Auftragskennzeichen]] | ||
| + | |[[FastReport: Summen im Report bilden|Summen im Report bilden]] | ||
| + | |[[FastReport: Leasing-Liste|Leasing-Liste]] | ||
| + | |- | ||
| + | |[[FastReport Farb-Konstanten]] | ||
| + | |[[FastReport Namensgebung der Datenbank-Tabellen und -Felder|Namensgebung der Datenbank-Tabellen und -Felder]] | ||
| + | |[[FastReport Tipps und Tricks|Tipps und Tricks]] | ||
| + | |[[FastReport: Inventar-Liste|Inventar-Liste]] | ||
| + | |- | ||
| + | |[[REFLEX Standard-Reports]] | ||
| + | |[[Etikettendruck Allgemeines]] | ||
| + | |[[Mehrsprachige Formulare mit FastReport]] | ||
| + | |[[FastReport: Geräte-Liste|Geräte-Liste]] | ||
| + | |- | ||
| + | |[[GEVITAS Label-Print Installation]] | ||
| + | |[[GEVITAS-Carnet]] | ||
| + | |[[Videos zu FastReport]] | ||
| + | | | ||
| + | |- | ||
| + | |[[FastReport Angebots-/Auftragsformular mit Terminen]]. | ||
| + | | | ||
| + | | | ||
| + | | | ||
| + | |} | ||
Aktuelle Version vom 21. April 2020, 22:18 Uhr
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...
