Eine große Einschränkung von Kontrollkästchen und Optionsfeldern in IBM Notes ist der nicht vorhandene Zeilenumbruch bei sehr langen Auswahlmöglichkeiten. Gerade bei Kontrollkästchen lässt sich allerdings sehr leicht durch Nutzung eines "unsichtbaren" Schlüsselwertes Abhilfe schaffen.
Darauf wurde ich von Herrn Dr. Thomas Barberka bei einem Workshop freundlicherweise hingewiesen.
Am folgenden Beispiel wird das Problem deutlich. Ziel ist es, einige Fahrradrouten per Kontrollkästchen innerhalb einer Tabelle auswählbar zu machen.
Die obere Implementierung ist die in Notes übliche. Dabei werden die angezeigten Texte mit Aliaswerten im Feld hinterlegt. Man sieht, dass der Text der ersten Auswahloption über die eigentlicheTabellebreite hinausgeht. Da kein Zeilenumbruch stattfindet, verlängert Notes automatisch die Tabelle, was man an den verlängerten hellgrauen Linien sehen kann. So sieht dies im Designer aus:
Die untere Implementierung hingegen enthält einen Zeilenumbruch. Hier wurden die langen Auswahltexte erst gar nicht in dem Feld hinterlegt, sondern nur die Aliaswerte zusammen mit dem "Non-Breaking Space". Dazu wurde für jede Auswahloption ein einzelnes Feld angelegt und mit einer Feldauswahlformel der Form " |1"
bzw. " |2"
bestückt. Hierbei handelt es sich nicht um das gewöhnliche Leerzeichen, mit dem dieses Vorgehen nicht möglich wäre, sondern um das Ascii-Zeichen 160, welches übrigens auch von der Trim-Funktion nicht abgeschnitten wird. Hinter die Felder wurde dann der jeweilige Optionstext direkt in die Maske geschrieben:
Möchte man die ausgewählten Optionen - so wie in der Standardimplementierung - in einem Feld gebündelt haben, kann man zusätzlich ein (verstecktes) Mehrfachwertefeld hinzufügen, das sich die Werte aus den Einzelfeldern zieht. Dabei nicht vergessen, die Option "Felder bei Schlüsselwortänderung aktualisieren" in den Optionsfeldern zu aktivieren (wie oben zu sehen).
Für Optionsfelder lässt sich dieses Vorgehen nicht ganz so einfach verwenden, da bei Aufteilung der Optionen auf Einzelfelder ein zusätzlicher Mechanismus geschrieben werden muss, der bei der Auswahl einer Option eine bereits ausgewählte Option in einem der anderen Felder abwählt. Einfacher ist es, wenn man in der "Bildschirmversion" einer Maske genügend Platz für Optionsfelder hat und nur Probleme beim Drucken auftreten: So kann man für den Ausdruck das eigentliche Optionsfeld auf mehrere Felder aufteilen, welche sich den Wert des Hauptfeldes ziehen und ansonsten so wie die einzelnen Kontrollkästchen im obigen Beispiel aufgebaut sind. Die Anzeige der beiden Versionen lässt sich dabei einfach über "Absatz verbergen wenn" steuern.