Ich übergebe einem SmartForm eine 5 X 5 Matrix an Feldgruppen.
Jede Feldgruppe beinhaltet je drei Felder, die Angaben machen über
- Den Inhalt der Ausgabe
- Das Format der Ausgabe, fett, kursiv, Barcode, unterschrichen und
- über die horizontale Positionierung des jeweiligen Inhaltes in einer Zeile
Eine Tabellezeile repräsentiert jeweils eine Zeile der Liste. Im SMARTFORM sollen die Ausgabeinformationen jeweils entsprechend der Steuerungsdaten (Position und Format) aufbereitet und ausgegeben werden. Im Rahmen der Matrix soll der Anwender beliebige Ausgaben designen können.
Die Schriftart, der Barcode-Typ und die Schriftgröße sind für den Anwender über die Steuerungstabelle nicht änderbar.
Nach einiger Suche im Netz würde ich sagen, dass es grundsätzlich scheinbar die Möglichkeit gibt, die gewünschten Dinge dynamisch zur Laufzeit durchzuführen. Über die Struktur %header, genauer das Feld STDSTYLE, kann man Feldinhalte von Steuerungsparametern ändern. Dazu habe ich folgende Coding-Sequenz gefunden:
IF ie_langu eq 'E'. "English
MOVE 'ZSS_STYLE1' TO %header-stdstyle. "HELVE
ELSE. " for other languages
MOVE 'ZSS_STYLE2' TO %header-stdstyle. "CNSONG
ENDIF.
Die Frage ist ob das während der Ausführung eines Forms mehrfach möglich ist oder nur einmalig zum Beginn der Formularverarbeitung.
Dann müsste man für jede Aufbereitungsvariante Styles definieren, die dann man über die genannte Struktur ‚laden‘ könnte.
Ein größeres Problem dürfte es dabei im Zusammenhang mit der dynamischen Positionierung geben, weil so denke ich die grafische Änderung des Drucks minimal an einer Zelle festgemacht werden kann. Wenn das so ist, dann gibt es zwei Möglichkeiten:
1.) Wir haben in einer Zeile 5 Zellen und die Positionierung erfolgt max. innerhalb der Zelle, können damit aber unter Umständen je Zelle eine andere grafische Aufbereitung ansteuern oder
2.) Wir haben in einer Zeile 1 Zelle, können damit unter Umständen variable positionieren, aber alle Elemente haben den identischen Ausgabestil.
Die Variable %header klingt für mich sehr nach "interner Verwendung" und könnte sich jederzeit ändern. Gundsätzlich läuft die interne Verarbeitung eines Smartforms ähnlich wie eine XML-Datei. Daher würde ich vermuten, dass die %header innerhalb jedes Knotens, wo das Coding darunter eingebunden ist, nur einmalig wirkt. Ich hab selbst schon mal überlegt ein "dynamisches" Smartforms-Formular zu erstellen, aber dann aufgrund der Komplexität und den starren Strukturen im Smartforms wieder aufgegeben.
Meine Empfehlung wäre, dass du dir besser Adobe-Forms zu Gemüte führst. Da kann man dank Scripting (JavaScript oder FormCalc) zur Laufzeit alles mögliche machen, angefangen bei Formatierung, über Rahmen und Schattierungen, bis hin zur Positionierung.
lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.