FastReport Tipps und Tricks: Bänder

Aus GEVITAS
Version vom 2. Juni 2018, 23:35 Uhr von Gevitas (Diskussion | Beiträge) (Alle Positionen unterdrücken, wenn Kapitel nicht gedruckt werden soll)
Wechseln zu: Navigation, Suche

1 Bänder

1.1 Kapitel-Positionen zusammenhalten

Es kann vorkommen, dass auf die Seite nur noch die Kapitel-Überschrift passt und keine Position mehr. Beispiel:

FastReport TippsUndTrick KapitelPositionen Zusammenhalten Vorher.png

Um das zu verhinden, setzt man die Option:

FastReport TippsUndTrick KapitelPositionen Zusammenhalten Option.png

Nachher:


FastReport TippsUndTrick KapitelPositionen Zusammenhalten Nachher.png


1.2 Band per Code unterdrücken

Im Prinzip kann man ein Band ganz einfach im Code unterdrücken, indem man eine Formel schreibt, die unter bestimmten Umständen die Eigenschaft Visible (=sichtbar) auf False (falsch, nein) stellt. Beispiel:

 // Kapitel-Position ausblenden:
 if <Positionen."PosNr"> = 0 then     // Wenn es eine Kapitel-Position ist!
 begin
   DetailPositionen.Visible := False;
 end;

oder kürzer:

 if <Positionen."PosNr"> = 0 then     // Wenn es eine Kapitel-Position ist!
   DetailPositionen.Visible := False;


Im Detail-Bereich (z.B. bei Auftrags-Positionen), der ja mehrfach wiederholt wird, würde sich dieses Unsichtbar schalten aber auf alle folgenden Detail-Daten auswirken! Ab dem Moment würden die restlichen Position nicht mehr erscheinen! Also muss man im Code festlegen, was sonst ("else") passieren soll, wenn die Bedingung nicht erfüllt ist. Das könnte dann so aussehen:

 // Kapitel-Position ausblenden:
 if <Positionen."PosNr"> = 0 then     // Wenn es eine Kapitel-Position ist!
 begin
   DetailPositionen.Visible := False;
 end
 else                                // Wenn es KEINE Kapitel-Position ist!
   DetailPositionen.Visible := True;


Etwas schwieriger wird es, wenn es mehrere Abfragen im Code gibt, die das Visible für das Band ein- oder ausschalten. Dieser Artikel beschreibt, wie man da am Besten vorgeht.


Postionen-Band unterdrücken, wenn Kapitel-Überschrift unterdrückt ist

Man kann Positionen auch unterdrücken, wenn die Kapitel-Überschrift das Kennzeichen "Nicht drucken" hat. Beispiele:

Überschriften-Band ("GroupHeader1"):


procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent);
begin
  // Dieser Code wird ausgeführt, BEVOR das Positionen-Gruppenkopf-Band (die Kapitel-Überschrift) ausgegeben wird.

  // Wenn das Druck-Kennzeichen auf "nicht drucken" steht: Ausblenden:  //JC//160214//
  if <Positionen."DruckKennzeichen_0Nicht_1Normal_2_MitBez_3NurKap_4OhneText"> = 0 then
  begin
    GroupHeader1.Visible := False;
    exit;
  end
  else
    GroupHeader1.Visible := True;
...


Positionen-Band:

procedure DetailPositionenOnBeforePrint(Sender: TfrxComponent);
begin
  // Dieser Code wird ausgeführt, BEVOR das Positionen-Detail-Band ausgegeben wird.

 // Grundstellung: Band ist sichtbar! Weiter unten wird es u.U. wieder ausgeschaltet!
 DetailPositionen.Visible := True;

 // Kapitel-Position ausblenden:
 if <Positionen."PosNr"> = 0 then
 begin
   DetailPositionen.Visible := False;
   exit;
 end;

 // Wenn das Druck-Kennzeichen auf "nicht drucken" steht: Ausblenden:  //JC//160214//
 if <Positionen."DruckKennzeichen_0Nicht_1Normal_2_MitBez_3NurKap_4OhneText"> = 0 then
 begin
   DetailPositionen.Visible := False;
   exit;
 end;

 // Wenn das Druck-Kennzeichen des KAPITELS (X.0) auf "nicht drucken" steht: Ausblenden!
 if <Positionen."KapitelDruckKennz"> = 0 then
 begin
   DetailPositionen.Visible := False;
   exit;
 end;
 





  • Hinweis: Diese Möglichkeit steht ab Release 171025 zur Verfügung!


