|
Benutzereingaben mit PictureMasks steuern |
Hoch Zurück Vor |
|
Das scheinbar simple Steuerelement Eingabe ist wesentlich mächtiger, als es auf den ersten Blick den Anschein hat. Dank seiner Eigenschaften PictureMask und RegExp können Sie mit ihm komplexe Eingaben auf sichere und bequeme Weise implementieren. Das simple Eingabefeld wird so zum universellen Werkzeug für Parametermasken. An dieser Stelle soll zunächst die Eigenschaft PictureMask genauer behandelt werden.
Eine gute Parametermaske macht nicht nur die Möglichkeit aus, alle wichtigen Daten eingeben zu können. Fast noch wichtiger ist, dass auch nur die passenden Daten eingegeben werden können. Eine Postleitzahl soll immer aus exakt fünf Ziffern bestehen, eine Hausnummer darf aus Ziffern und einem Buchstaben bestehen und ein Vorname enthält keine Ausrufezeichen oder Punkte. Auf solche Dinge sollte zwar der Benutzer während der Eingabe achten, aber das System sollte nicht davon ausgehen, dass der Benutzer dies auch macht.
Mit der Parametermaske und den Steuerelementen gibt Ihnen DataNAUT CS ein mächtiges Werkzeug an die Hand, mit dem Sie Benutzereingaben sehr genau steuern können. Eines der unscheinbarsten Steuerelemente besitzt dabei die größte Anpassbarkeit: Das Element Eingabe. Für ein simples Eingabefeld können Sie über die Eigenschaft PictureMask definieren, welche Eingaben überhaupt möglich sind. Über die Eigenschaft RegExp lässt sich nachträglich genau verifizieren, ob eine gemachte Eingabe auch wirklich korrekt ist.
Zur Veranschaulichung des Potentials der PictureMasks soll ein Template zur Eingabe eines neuen Adressdatensatzes dienen. Ein solcher Datensatz enthält die unterschiedlichsten Informationen, wie beispielsweise die Anrede, eine Hausnummer, Postleitzahl, Telefonnummer bis hin zum Geburtsdatum. Die Eingabe für alle diese Daten erfolgt jeweils über ein Eingabe-Steuerelement mit passender PictureMask.
Welche Eingaben in den einzelnen Feldern erlaubt sind, wird über PictureMasks gesteuert.
Bei allen Eingabefeldern wurde die Eigenschaft TabOrder so zugewiesen, dass sie in einer logischen Reihenfolge durchlaufen werden können. Die Anrede hat den TabOrder-Wert 0, der Vorname den Wert 1, der Nachname den Wert 2 und so weiter, bis hin zum Eingabefeld Kontonr, das den TabOrder-Wert 14 hat. Dies erleichtert die Eingabe ungemein, da nicht per Maus von einem Eingabefeld ins nächste gewechselt werden muss, sondern ein einfacher Druck auf die Tabulator-Taste genügt und schon hat das nächste Eingabefeld den Eingabefokus.
Vorgabewerte werden über geschweifte Klammern definiert Wichtiger als die Tab-Reihenfolge ist jedoch die Eingabe selbst und diese beginnt im Feld Anrede. Als Anrede soll entweder Herr, Frau oder Familie eingegeben werden können. Hierzu würde sich eigentlich das Steuerelement Combo eignen, aber es geht auch mittels dem Element Eingabe und einer PictureMask: Mit PictureMasks können Sie einerseits definieren, welche Zeichen vom Benutzer eingegeben werden können sowie andererseits komplette, erlaubte Eingaben vorgeben, an die sich der Benutzer halten muss. Dies wird über Platzhalter in der PictureMask-Eigenschaft des Elements Eingabe definiert. Welche Platzhalter alle möglich sind, können Sie in der Referenz zu Eingabe nachlesen.
Diese PictureMask erlaubt die Eingabe der Begriffe Herr, Frau und Familie.
Um bestimmte Zeichen oder Begriffe vorzugeben, müssen diese in geschweifte Klammern gesetzt werden ({ und }), wobei einzelne Begriffe jeweils durch Kommata getrennt werden müssen. Um nur die Eingaben Herr, Frau und Familie zu erlauben, könnten Sie also die PictureMask {Herr,Frau,Familie} verwenden. Wenn der Benutzer etwas eingibt, dann muss es einer dieser Begriffe sein. Eine leere Eingabe wird hierdurch allerdings nicht verhindert, aber dagegen kann die Eigenschaft Task des Steuerelements einfach auf true gesetzt werden, was zur Folge hat, dass Text in das Eingabefeld eingegeben werden muss.
Um dem Benutzer das Leben möglichst einfach zu machen, können Sie zusätzlich der Eigenschaft AutoFill den Wert true geben. Hierdurch wird der Text noch während der Eingabe automatisch zum ersten passenden Begriff vervollständigt. Allerdings müssen Sie dann die oben genannte PictureMask verändern: Würde der Benutzer bei der bestehenden Maske ein F eingeben, würde der Text automatisch zum ersten passenden Begriff, also zu Frau vervollständigt. Die Eingabe von Familie wäre nicht möglich.
Eckige Klammern stehen für optionale Eingaben Um dies zu umgehen, müssen Sie eckige Klammern in der PictureMask verwenden. Mit eckigen Klammern werden optionale Eingaben definiert. Alles, was in eckigen Klammern steht, muss nicht eingegeben werden. Stehen verschiedene, durch Kommata getrennte Begriffe oder Zeichen in den eckigen Klammern, dann kann einer dieser Begriffe eingegeben werden.
Die PictureMask {Herr,F[rau,amilie]} erlaubt somit auch bei aktiviertem AutoFill die Eingabe der Anreden Frau und Familie. Wird ein F eingegeben, wird zum ersten passenden Begriff vervollständigt, was in diesem Fall nur das F wäre, rau und amilie sind beides optionale Eingaben. Erst mit der Eingabe von r würde zu Frau bzw. mit Eingabe von a zu Familie vervollständigt.
Nur die Eingabe bestimmter Zeichen und Wiederholungen erlauben Die PictureMask für die Anrede wäre damit erledigt. Als nächstes ist der Vorname dran. Ein Vorname kann aus beliebigen Buchstaben bestehen. Der Platzhalter ? in einer PictureMask steht für einen beliebigen Groß- oder Kleinbuchstaben. Ein Name besteht allerdings aus mehr als einem Buchstaben. Aber da nicht alle Namen gleich lang sind, genügt es nicht, einfach eine feste Anzahl an Fragezeichen in die PictureMask einzutragen.
Für solche Fälle gibt es den Platzhalter *. Dieser Platzhalter gibt an, dass das folgende Zeichen bzw. die folgende Gruppe (in geschweiften oder eckigen Klammern) beliebig oft wiederholt werden darf. Dies zusammen ergibt die PictureMask *{?}, mit der die Eingabe einer Zeichenkette aus beliebig vielen Buchstaben erlaubt wird.
Damit können schon viele Namen eingegeben werden, aber keine Doppelnamen, denn dazu ist es nötig auch Leerzeichen und Bindestriche zuzulassen. Die einfachste Methode hierfür ist in der Wiederholung nach jedem Buchstaben ein Leerzeichen oder einen Bindestrich als optionale Eingabe zu erlauben: Die PictureMask *{?[ ,-]} macht genau das. Die gleiche PictureMask können für die Felder Name, Straße, Ort und Bank verwendet werden.
Verschiedene Ziffernfolgen per PictureMask definieren Für die Postleitzahl ist ebenfalls eine einfache PictureMask möglich: Folgt dem Wiederholungszeichen * eine Zahl, dann gibt diese an, wie oft das folgende Zeichen (bzw. die folgende Gruppe) wiederholt werden muss. *5{#} erfordert die Eingabe von genau 5 Ziffern. Damit sind alle deutschen Postleitzahlen abgedeckt. Die Bankleitzahl wird genauso definiert, nur dass acht statt fünf Ziffern eingegeben werden müssen (*8{#}) und für die Kontonummer wird der Einfachheit halber lediglich die Eingabe beliebig vieler Ziffern erlaubt (*{#}).
Komplizierter wird es bei der Hausnummer: Eine Hausnummer besteht erst einmal grundsätzlich auch nur aus Ziffern. Aber es gibt auch Hausnummern mit Buchstaben, z.B. 11a oder 2b. Also muss die Eingabe von Ziffern und einem darauf folgenden, optionalen Buchstaben erlaubt werden: *{#}[~]. Der Platzhalter ~ steht dabei für einen Kleinbuchstaben und wandelt jeden eingegebenen Buchstaben in einen solchen um.
Eine Anschrift kann sich jedoch über mehrere Hausnummern erstrecken. Dafür muss diese Eingabe ein zweites Mal möglich sein, mit einem Bindestrich zwischen den Hausnummern. Am einfachsten ist es hierfür, die PictureMask für die einfache Hausnummer noch einmal als optionale Eingabe mit vorangestelltem Bindestrich hinten an die vorhandene anzuhängen: *{#}[~][-*{#}[~]].
PictureMask für die Eingabe von Hausnummern.
Fehlen noch die Rufnummern und der Geburtstag. Für die Rufnummern soll auch erst einmal nur eine einfache Variante verwendet werden: Die PictureMask *{#} / *{#} erlaubt die Eingabe zweier Ziffernfolgen getrennt durch einen Schrägstrich, was für die meisten Rufnummern ausreicht.
Der Geburtstag lässt sich genauer definieren. Ein gültiges Datum muss mindestens der Form #[#].#[#].#### genügen, also ein ein- oder zweistelliger Tag, ein ein- oder zweistelliger Monat und ein vierstelliges Jahr. Eine PictureMask, die nur gültige Tage und Monate zulässt, ließe sich vielleicht mit viel Aufwand erstellen, praktikabel ist dies jedoch nicht (ganz abgesehen davon, dass eigentlich für Daten das Steuerelement Kalender zu bevorzugen wäre).
Simple Form der Datumseingabe mittels PictureMask.
Wie Sie sehen, kann man mit PictureMasks die Benutzereingabe in vielen Fällen von vornherein so einschränken, dass nur gültige Eingaben möglich sind. In manchen Fällen, wie zum Beispiel beim Geburtstag, ist die Gültigkeit trotz eingeschränkter Eingabemöglichkeit nicht gewährleistet. In solchen Fällen können dann reguläre Ausdrücke zur Gültigkeitsprüfung eingesetzt werden.
|