Variable Reihenhöhen in Tabellen


Anforderung

In einer Tabelle auf einem Lieferschein sollen Artikel eingetragen werden, deren Beschreibungen unterschiedlich viele Zeilen in Anspruch nehmen. Die horizontalen Trennlinien innerhalb der Tabelle sind an die Länge der jeweiligen Beschreibung anzupassen.

Grundlage für dieses Beispiel ist das Formular 'Einzelne Seite mit Tabelle ohne Reihen' aus der Beispielinstallation. Der gewünschte Ausdruck der ausgefüllten Tabelle mit den Artikelbeschreibungen soll wie folgt aussehen:



Realisierung

Der Realisation dieser Anforderung liegt die Idee zugrunde, in das Lieferscheinformular lediglich den Kopf und den äußeren Rahmen der Tabelle aufzunehmen. Die untere Trennlinie zwischen Kopfbereich und Tabellenkörper wird ebenfalls weggelassen. Die horizontale Trennlinie wird als eigene Ressource hinterlegt und über jedem neuen Artikel angedruckt. Mit dem ersten Artikel wird dann auch die Trennlinie zum Kopfbereich gezeichnet.

Zum besseren Verständnis nachfolgend ein Bild des Tabellenbereichs aus dem Formular 'Einzelne Seite mit Tabelle ohne Reihen':



Die zum Zeichnen der Trennlinien benötigte Ressource 'Lieferscheinzeile mit Grau hinterlegt' hat folgendes Aussehen:



Das Zeichnen der Trennlinie wird durch ein Ressourcenfeld innerhalb des Formulars 'Einzelne Seite mit Tabelle ohne Reihen' übernommen. Das Ressourcenfeld hat eine Feldauswahl, die nach den ersten Zeilen einer Artikelbeschreibung sucht. Diese erste Zeile zeichnet sich dadurch aus, daß ihr eine ein- oder zweistellige Positionsangabe vorausgeht.



Um die erste Zeile der Artikelbeschreibung im Ausdruck zu finden, wird als Feldindex '01????0000' und als Vergleichsmuster ' [ 0-9]# @.*' verwendet. Mit diesen beiden Angaben wird jede Textpassage, die an der horizontalen Position '0000' beginnt, gegen das Muster verglichen. Das Muster prüft zunächst auf fünf Leerzeichen gefolgt von einer Folge aus zwei Ziffern oder einem Leerzeichen und einer Ziffer. Damit wird die ein oder zweistellige Positionsnummer in der Tabelle gefunden. Der Teil '@.*' findet die mit einem Buchstaben beginnende Artikelbezeichnung sowie den Rest der Zeile. Die Auswahl 'Nein' bei Feld entfernen läßt die Textpassage so wie sie ist auf dem Blatt.

Zum besseren Verständnis der Arbeitsweise des Vergleichsmusters ist hier ein Ausschnitt aus der Indexdatei des Beispieldatenstroms abgebildet:

 ...
 [0106810000]      1   SK20HQT  Scart Kabel, high quality      St     230      0    230
 [0106BD0000]                   1 x Scartstecker auf 1 x Scartstecker (21 pin),
 [0106EA0000]                   transparentes Kabel mit vergoldeten Kontakten,
 [0107170000]                   4 x 0.14 mm² abgeschirmt (Audio), 6 x 75 Ohm 
 [0107440000]                   RG59 (Video), Länge 2 m
 [0107DA0000]      2   SK20F1   Scart-Flachkabel               St     160      0    160 
 [0108160000]                   Stecker auf Stecker, 21 polig belegt, 1 m
 [0108AC0000]      3   SV3      Scart Verteiler                St      10      0     10
 [0108E80000]                   Vollständig beschaltet für den Anschluß von 3
 [0109150000]                   Geräten, alle Buchsen parallel geschaltet
 [0109AB0000]      4   AVS1020  Video-Kabel Scart auf Cinch    St     160      0    160
 [0109E70000]                   1 x Scartstecker auf 3 x Cinchstecker, 2 x 
 [010A140000]                   0.14 mm² abgeschirmt (Audio), 1 x 75 Ohm 
 [010A410000]                   RG 59 (Video), Länge 1 m
 [010AD70000]      5   AV3030   Video-Kabel Cinchstecker       St     260      0    260
 [010B130000]                   3 x Cinchstecker auf 3 x Cinchstecker, 2 m
 [010BA90000]      6   HC7502   AV-Kabel S-VHS/Cinch - Scart   St      20      5     15
 [010BE50000]                   4 pol. S-VHS-Stecker / 2 Cinchstecker nach
 [010C120000]                   Scartstecker, verchromte Metallstecker, vergol-
 [010C3F0000]                   dete Kontakte, High Quality, molded
 ...

Die Positionierung der Ressource geht von der Anforderung aus, daß die Trennzeile oberhalb der ersten Artikelzeile gezeichnet werden soll. Damit wird die Zeile auch durch die graue Hinterlegung aus der Ressource hervorgehoben. Die angegebenen Werte für horizontale und vertikale Position sind empirisch ermittelt. Sie hängen sehr stark davon ab, was als Referenzpunkt der Trennlinie innerhalb der Ressource festgelegt wird. Da in der Ressource selbst schon ein negativer Offset vorgegeben wurde, muß die vertikale Position im Formular nicht weiter korrigiert werden.



Weil in unserem Beispiel das Vergleichsmuster im Ressourcenfeld insgesamt sechs mal erfüllt wird, wird das Ressourcenfeld auch sechs mal ausgeführt. Das heist, jeder Artikel bekommt seine Trennzeile. Die Taballe erhält damit das gewünschte Aussehen (siehe oben).

Hinweise