Wenn Sie sich für die Benutzeroberfläche interessieren, haben Sie vielleicht schon mit den Ereignissen On before keystroke und On after keystroke gearbeitet. Es wird Sie sicher freuen zu hören, dass die Handhabung dieser Ereignisse mit 4D v18 R5 stark verbessert wurde. Darüber hinaus wurde ein neuer Befehl erstellt, um festzustellen, ob es eine laufende Eingabe gibt, wenn das Ereignis On before keystroke erzeugt wird. Hier erfahren Sie mehr!
HDI: Vorwärts tippen leicht gemacht
Texteingaben
Wenn Sie Text eingeben, kann das System eingreifen, um Ihnen zu helfen, unabhängig von der Sprache oder dem Betriebssystem. Nehmen wir zum Beispiel den Fall der akzentuierten Zeichen in Französisch oder Spanisch: „ê“ „ü“ „ñ“. Um diese Zeichen in macOS einzugeben, ist es am einfachsten, die entsprechende Taste gedrückt zu halten, woraufhin ein Dialogfeld erscheint:
Um den gewünschten Buchstaben auszuwählen, müssen Sie die Pfeiltasten benutzen und dann Ihre Wahl mit der „Return“- oder „Enter“-Taste bestätigen:
Ab 4D v18 R5 werden die Ereignisse On before keystroke und On after keystroke nur erzeugt, wenn diese Art von Systemdialog (auch IME genannt) bestätigt wird. Es besteht keine Notwendigkeit, die Codes für die Pfeiltasten und die Bestätigungstaste zu empfangen, wenn nur der letzte Buchstabe wichtig ist!
Listenfelder
Listenfelder haben ebenfalls eine Verbesserung erfahren. Das Ereignis On before keystroke wird erzeugt, sobald das Listenfeld den Fokus hat, wenn eine Taste eingegeben wird, auch wenn keine Zelle eingegeben wird. So wissen wir, welche Tasten gedrückt wurden und können programmatisch Entscheidungen treffen, wie z.B. eine neue Suche starten oder die aktuelle Auswahl ändern!
MoRE INFO mit einem neuen Befehl
Woher weiß man, ob ein Ereignis während einer tatsächlichen Eingabe erzeugt wurde oder einfach nur, weil das Listenfeld in dem Moment den Fokus hatte, als eine Taste auf der Tastatur gedrückt wurde? Die Antwort ist sehr einfach: der neue Befehl Is editing text . Er gibt True zurück, wenn der Benutzer gerade Werte in ein Eingabeformularobjekt eingibt, und False in allen anderen Fällen.
Code-Beispiel
Dieses einfache Beispiel zeigt Ihnen, wie Sie eine Abfrage durchführen können, sobald ein beliebiger Buchstabe zwischen A und Z auf der Tastatur eingegeben wird(alle anderen Zeichen werden in diesem Beispiel ignoriert).
Natürlich kann die Abfrage nicht durchgeführt werden, während eine Zelle geändert wird. Deshalb verwenden wir den neuen Befehl Is editing text, bevor wir eine neue Abfrage durchführen.
var $char : Text
Case of
:( FORM Event .code=On Before Keystroke)
If (Not(Is editing text)) // check not in input mode
$char :=Keystroke
Form.people:= ds .people.query("vorname = :1 oder nachname = :1";$char+"@")
End if
End case
Ein weiteres Beispiel?
Das folgende animierte GIF zeigt, was mit diesem Ereignis in einem Listenfeld möglich ist, ohne die Hilfe anderer Schaltflächen oder Eingabebereiche(die Buchstaben, die im animierten GIF erscheinen, werden nur angezeigt, um zu zeigen, welche Tasten auf der Tastatur getippt wurden).
Weitere Details zu diesem Befehl finden Sie im Doc Center!
Fazit
Diese Funktion trägt zu einer benutzerfreundlicheren Oberfläche bei, und wir sind sicher, dass Sie als Entwickler sie nutzen werden, um die Benutzerfreundlichkeit weiter zu verbessern!
Für weitere Informationen lesen Sie bitte die Dokumentation!