FastReport Schulungsplan: Unterschied zwischen den Versionen

Aus GEVITAS
Wechseln zu: Navigation, Suche
(Einfacher Report: Artikel-Etikett)
(Bereiche eines Reports)
 
(12 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 61: Zeile 62:
 
* Rechts die möglichen Datenbank-Tabelle(n) und -felder
 
* Rechts die möglichen Datenbank-Tabelle(n) und -felder
 
* Man könnte nun einfach Felder hineinziehen
 
* Man könnte nun einfach Felder hineinziehen
* Funktioniert aber nur mit '''einem''' Datensatz, weil: Band fehlt!
+
* 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
 
* Ein Band '''Masterdaten''' hineinziehen
 
* Felder nun auf diesem Band platzieren.
 
* Felder nun auf diesem Band platzieren.
Zeile 70: Zeile 71:
 
** Schrift
 
** Schrift
 
** Rahmen
 
** Rahmen
* Nur am Rande: Barcode, QR-Code
+
* 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 ==
 
== Links ==

Aktuelle Version vom 21. April 2020, 22:18 Uhr

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

FastReport Prinzip.png

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.

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 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 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?
  • Welche Band-Typen gibt es: Bänder
Seitenkopf
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...

7 Links

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
Standard-Formular-Texte Steuerung des Report mit Auftragskennzeichen Summen im Report bilden Leasing-Liste
FastReport Farb-Konstanten Namensgebung der Datenbank-Tabellen und -Felder Tipps und Tricks Inventar-Liste
REFLEX Standard-Reports Etikettendruck Allgemeines Mehrsprachige Formulare mit FastReport Geräte-Liste
GEVITAS Label-Print Installation GEVITAS-Carnet Videos zu FastReport
FastReport Angebots-/Auftragsformular mit Terminen.