...
Table of Contents | ||||
---|---|---|---|---|
|
...
In der Dokumentfunktion "Dokument-Parameter" kann die Eingabemaske konfiguriert werden, die beim Generieren eines Dokuments erscheint.
...
Code Block |
---|
<CustomContentSection Name="Dokument-Parameter" WindowWidth="750" WindowHeight="750"> |
Attribute der CustomContentSection:
Attributname | Beschreibung |
---|---|
Name (Fenstername) | Hier wird der Name des Dokument-Parameter-Dialog-Fensters definiert werden. |
WindowWidth (Fensterbreite) | Hier kann die Fensterbreite in Pixel definiert werden. 1200 Pixel sollten nicht überschritten werden, da unter dieser Auflösung die einwandfreie Darstellung von primedocs möglich sein sollte. |
WindowHeight (Fensterhöhe) | Hier kann die Fensterhöhe in Pixel definiert werden. 1200 Pixel sollten nicht überschritten werden, da unter dieser Auflösung die einwandfreie Darstellung von primedocs möglich sein sollte. Der Wert für |
...
HINWEIS
Wenn eine Id in den DataNodes doppelt vorhanden ist (NICHT in der View!), dann kann der Dokument-Parameter-Dialog nicht geöffnet werden.
Basis-Attribute
Folgende Attribute können in jede Art von DataNode eingesetzt werden:
...
Wird zwischen Start- und Endtag etwas reingeschrieben, steht der eingegebene Text beim Generieren des Dokumentes bereits im Textfeld. Im erweiterten Beispiel z. B. Einladung
.
Attribute für Text-Elemente:
Attributname | Beschreibung |
---|---|
Regex | Das Attribut erlaubt, einen Regex (.NET Syntax) zu definieren, der im eingegeben Text mindestens eine Übereinstimmung (Match) finden muss. Achtung: Falls der ganze Text übereinstimmen oder nur genau ein 'Match' vorhanden sein darf, muss dies vom Regex-Ausdruck definiert werden. Beispiele: Regex="^[0-9]+$" erzwingt, dass alle Zeichen des Eingabetexts Ziffern sein müssen und dass mindestens eine Ziffer vorhanden sein muss. (^ matcht den Anfang des Eingabetextes und $ das Ende) |
Required | Es definiert, ob das Feld leer gelassen werden darf (Required="false" oder nicht gesetzt) oder ob das Feld ausgefüllt werden muss (Required="true"). Solange das Textfeld nicht ausgefüllt wird, bleibt der OK-Button zum Bestätigen der Eingaben im Dokument-Parameter grau gefärbt und ist nicht anklickbar. Sobald die nötigen Zeichen im Textfeld abgefüllt sind, kann der OK-Button angeklickt werden. |
ValidationMessage | Falls Required="true" oder ein Validierungsregex gesetzt wurde, erlaubt ValidationMessage eine benutzerdefinierte Fehlermeldung, falls die Validierung fehlschlägt. Sie wird angezeigt, sobald der Mauszeiger über das rote Ausrufezeichen rechts im Textfeld schwebt. Falls ValidationMessage nicht gesetzt ist, wird im Fall einer Nichtübereinstimmung eine Standardmeldung angezeigt. |
...
Wird zwischen Start- und Endtag das Datum gesetzt, ist dieses beim Öffnen vorausgewählt, wie z. B. 2022-08-15
für den Donnerstag, 15. August 2022. Wenn der Inhalt leer ist, wird jeweils das aktuelle Datum vorausgewählt.
Attribute für DateTime-Elemente:
Attributname | Beschreibung |
---|---|
Calendar | Es setzt das Format des Kalenders. Default ist "Gregor". Dieses Attribut muss nicht zwingend gesetzt werden. |
Format | Definition des Datumformates z. B. "dd MM yyyy" für "02.06.2016", Liste mit Datumsformaten. In der Basis-Konfiguration der Globalen Übersetzungen sind mehrere Datumsformate hinterlegt, auf die zugegriffen werden kann. |
Offset | Hier kann mit Tagen das vorausgewählte Datum berechnet werden, ausgehend vom jeweils aktuellen Datum, z. B. mit |
...
CheckBox
Wird in Word als Kontrollkästchensteuerelement (Check Box Content Control) eingefügt und ist für eine ja/nein-Auswahl.
Beispiele:
...
Beispiel/Simpel:
Code Block | ||
---|---|---|
| ||
<CheckBox Id="DocParam.Vetraulich" /> |
Beispiel/Erweitert:
Code Block | ||
---|---|---|
| ||
<CheckBox Id="DocParam.Vetraulich" Tooltip="Ankreuzen, wenn das Dokument vertraulich ist" Tracked="true" Label="Vertraulich" Required="true">true</CheckBox> |
Inhalt:
Wenn zwischen Start- und Endtag true
gesetzt wird, ist die CheckBox beim Generieren bereits angekreuzt.
Attribute für CheckBox-Elemente:
Attributname | Beschreibung |
---|---|
Required | Es definiert, ob das Feld leer gelassen werden darf (Required="false" oder nicht gesetzt) oder ob das Feld ausgefüllt werden muss (Required="true"). Solange das Textfeld nicht ausgefüllt wird, bleibt der OK-Button zum Bestätigen der Eingaben im Dokument-Parameter grau gefärbt und ist nicht anklickbar. Sobald die nötigen Zeichen im Textfeld abgefüllt sind, kann der OK-Button angeklickt werden. |
...
ComboBox
Wird in Word als Kombinationsfeld-Inhaltssteuerelement (Combo Box Content Control), auch genannt Dropdown, eingefügt. Es ist für die Auswahl zwischen vorgegebenen Werten (es sind beliebige Eingaben in Word zulässig).
Beispiel/Simpel:
Code Block | ||
---|---|---|
| ||
<ComboBox Id="DocParam.ReasonForCongratulation" SelectedValue="employeeAnniversary">
<Item Value="birthday" DisplayText="Geburtstag" />
<Item Value="employeeAnniversary" DisplayText="Mitarbeiterjubiläum" />
<Item Value="motherFatherhood" DisplayText="Mutter-/Vaterschaft" />
</ComboBox> |
Beispiel/Erweitert:
Code Block | ||
---|---|---|
| ||
<ComboBox Id="DocParam.ReasonForCongratulation " Tooltip="Grund für Gratulation auswählen" Tracked="true" Label="Gratulationsgrund" IsEditable="true" SelectedValue="employeeAnniversary">
<Item Value="birthday" DisplayText="Geburtstag" />
<Item Value="employeeAnniversary" DisplayText="Mitarbeiterjubiläum" />
<Item Value="motherFatherhood" DisplayText="Mutter-/Vaterschaft" />
</ComboBox> |
Inhalt:
Als Inhalt können Item
-Elemente definiert werden. Jedes Item steht dem Benutzer als Eintrag im Kombinationsfeld zur Auswahl. Auf den Value
des Items wird in Skripten zugegriffen.
Attribute des Item
-Elements:
DisplayText
Anzeigetext in Dokument-Parameter-Dialog und Kombinationsfeld-Inhaltssteuerelementen in Word.
Gilt generell als Inhalt dieses primedocs-Felds, so z. B. bei einem Zugriff in Skripten mit
<Element id="DocParam.ReasonForCongratulation " />
.Wird in Skripten für Conditions verwendet, wenn vor der Id kein
$
-Zeichen steht.
Beim obigen Beispiel ist<Condition when="DocParam.ReasonForCongratulation = 'Mitarbeiterjubiläum'>
also wahr.
Value
Darf nicht leer sein – es muss mindestens ein Zeichen enthalten sein. Es sollte keine Leerzeichen oder Sonderzeichen enthalten sein, da Word diese nicht akzeptiert.
Wird in Skripten für Conditions verwendet, wenn vor der Id ein
$
-Zeichen steht.
Beim oberen Beispiel ist<Condition when="$DocParam.ReasonForCongratulation = 'employeeAnniversary'>
also wahr.
Attribute für ComboBox-Elemente:
Attributname | Beschreibung |
---|---|
IsEditable | Wenn es auf |
IsSearchEnabled | Wenn es auf |
SelectedValue | Bestimmt, welcher Eintrag im Kombinationsfeld vorausgewählt ist. Dabei muss vom |
...
Collection
Der Collection-DataNode ist eine Funktionserweiterung der ComboBox. Wie der Name schon sagt, ist eine Collection eine Sammlung an Werten. Der Unterschied der Wertesammlung in einer Collection und in einer ComboBox unterscheiden sich darin, dass die Collection komplexe Datenstrukturen speichern kann, während die ComboBox nur eine einfache Key → Value Zuordnung zulässt. Beispiel:
Code Block |
---|
<Collection Id="Mitarbeiter">
<Element>
<Text Id="PersonalNummer">1234</Text>
<Text Id="Vorname">Michael</Text>
<Text Id="Name">Meier</Text>
<Text Id="Telefon">0001234567</Text>
<Text Id="Funktion">Teamleiter</Text>
</Element>
<Element>
<Text Id="PersonalNummer">2234</Text>
<Text Id="Vorname">Max</Text>
<Text Id="Name">Musterman</Text>
<Text Id="Telefon">0003214567</Text>
<Text Id="Funktion">CFO</Text>
</Element>
<Element>
<Text Id="PersonalNummer">4321</Text>
<Text Id="Vorname">Otto</Text>
<Text Id="Name">Normalverbraucher</Text>
<Text Id="Telefon">0001234876</Text>
<Text Id="Funktion">CEO</Text>
</Element>
[...]
<Element>
[...]
</Element>
</Collection> |
Eine Collection enthält also eine beliebige Anzahl Elemente, die wiederum beliebig viele Text-Elemente enthalten. Diese Text-Elemente sind mit einer Id eindeutig gekennzeichnet. Eine Collection dient als Datengrundlage für eine ComboBox.
Da die Collection mehrere Werte pro Einträge speichert, wird noch eine entsprechende Abbildungsmöglichkeit für diese Werte benötigt. Für das Speichern der Werte werden die bereits bekannten DataNodes (in der CustomContentSection) nach dem bekannten Schema definiert:
Code Block |
---|
<Text Id="Mitarbeiter.PersonalNummer" />
<Text Id="Mitarbeiter.Vorname" />
<Text Id="Mitarbeiter.Name" />
<Text Id="Mitarbeiter.Telefon" />
<Text Id="Mitarbeiter.Funktion" /> |
Die Namensgebung kann frei gewählt werden. In diesem Beispiel wurde der Übersicht wegen die Id als Präfix verwendet. Somit kann basierend auf dieser Collection und den DataNodes folgende ComboBox in den Views definiert werden:
Code Block |
---|
<ComboBox Id="Mitarbeiter" CollectionLabelMember="Name">
<CollectionSelectionMap Source="PersonalNummer" Target="Mitarbeiter.PersonalNummer" />
<CollectionSelectionMap Source="Vorname" Target="Mitarbeiter.Vorname" />
<CollectionSelectionMap Source="Name" Target="Mitarbeiter.Name" />
<CollectionSelectionMap Source="Telefon" Target="Mitarbeiter.Telefon" />
<CollectionSelectionMap Source="Funktion" Target="Mitarbeiter.Funktion" />
</ComboBox> |
Die Id der ComboBox ist identisch mit derjenigen der Collection. Wie bei anderen DataNodes, wird so die Verbindung zwischen dem definierten DataNode und dem entsprechenden View-Element hergestellt. Der CollectionLabelMember gibt an, welches Text-Element der Elemente in der Collection in der ComboBox zur Auswahl angezeigt werden soll, in diesem Beispiel also der Name des Mitarbeiters. Die ComboBox wird im Dialog folgendermassen dargestellt
...
Das CollectionSelectionMap definiert, welcher Text des ausgewählten Elementes aus der Collection (Source) auf welchen DataNode (Target) geschrieben wird. Wird ein Eintrag ausgewählt, werden die Werte des ausgewählten Eintrages gemäss den definierten CollectionSelectionMap auf die DataNodes geschrieben und können dann nach bekanntem Schema verwendet werden.
Die komplette Konfiguration sieht nun so aus:
Code Block |
---|
<Configuration>
<CustomContentSection
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Name="{[DocParam.Config.WindowName]}"
WindowHeight="450"
WindowWidth="{[DocParam.Config.WindowWidth]}">
<DataNodes>
<!-- DataNodes auf welche die Werte des ausgewählten Eintrages geschrieben werden -->
<Text Id="Mitarbeiter.PersonalNummer" />
<Text Id="Mitarbeiter.Vorname" />
<Text Id="Mitarbeiter.Name" />
<Text Id="Mitarbeiter.Telefon" />
<Text Id="Mitarbeiter.Funktion" />
<!-- Die Collection welche die Einträge enthält -->
<Collection Id="Mitarbeiter">
<Element>
<Text Id="PersonalNummer">1234</Text>
<Text Id="Vorname">Michael</Text>
<Text Id="Name">Meier</Text>
<Text Id="Telefon">0001234567</Text>
<Text Id="Funktion">Teamleiter</Text>
</Element>
<Element>
<Text Id="PersonalNummer">2234</Text>
<Text Id="Vorname">Max</Text>
<Text Id="Name">Musterman</Text>
<Text Id="Telefon">0003214567</Text>
<Text Id="Funktion">CFO</Text>
</Element>
<Element>
<Text Id="PersonalNummer">4321</Text>
<Text Id="Vorname">Otto</Text>
<Text Id="Name">Normalverbraucher</Text>
<Text Id="Telefon">0001234876</Text>
<Text Id="Funktion">CEO</Text>
</Element>
</Collection>
</DataNodes>
</CustomContentSection>
<Views IsDebug="false">
<View Id="main" Label="{[DocParam.LabelMainView]}">
<Row>
<TextBlock Style="h1" ColumnSpan="3">Titel</TextBlock>
{[DocParam.DefaultImage]}
</Row>
<Row>
<Separator ColumnSpan="4" />
</Row>
<Row>
<!-- ComboBox welche die Collection als Datengrundlage hat -->
<ComboBox Id="Mitarbeiter" CollectionLabelMember="Name">
<CollectionSelectionMap Source="PersonalNummer" Target="Mitarbeiter.PersonalNummer" />
<CollectionSelectionMap Source="Vorname" Target="Mitarbeiter.Vorname" />
<CollectionSelectionMap Source="Name" Target="Mitarbeiter.Name" />
<CollectionSelectionMap Source="Telefon" Target="Mitarbeiter.Telefon" />
<CollectionSelectionMap Source="Funktion" Target="Mitarbeiter.Funktion" />
</ComboBox>
</Row>
<Button Type="Submit" Label="{[DocParam.LabelSubmitButton]}" />
<Button Type="Cancel" Label="{[DocParam.LabelCancelButton]}" />
</View>
</Views>
</Configuration> |
Wann kommen Collections zur Anwendung?
Collections kommen vor allem dann zur Anwendung, wenn eine Auswahl existiert, von welcher mehrere Werte direkt abhängen. Das kann auch mit ComboBoxen ohne Collections erreicht werden, allerdings ist ohne Collection die Wartung aufwändiger.
Beispiel:
Wir haben eine ComboBox "Land" mit der folgenden Auswahl: Schweiz Deutschland Österreich Dann gibt es noch zwei weitere Felder, Währung und Hauptstadt, die von der Auswahl in der ComboBox abhängig sind. Die Zuordnung sieht folgendermassen aus:
Die Konfiguration ohne Collections
Die ComboBox:
Code Block |
---|
<ComboBox Id="Land">
<Item Label="Schweiz" Value="Schweiz" />
<Item Label="Deutschland" Value="Deutschland" />
<Item Label="Österreich" Value="Österreich" />
</ComboBox> |
Die abhängigen Felder (als Skripte):
Code Block | ||
---|---|---|
| ||
<CustomDataNode id="Land.Hauptstadt">
<Condition when="Land = 'Schweiz'">
<Text>Bern</Text>
</Condition>
<Condition when="Land = 'Deutschland'">
<Text>Berlin</Text>
</Condition>
<Condition when="Land = 'Österreich'">
<Text>Wien</Text>
</Condition>
</CustomDataNode>
<CustomDataNode id="Land.Waehrung">
<Condition when="Land = 'Schweiz'">
<Text>CHF</Text>
</Condition>
<Condition when="Land = 'Deutschland'">
<Text>Euro</Text>
</Condition>
<Condition when="Land = 'Österreich'">
<Text>Euro</Text>
</Condition>
</CustomDataNode> |
Hier wird direkt ersichtlich; muss ein neues Land hinzugefügt werden, muss in diesen beiden Skripten auch der Abgleich bzw. eine Condition ergänzt werden.
Die Konfiguration mit Collections
Code Block | ||
---|---|---|
| ||
<Text Id="Land.Name" />
<Text Id="Land.Waehrung" />
<Text Id="Land.Hauptstadt" />
<Collection Id="Land">
<Element>
<Text Id="Name">Schweiz</Text>
<Text Id="Waehrung">CHF</Text>
<Text Id="Hauptstadt">Bern</Text>
</Element>
<Element>
<Text Id="Name">Deutschland</Text>
<Text Id="Waehrung">Euro</Text>
<Text Id="Hauptstadt">Berlin</Text>
</Element>
<Element>
<Text Id="Name">Österreich</Text>
<Text Id="Waehrung">Euro</Text>
<Text Id="Hauptstadt">Wien</Text>
</Element>
</Collection>
<ComboBox Id="Land" CollectionLabelMember="Name">
<CollectionSelectionMap Source="Name" Target="Land.Name" />
<CollectionSelectionMap Source="Waehrung" Target="Land.Waehrung" />
<CollectionSelectionMap Source="Hauptstadt" Target="Land.Hauptstadt" />
</ComboBox> |
Wenn mit dieser Konfiguration ein Land zur Auswahl hinzukommt, muss lediglich der Eintrag in der Collection ergänzt werden.
HINWEIS
Es gibt zwei Arten von DataNodes: DataNodes und ViewDataNodes. Die DataNodes werden innerhalb der CustomContentSection definiert, die ViewDataNodes direkt nach dem Views
-Element. Im XML heissen beide gleich; DataNodes.
Der massgebende Unterschied zwischen den DataNodes und den ViewDataNodes ist, dass die ViewDataNodes nur im Dokument-Parameter existieren. Beim Generieren des Dokumentes werden diese dann entfernt. Wird der Dokument-Parameter aus dem Dokument nochmals geöffnet, so werden die Daten erneut aus der Konfiguration der Vorlage geladen, nicht aus dem Word-Dokument selbst. Die DataNodes werden hingegen mit ins Dokument übernommen. Die ViewDataNodes sind besonders geeignet, wenn mit grossen Collections gearbeitet wird. Die nicht ausgewählten Einträge werden nicht ins Dokument übernommen. So werden viel weniger Daten mitgenommen.
...
Views
Innerhalb vom Views
-Start- und Endtag befinden sich einzelne View
-Strukturen. Eine View ist eine Ansicht, welche Texte, Bilder, Eingabemöglichkeiten (Textboxen, Checkboxen, Komboboxen, ...) und Buttons enthält.
Es ist dabei möglich, mehrere View
-Strukturen zu definieren. Der Benutzer kann durch das Klicken auf Buttons (i. d. R. "Weiter" und "Zurück") die View wechseln.
Grundaufbau
Es können beliebig viele View Elemente erstellt werden.
In einer View können beliebig viele Row Elemente enthalten sein.
Eine View hat im Standardfall 4 Spalten (Columns). Mit dem Attribut
Columns
kann die Spaltenanzahl jedoch auch auf 1, 2, 3, 4, 6 oder 12 gesetzt werden.Möchte man keinen Dokument-Parameter-Dialog anzeigen, sondern z. B. nur über den Quick Check Dokument-Parameter konfigurieren, kann auf Ebene des
Views
-Element das AttributIsVisible="false"
setzen.
Nur eine View:
Code Block | ||
---|---|---|
| ||
<Views>
<View Id="main" Label="Startseite">
<Row>[...]</Row>
<Row>[...]</Row>
[...]
<Button Type="Submit" Label="OK" />
<Button Type="Cancel" Label="Abbrechen" />
</View>
</Views> |
Mehrere Views:
Code Block | ||
---|---|---|
| ||
<Views>
<View Id="main" Label="Startseite">
<Row>[...]</Row>
<Row>[...]</Row>
[...]
<Button TargetView="SecondView" Label="Weiter" IsDefault="true" />
<Button Type="Cancel" Label="Abbrechen" />
</View>
[...]
<View Id="SecondView" Label="Zweite Ansicht">
<Row>[...]</Row>
<Row>[...]</Row>
[...]
<Button TargetView="main" Label="Zurück" IsDefault="true" />
<Button Type="Submit" Label="OK" />
<Button Type="Cancel" Label="Abbrechen" />
</View>
</Views> |
Spezial-Id: main
: Diese View ist die Startansicht. Es muss in jedem Fall eine View mit der Id main
konfiguriert werden.
...
Navigationsschalter ausserhalb von Rows
Code Block |
---|
<Button TargetView="SecondView" Label="Weiter" IsDefault="true" />
<Button Type="Submit" Label="OK" />
<Button Type="Cancel" Label="Abbrechen" /> |
Attribute für Buttons:
Label
: Beschriftung des ButtonsTargetView
: Id der Ziel-View bei WeiterleitungsbuttonsType
: Spezial-AktionenWert
Submit
: Dokument-Parameter-Dialog verlassen, weiter im GenerierungsprozessWert
Cancel
: Dokument-Parameter-Dialog verlassen, Abbruch des Generierungsprozess
IsDefault
: Wenn auftrue
: Bestimmt die Standard-Aktion bei Enter
...
Rows und ihr Inhalt
Neben Buttons beinhalten die Views auch Rows (Zeilen). Die Rows enthalten den eigentlichen Inhalt der View und in diese können Struktur- und Formularelemente eingefügt werden. Die Strukturelemente gelten rein zum Anpassen des Aussehens des Dokument-Parameters. Die Formularelemente sind zum Einfügen in die Vorlage oder zum Einsetzen in Skripten und Extended Bindings.
Attribute der Struktur- und Formularelemente:
Die Views sind standardmässig in 4 Spalten (Columns) unterteilt. Jedes Struktur- und Formularelement hat die Breite 1. Um die Breite zu vergrössern, wird das Attribut ColumnSpan
verwendet. Die Struktur- und Formularelemente werden von links nach rechts eingefügt. Wenn ein Feld um eine Spalte versetzt angezeigt werden soll, wird das mit ColumnOffset="1"
bewerkstelligt.
Folgende Attribute können sowohl bei Strukturelementen als auch bei Formularelementen eingesetzt werden.
Attribute bei Struktur-/Formularelementen:
Attributname | Beschreibung |
---|---|
Bind | Ermöglicht das Anzeigen und Verschwinden lassen von Rows oder Elementen, siehe Kapitel Bindings. |
ColumnOffset | Gibt an, wieviele Spalten vor dem Feld übersprungen werden sollen (also die Anzahl "Einzüge") |
ColumnSpan | Gibt an, wieviele Spalten das Feld beansprucht. Das kann je nach Spaltenanzahl bis zu Anzahl 12 sein. Wird nichts angegeben, ist es der Wert 1. |
IsEnabled | Wenn |
IsVisible | Wenn |
OnChange | Wird als Referenz auf ein Element im Zusammenhang mit JavaScript im Dokument-Parameter verwendet. Siehe dazu das Kapitel JavaScript. |
Tooltip | Angezeigter Text, wenn der Cursor über diesem Feld ist. |
AccessibilityText | Definierter Text für Screen Reader. Wenn dieses Attribut gesetzt wird und der Client mit |
AccessibilityReadContent |
|
Value | Vordefinierter Text. Der Inhalt wird jedoch ignoriert, sobald es schon vordefinierten Text im gleichen Element in der DataNode-Section gibt. |
Spezialfall Attribut Id
:
Die Id wird bei allen Formularelementen benötigt. Bei Strukturelementen ist sie obsolet. Sie identifiziert das in den DataNodes festgelegte Feld.
HINWEIS
Barrierefreiheit:
Über die Attribute AccessibilityText
oder AccessibilityReadContent
kann der Dialog für Screen Reader Software zugänglicher gemacht werden. Es sollte darauf geachtet werden, dass es via Tab
möglich ist, sich sinnvoll durch den Dialog zu navigieren und dass die gewählten Texte aussagekräftig sind.
...
Strukturelemente
trukturelement | Beschreibung |
---|---|
TextBlock |
– |
Separator |
|
Label |
– Das Label wird benutzt, um einem Element, z. B. einer CheckBox, eine Bezeichnung zu geben. |
Image |
– |
ImagePicker | Der ImagePicker ermöglicht das Auswählen von Bildern im Datei-Explorer des Benutzers. Das dazugehörige DataNode zum Einfügen in das Dokument ist das Image-Element. |
Beispiel mit Strukturelementen
Code Block | ||
---|---|---|
| ||
<Views IsDebug="false">
<View Id="main" Label="{[DocParam.LabelMainView]}">
<Row>
<TextBlock Style="h1" ColumnSpan="3">Vorlagenname</TextBlock>
<Image Height="50">Base64Encoded-Logo</Image>
</Row>
<Row>
<Separator ColumnSpan="4" />
</Row> |
...
Formularelemente
Wenn es ein DataNode mit der gleichen Id gibt, wird versucht, dieses als Datenquelle zu nutzen. Diese Felder besitzen alle ein Value
-Attribut, das als initialer Wert genutzt wird.
TextBox
→ Ein- oder mehrzeiliges Textfeld, siehe Abschnitt "Text" im Kapitel DataNodes.
Mögliche Attribute | Beschreibung |
---|---|
Lines | Anzahl an Zeilen im Textfeld: wenn das |
Mask | Eingabe-Maske: sie erleichtert die Eingabe von vielen Zahlen, zum Beispiel einer AHV-Nummer (Mask="000.0000.0000.00"). '0' → Zahl; erforderlich, damit der Dokument-Parameter mit OK bestätigt und das Dokument generiert werden kann. '9' → Zahl; nicht erforderlich. Der Dokument-Parameter kann auch ohne Eingabe bestätigt werden. Für die Syntax und mehr Möglichkeiten, siehe hier: Supported Masks |
Beispiel für Mask:
In diesem Beispiel werden die ersten 6 Ziffern verlangt. Werden keine 6 eingegeben, kann der Dokument-Parameter nicht bestätigt werden. Die letzte Ziffer ist jedoch freiwillig.
Code Block | ||
---|---|---|
| ||
<Row>
<Label Content="Nummer" />
<TextBox Id="DocParam.Nr" ColumnSpan="3" Mask="00.00.009" />
</Row> |
Vordefinierter Text:
Es gibt zwei Arten, einen Text im Textfeld vorzudefinieren: entweder über das Value
-Attribut in den Views...
Code Block | ||
---|---|---|
| ||
<Row>
<TextBox Value="Beispielinhalt" Id="DocParam.Subject" Lines="2" />
</Row> |
...oder über die Eingabe bei den DataNodes zwischen dem Start- und Endtag:
Code Block | ||
---|---|---|
| ||
<DataNodes>
<Text Id="DocParam.Subject">Beispielinhalt</Text>
</DataNodes> |
Der vordefinierte Textfeld-Inhalt darf jeweils nur an einem Ort definiert werden. Sind an beiden Orten sichtbare Zeichen definiert, wird der Value des in den DataNodes definierten Text-Elements eingefügt. Der Value in den Views wird folglich ignoriert.
DatePicker
→ Datumsauswahl mit Kalender, siehe Abschnitt "DateTime" im Kapitel DataNodes.
Code Block | ||
---|---|---|
| ||
<Row>
<Label Content="Datum" />
<DatePicker Id="DocParam.Date" />
</Row> |
Mögliche Attribute | Beschreibung |
---|---|
Format | siehe "Attribute für DateTime-Elemente" im Kapitel DataNodes |
CheckBox
→ Ein Auswahlkasten – oder eben eine CheckBox, siehe Abschnitt "CheckBox" im Kapitel DataNodes.
Code Block | ||
---|---|---|
| ||
<Row>
<CheckBox Id="DocParam.KurzbriefCB1" Label="gemäss Besprechung" />
</Row> |
Mögliche Attribute | Beschreibung |
---|---|
Label | Bezeichnung, die rechts von der CheckBox erscheint. |
ComboBox
→ Eine Auswahlliste oder ein Dropdown, siehe Abschnitt "ComboBox" im Kapitel DataNodes.
Mögliche Attribute | Beschreibung |
---|---|
IsInvalidWhenValue | Wenn die festgesetzte Option diesen Wert hat, ist das Control nicht "gültig", d. h. man kann das Dokument nicht erzeugen. |
CollectionLabelMember | Wird im Zusammenhang mit Collections verwendet, siehe dazu Kapitel Collections |
CollectionPlaceholder | Wird im Zusammenhang mit Collections verwendet, siehe dazu Kapitel Collections |
Die Werte für die ComboBox können entweder im DataNode oder in der View definiert werden. Die Auswahlmöglichkeiten für die ComboBox können entweder im DataNode-Element vom Typ ComboBox definiert werden oder in der View. Die Auswahlmöglichkeiten werden aus dem DataNode-Element übernommen, auch wenn in der View eine Liste definiert wurde. Wenn die Liste in der View definiert wird, dann muss das DataNode-Element vom Typ Text sein. Hier eine Übersicht:
Die ComboBox definiert in der DataNode-Section
1a) ComboBox-Element in der DataNode-Section
Code Block | ||
---|---|---|
| ||
<DataNodes>
<ComboBox Id="DocParam.Zeichen" SelectedValue="UnserZeichen">
<Item Value="UnserZeichen" DisplayText="Unser Zeichen" />
<Item Value="Aktenzeichen" DisplayText="Aktenzeichen" />
<Item Value="Leer" DisplayText="kein Eintrag" />
</ComboBox>
</DataNodes> |
Attribute innerhalb der DataNode-ComboBox | Beschreibung |
---|---|
Item | Element, das eine Option für in das Dropdown-Feld eröffnet. |
Item → Value | Wert, auf welchen mittels Skripten zugegriffen wird. |
Item → DisplayText | Bezeichnung, die im DropDown, im Dokument-Parameter sowie im Word ausgegeben wird. |
1b) Zugriff auf das ComboBox-Element in der View
Code Block |
---|
<Row>
<Label Content="Bitte wählen" />
<ComboBox Id="DocParam.Zeichen" ColumnSpan="2" IsInvalidWhenValue="0" />
</Row> |
HINWEIS
In Word wird ein Dropdown-Feld und was im Attribut DisplayText
steht, ausgegeben.
2. Die Combobox definiert in der View
2a) Text-Element in der DataNode-Section
Code Block | ||
---|---|---|
| ||
<DataNodes>
<Text Id="DocParam.Zeichen" />
</DataNodes> |
2b) Zugriff auf das Text-Element in der View
Code Block | ||
---|---|---|
| ||
<Row>
<Label Content="Bitte wählen" />
<ComboBox Id="DocParam.Zeichen" Value="Unser Zeichen" ColumnSpan="2">
<Item Value="UnserZeichen" Label="Unser Zeichen" />
<Item Value="Aktenzeichen" Label="Aktenzeichen" />
<Item Value="Leer" Label="Leer" />
</ComboBox>
</Row> |
Attribute innerhalb der View-ComboBox | Beschreibung |
---|---|
ComboBox → Value | Es hat die gleiche Funktion wie das Attribut |
Item → Value | Wert, auf welchen mittels Skripten zugegriffen wird. |
Item → Label | Bezeichnung, die im DropDown, im Dokument-Parameter sowie im Word ausgegeben wird. |
HINWEIS
Weil die ComboBox mittels Text-Element erstellt wurde, wird in Word ein Textfeld und was im Attribut Value
steht, ausgegeben. Deswegen ist diese ComboBox-Variante nur für den Zugriff via Skript oder Extended Binding geeignet.
RadioButton
RadioButtons werden über ihre Id gruppiert. Alle RadioButtons mit derselben Id stellen eine "Entweder-Oder-Auswahl" dar.
Pro anwählbare Option, muss also ein einzelnes RadioButton-Element definiert werden. Die Id ist dabei die Id des Datanodes, also des Text- oder ComboBox-Elementes. Die zwei Attribute Label
und Value
sind zwingend.
Mögliche Attribute | Beschreibung |
---|---|
Value | Wert, der ins DataNode-Element abgefüllt wird, wenn dieser RadioButton ausgewählt ist und auf den mittels Skripten zugegriffen wird. |
Label | Bezeichnung, die im Dokument-Parameter rechts vom Button erscheint |
Da es in Word keine RadioButton-Inhaltssteuerelemente gibt, gibt es auch kein RadioButton-DataNode in primedocs. Deswegen werden RadioButtons vor allem im Zusammenhang mit Textbaustein-Skripten verwendet. Als DataNode werden der Text-DataNode oder der ComboBox-DataNode verwendet:
Definition eines RadioButtons mit einem Text-Element (empfohlen):
Hier wird der RadioButton im Text-Element gespeichert. Diese Variante ist geeignet, wenn der Wert in Skripten oder Extended Bindings verwendet werden soll. Falls ein RadioButton vorausgewählt sein soll, muss der Value des entsprechenden RadioButtons als Standard-Text konfiguriert werden. Im Beispiel unten ist also jetzt der RadioButton mit "Frau" vorausgewählt.
TextNode in der DataNode-Section:
Code Block |
---|
<Text Id="DocParam.RBGeschlecht">1</Text> |
In der View:
Code Block |
---|
<Row>
<Label Content="Geschlecht" />
<RadioButton Id="DocParam.RBGeschlecht" Value="1" Label="Frau" />
<RadioButton Id="DocParam.RBGeschlecht" Value="2" Label="Mann" />
</Row> |
Expand | ||||
---|---|---|---|---|
| ||||
In diesem Fall wird der RadioButton im ComboBox-Element gespeichert. Der Value in der ComboBox muss dabei der Value im RadioButton in der View entsprechen. Diese Variante ist geeignet, wenn der Wert im Dokument ausgegeben werden soll, da die Anzeige im Dokument über den Value des ComboBoxNode-Eintrags gesteuert wird. Falls ein RadioButton vorausgewählt sein soll, muss der Value des entsprechenden RadioButtons im ComboBoxNode in der DataNode-Section:
In der View:
|