Textfeld

Ein-/Ausgabefelder sind durch Schatten umrahmte Flächen, in die, im Betrieb über die Tastatur, Text geschrieben, bzw. wodurch Text angezeigt werden kann. Ein-/ Ausgabefelder sind dazu da, um Datenpunkte zu setzen oder zu verändern oder um Datenpunktwerte oder Nachrichten anzuzeigen: Eingabefelder leiten Benutzereingaben weiter an WinCC OA, Ausgabefelder zeigen Werte an, Ein-/Ausgabefelder ermöglichen dem Benutzer angezeigte Werte zu verändern. Als Textformate stehen ganze und reelle Zahlen sowie allgemeine Zeichenketten (beliebige Folgen von Buchstaben, Zahlen und Sonderzeichen) zur Verfügung. Zudem ist eine verschlüsselte Darstellung der Eingabe durch das Format Passwort möglich. Damit werden die Buchstaben des Textes wie bei Passwörtern als eine Reihe von Sternen ("****") angezeigt. Dabei wird der jeweils aktuelle Font verwendet. Zusätzlich kann auch ein Zeitformat in verschiedenen Varianten dargestellt werden. Für einige Datentypen (Integer, Float, Zeit, Exponential) gibt es die Eigenschaften Führende Nullen und Leer wenn Null.

Kontrolle der Eingabe

Es sind bei Textfeldern automatisch nur jene Einträge möglich, die mit dem Format übereinstimmen! So können beispielsweise Fließkommazahlen nicht in ein Feld für Integerwerte geschrieben werden, bzw. Buchstaben in ein Integer-Textfeld.

Script werden nur bei passendem Format ausgelöst. Grundsätzlich sind also jeweils erlaubt:

  • String: alle Zeichen

  • Integer: "+", "-" und 0-9

  • Float: "+", "-", "." 0-9, e (für Exponentialfunktionen)

  • Exponential

  • Passwort: alle Zeichen

  • Zeit: YY.MM.DD HH:MM:SS.mmm, Lokales Datum und Zeit, Lokales Datum, Lokale Zeit sowie benutzerdefiniert

Für weitere Informationen siehe Format-String.

Zeitformat

Das Zeitformat wird nur nach einer expliziten Zuweisung verwendet. z.B.:

TEXTFIELD1.text = makeTime(2021, 1, 1, 13, 27, 33)

Wenn das Textfeld nach der Zuweisung geändert wird, so wird das Zeitformat nicht nochmals angewendet. Das vorherige Verhalten (z.B.: Umformatierung der Zeitformate yyyy.mm.dd hh:mmss.cc oder hh:mmss.cc, das Resultieren eines invaliden Zeitformats in 01.01.1970 ...) tritt nicht mehr auf. In diesen Fällen zeigt das Textfeld genau den vom Benutzer eingegebenen String an und ignoriert das Zeitformat.

Abbildung 1. Textfeld

Min/Max

Die Einstellungen fürmin und max werden beibehalten so lange der Datentyp des Textfelds nicht verändert wird.

Wenn das Textfeld einen anderen Datentyp im Panel hat als die erste Formateinstellung über Control werden min/max Einstellungen vor dieser Änderung ignoriert.

Anmerkung: Eine Änderung von integer zu float oder umgekehrt verändert den Datentypen des Textfelds und entfernt damit die min/max Einstellungen.

So erstellen Sie ein Textfeld

  1. Klicken Sie auf das Werkzeug für Textfeld .

  2. Klicken Sie in die Panelarbeitsfläche. Bestimmen Sie die Größe.

  3. Öffnen Sie das Eigenschaftenfenster.

  4. Vergeben Sie den Objektnamen neben (Name).

  5. Klicken Sie im Eigenschaftenfenster ins Feld neben Textformat und legen Sie im zugehörigen Dialog Ihr Textformat fest.

Abbildung 2. Dialog zur Textformatierung

Hier können Sie folgende Eigenschaften festlegen:

  • Datentyp: Integer, String, Float oder Password.

  • Zeichen: Die maximale Länge des Feldinhaltes.

  • Anzahl von Vor- und Nachkommastellen

  • Ausrichtung: Links, Rechts, Zentriert

  • Vertikale Ausrichtung: Oben, Mitte, Unten oder Objektstandard

  • Bei Integer und Float-Zahlen können die Optionen: Leer wenn Null (Keine Inhaltsanzeige im Laufzeitbetrieb, wenn Inhalt nur Nullen enthält), Führende Nullen und Exponentiell -> nur bei Float-Werten selektiert werden).

Im unteren Teil des Text Format-Panels werden die gewählten Optionen direkt im Vorschaufenster angezeigt.

  1. Ändern Sie die Schriftfont der Einträge im Eigenschaftenfenster über die Option Schriftart.

Passwort Beispiel

Ein Script für ein Textfeld, das bei Eingabe des Passworts "PassWD1" eine Datenpunktvariable auf Eins setzt, würde beispielsweise folgendermaßen lauten. Das Format des Textfeldes ist "Passwort" (siehe Textformat-Fenster oberhalb). Die Funktion getValue() schreibt, wenn eine Eingabe in das Textfeld durch Drücken der EINGABE-Taste betätigt wird, dessen Inhalt auf die Variable "passw". Beachten Sie, dass Sie das Script für das Ereignis "Command" definieren. Bei Übereinstimmung mit dem Kennwort wird die Datenpunktvariable "ExampleDP_Arg1.:_original.._value" mit Hilfe der Funktion dpSet() auf Eins gesetzt, anderenfalls auf Null.

main()
{
  string passw;

  getValue("", "text", passw);

  if (passw == "PassWD1"}
    dpSet("ExampleDP_Arg1.:_original.._value", 1);
  else
    dpSet("ExampleDP_Arg1.:_original.._value", 0);
}

Hinweise

VORSICHT:

Wenn Programmlogik für das Command-Event innerhalb des Textfeldes hinzugefügt wird, führt dies dazu, dass bei der Verwendung des Panels Änderungen des Textes verworfen werden, wenn das Eingabefeld ohne Drücken der Eingabetaste verlassen wird. Es wird der zuletzt enthaltene Text wiederhergestellt.

Anmerkung: Für den Objekttyp Textfeld steht das Ereignis TextChanged zur Verfügung. Es wird bei Benutzereingabe (Text) aufgerufen. Um auf den neuen Text zuzugreifen, wird der Event-Parameter "newText" verwendet.
Anmerkung: Die Eigenschaft "Führende Nullen" muss aktiviert sein, um die ausgewählte Anzahl der Vorkommastellen darzustellen.

Für Textfeld-Funktionen siehe Control Grafik/Textfeld Funktionen.