Im Vergleich zur maskenorientierten Benutzersteuerung besteht bei den grafischen Dialogen eine Trennung zwischen Oberfläche und Datenstruktur. Da der Inhalt eines Eingabeobjekts über die entsprechende Caption-Eigenschaft gesetzt und ausgelesen werden kann, besteht keine Notwendigkeit Objekte mit der Datenstruktur zu verbinden.
CONZEPT 16 bietet dennoch die Möglichkeit, ein Eingabeobjekt mit einem Feld aus der Datenstruktur zu verknüpfen. Über die Eigenschaft wpDbFieldName
kann eine Zuordnung zu einem Feld aus der Datenbank vorgenommen werden. Da dieses Verfahren sehr komfortabel ist, der Entwickler muss sich nicht um das Übertragen der Werte zwischen Feldpuffer und Objekt kümmern, wird es in der Praxis häufig eingesetzt. Um so wichtiger ist die Kenntnis darüber, zu welchem Zeitpunkt bzw. bei welcher Aktion die Werte übertragen werden.
Übertragen Inhalt des Feldpuffers in das Eingabeobjekt
- Das Eingabeobjekt erhält den Fokus
- Aktualisieren des Objekts oder eines übergeordneten Objekts (Frame, GroupBox, Notebook …) mit der Funktion
WinUpdate()
. Optional kann auch der Parameter_WinUpdFld2Obj
angegeben werden.
Übertragen Inhalt des Eingabeobjekts in den Feldpuffer
- Das Eingabeobjekt verliert den Fokus
- Das Eingabeobjekt besitzt den Eingabefokus und eine Menüoption wurde angewählt bzw. über die bei der Eigenschaft
wpMenuKey
definierten Funktionstaste ausgelöst. - Das Eingabeobjekt besitzt den Eingabefokus und ein Button der Toolbar wurde angewählt bzw. über die bei der Eigenschaft
wpMenuKey
definierten Funktionstaste ausgelöst. - Das Eingabeobjekt besitzt den Eingabefokus und ein Button wurde angewählt
- Prozedurales Übertragen mit der Funktion
WinUpdate()
und der Update-Option_WinUpdObj2Fld
Ist dieser Automatismus in einer bestimmten Konstellation nicht erwünscht, kann der Update vom Feldpuffer zum Eingabeobjekt und umgekehrt, über die Optionen _WinAppFld2ObjOff
und _WinAppObj2FldOff
bei der Eigenschaft wpFlags
des _App
-Objektes verhindert werden. Ein Übertragen der Werte über die Funktion WinUpdate()
wird dann ebenfalls verhindert.
Beispiel:
_App->wpFlags # _App->wpFlags | _WinAppObj2FldOff | _WinAppFld2ObjOff
Eine Antwort
für MDI-Fenster sind die APP-Flags etwas problematisch, da der Anwender ja evtl. während im Fenster 1 eine größere Verarbeitung läuft, im Fenster 2 weiterarbeiten will