Voraus tippen leicht gemacht

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:

blank

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).

blank

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!

Roland Lannuzel
- Product Owner & 4D Experte - Nach seinem Studium der Elektronik arbeitete Roland als Entwickler und Berater in der industriellen IT-Branche, wo er Lösungen für Kunden mit einer Vielzahl von Datenbanken und Technologien entwickelte. In den späten 80er Jahren verliebte er sich in 4D und setzte es bei der Entwicklung von Geschäftsanwendungen wie Buchhaltungs-, Abrechnungs- und E-Mail-Systemen ein. 1997 trat er schließlich in das Unternehmen ein und leistete einen wertvollen Beitrag, indem er Spezifikationen, Testtools und Demos entwarf, Schulungen durchführte und auf vielen Konferenzen für die 4D Community sprach. Er gestaltet die Zukunft von 4D aktiv mit, indem er neue Funktionen und Datenbankentwicklungstools definiert.