FastReport Band mit sauberen Linien: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „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 d…“) |
(→Der Report) |
||
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 22: | Zeile 22: | ||
[[Datei:FastReport_Saubere_Linien_Trotz_Child-Unterdrueckung_01.png]] | [[Datei:FastReport_Saubere_Linien_Trotz_Child-Unterdrueckung_01.png]] | ||
+ | Das Typ-/Bezeichnungsfeld hat unten keinen Rahmen, das Zusatztext-Feld hat oben keinen Rahmen. Somit sieht es so aus, als ob beide Felder mit einem Rahmen aussen umschlossen sind. Wenn das untere Memo jedoch unterdrückt wird (weil es leer ist), so fehlt der untere Rahmen. | ||
− | Der Trick ist, noch ein Child-Band einzufügen, in dem nur eine Linie steht! Diese Linie wird immer gedruckt, auch wenn | + | Der Trick ist, für das Child-Band 1 noch ein Child-Band einzufügen, in dem nur eine Linie steht! Diese Linie wird immer gedruckt, auch wenn das Band darüber ausgeblendet wird! |
+ | [[Datei:FastReport_Saubere_Linien_Trotz_Child-Unterdrueckung_03.png]] | ||
+ | |||
+ | Die Linie geht von links bis rechts, wie die Felder darüber auch. Sie sitzt auf der Top-Position 0, '''also ganz oben'''! | ||
− | + | Das geht mit FastReport ziemlich gut, weil FastReport Linien '''pixelgenau übereinander''' zeichnet. Linien mit Top=0 werden '''exakt über die unterste Line''' des Bandes darüber gelegt! | |
;Wichtig: | ;Wichtig: | ||
− | Diese Option für das erste Child-Band muss eingeschaltet werden: | + | :Diese Option für das erste Child-Band muss eingeschaltet werden: |
+ | |||
+ | :[[Datei:FastReport_Saubere_Linien_Trotz_Child-Unterdrueckung_04.png]] | ||
− | + | :Das untere Child-Band ("Child3") mit der Linie soll also gedruckt werden, auch wenn das "Eltern"-Band unsichtbar ist. Ohne diese Option (die standardmäßig ausgeschaltet ist) würde das "Child-Child-Band" nicht gedruckt, wenn Child1 ausgeschaltet wird. |
Aktuelle Version vom 19. Februar 2018, 16:37 Uhr
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, wie man trotzdem saubere Linien erzeugen kann.
1 Das Ergebnis
Beispiel:
Dieser Report druckt Artikel-Typ und -Bezeichnung, darunter eine Zeile mit optionalem Zusatztext. Der Zusatztext soll aber ohne Rahmen vom Haupttext gedruckt werden, also hat das Memo-Feld mit dem Typ und der Bezeichnung unten keinen Rahmen. Der Rahmen unten kommt vom Zusatztext.
Damit keine Leerzeile entsteht, wird dieser Zusatztext in ein Child verschoben. Dieses Child-Band wird unterdrückt, wenn der Zusatztext leer ist. Somit entfällt aber der Rahmen dieser Position! Sieht unschön aus.
2 Der Report
Im Report gibt es ein Detail-Band für Menge, Typ und Bezeichnung.
Darunter das Child-Band mit dem Zusatztext:
Das Typ-/Bezeichnungsfeld hat unten keinen Rahmen, das Zusatztext-Feld hat oben keinen Rahmen. Somit sieht es so aus, als ob beide Felder mit einem Rahmen aussen umschlossen sind. Wenn das untere Memo jedoch unterdrückt wird (weil es leer ist), so fehlt der untere Rahmen.
Der Trick ist, für das Child-Band 1 noch ein Child-Band einzufügen, in dem nur eine Linie steht! Diese Linie wird immer gedruckt, auch wenn das Band darüber ausgeblendet wird!
Die Linie geht von links bis rechts, wie die Felder darüber auch. Sie sitzt auf der Top-Position 0, also ganz oben!
Das geht mit FastReport ziemlich gut, weil FastReport Linien pixelgenau übereinander zeichnet. Linien mit Top=0 werden exakt über die unterste Line des Bandes darüber gelegt!
- Wichtig
- Diese Option für das erste Child-Band muss eingeschaltet werden:
- Das untere Child-Band ("Child3") mit der Linie soll also gedruckt werden, auch wenn das "Eltern"-Band unsichtbar ist. Ohne diese Option (die standardmäßig ausgeschaltet ist) würde das "Child-Child-Band" nicht gedruckt, wenn Child1 ausgeschaltet wird.