Technofreak hat geschrieben: Di 18. Okt 2022, 10:35
da in dem Programm meistens per Tastatur zwischen den einzelnen Feldern navigiert wird.
Ganz verstehe ich diese Aussage nicht. Jedes Programm mit einer graphischen Oberfläche sollte doch so gebaut sein dass es egal sein sollte ob mit der Maus navigiert wird, die Tastatur benutzt wird oder auch Shortcuts. Stichworte: TabStop, TabOrder, TabOrder Editor, Default Button.
Unter Windows springt man mit dem Tabulator von einem Feld zum anderen und die Enter-Taste drückt den Default-Button.
Bei anderen OS kann das unterschiedlich sein.
Natürlich hat das einen wesentlich höheren Aufwand bezüglich der GUI-Programmierung zur Folge und bedeutet auch viele Überschneidungen in Funktionen und Events. Deswegen gibt es ja die Unterstützung durch Lazarus um diesem Chaos Herr zu werden.
Aber das enthebt einen nicht, sich ein brauchbares Design für seine Eingabemasken zu überlegen.
Bei mir machen die Editfelder außer den üblichen Formatprüfungen kaum umfangreiche Plausibilitätstests um nicht in solche unkontrollierbaren Endlosschleifen zu kommen.
Irgendwo gibt es immer einen
Single Point an dem der Benutzer sich zwischen
Speichern oder
Abbruch entscheiden muss. Und genau dort mache ich alle Plausibilitätsprüfungen so wie
wp_xyz hat geschrieben: Mo 17. Okt 2022, 18:01
Stattdessen wird im OKClick in der Regel eine längere Fehlerprüfung aufgerufen, die alle möglichen Fehlerstände abfragt, das Control mit dem Fehler fokussiert, eine entsprechende Fehlermeldung angezeigt und mit ModalResult := mrNone das Schließen des Fensters verhindert. Da der EditingDone-Code da schon lange abgearbeitet ist, habe ich keine Probleme mit dem Fokussieren des den Fehler erzeugenden Controls.
Zusätzlich zu den angezeigten Fehlermeldungen hinterlege ich erratische Eingebefelder mit einer Fehlerfarbe.
Technofreak hat geschrieben: Di 18. Okt 2022, 10:35
Die Reihenfolge der Eingaben ist in den meisten Fällen gleich und kann daher per SetFocus leicht vorausgewählt werden.
SetFocus verwende ich nur wenn es in diesem Moment keine Probleme bereitet, da hab ich schon einiges an Wuthormonen vergeudet gggg