1.3 Kapitel unterdrücken wenn alle Positionen ausgegeben sind

Manchmal gibt es in der Auftragsverwaltung Aufträge, die den verschiedenen Teilmengen entsprechen, die gefertigt und ausgeliefert werden. Die Positionen, die vollständig ausgeliefert wurden, werden unterdrückt. Allerdings kommen die Kapitel-Überschriften noch, obwohl alle folgenden Positionen des Kapitels vollständig ausgegeben sind. Mit Hilfe eine berechneten Feldes kann man die Kapitel-Überschrift in diesem Fall unterdrücken.

Einzelheiten werden in FastReport: Kapitel unterdrücken wenn alle Positionen ausgegeben sind beschrieben.


1.4 Alle Positionen unterdrücken, wenn Kapitel nicht gedruckt werden soll

In der Tabelle der Positionen gibt es ein Feld <Positionen."KapitelDruckKennz">. Hier steht in jeder Position das Druck-Kennzeichen des zugehörigen Kapitel-Position. Mit diesem Feld kann man z.B. die Positionen unterdrücken, wenn das Kapitel nicht gedruckt werden soll.

Das Druckkennzeichen hat folgende Bedeutungen:


Wert Beschreibung
0 Nicht drucken
1 Drucken
2 Mit Bezeichnung
3 Nur Kapitel
4 Ohne Text


Beispiel:

In REFLEX wählt man in der Kapitel-Position das Druck-Kennzeichen "Nicht drucken" an, z.B. in Kapitel 3.0. Somit sollen alle Positionen des Kapitels 3 nicht gedruckt werden.

Damit nun jede Position "weiß", dass das Kapitel nicht gedruckt werden soll, wird in jeder Position (3.1, 3.2, 3.3 usw.) das Feld <Positionen."KapitelDruckKennz"> aufgeführt, das das Kennzeichen aus dem Kapitel (3.0) enthält!

Im Report muss man nun an zwei Stellen dieses Kennzeichen abfragen.

Detail-Positionen
In den Standard-Reports gibt es das Band DetailPositionen, in dem die Positionen dargestellt werden. Diese Band soll unterdrückt werden, wenn das zugehörige Kapitel auf "Nicht drucken" steht. Dazu kann man diesen Code im Ereignis "DetailPositionenOnBeforePrint" verwenden:
procedure DetailPositionenOnBeforePrint(Sender: TfrxComponent);
begin
  // Dieser Code wird ausgeführt, BEVOR das Positionen-Detail-Band
  // ausgegeben wird.

  // Standard: DetailPositionen drucken!
  DetailPositionen.Visible := True;

  // Wenn das ganze Kapitel nicht gedruckt werden soll: Ausblenden!
  if <Positionen."KapitelDruckKennz"> = 0 then
    DetailPositionen.Visible := False;

  // Kapitel-Position ausblenden:
  // Kennzeichen "Nur Kapitel" = 'Ja': Positionen unterdrücken:
  if ( <Positionen."PosNr"> = 0  )
  or ( <AuftragsKopf."KENNZ6"> = 'Ja' ) then
    DetailPositionen.Visible := False;





  • Dieses Feld steht ab Version 3.0/18.112 zur Verfügung!

1.5 Band dehnen

Eine wichtige und tolle Eigenschaft eines Bands in FastReport ist es, dass es sich optional dehnen kann, also an die Größe (genauer gesagt Höhe) der auszugebenden Daten anpassen kann.

Dieser Artikel beschreibt das.


1.6 Saubere Linien um Bänder, auch wenn Child-Band unterdrückt wird

Manchmal hat man mehrere Child-Bänder, die unter Umständen unterdrückt werden. Wenn man Linien (Rahmen) verwendet, fehlt aber u.U. der untere Rahmen, weil der ja von dem Child-Band kommt, das aber unterdrückt wird.

Dieser Artikel beschreibt das.

2 Links