[ERLEDIGT] GET-Objekt verliert schon validierte Daten bei ESC

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
dtmackenzie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Do, 22. Nov 2007 9:02
Wohnort: Leipzig
Hat sich bedankt: 66 Mal
Danksagung erhalten: 22 Mal
Kontaktdaten:

[ERLEDIGT] GET-Objekt verliert schon validierte Daten bei ESC

Beitrag von dtmackenzie »

Folgendes Problem aus Benutzersicht in einer Eingabemaske:

Es wird in GET-Feld X ein gültiger Wert eingegeben, Feld X wird verlassen.
Dann wird etwas rumgetabbt, andere Felder bearbeitet bis alle Eingaben stimmen, zum Schluss steht der benutzer zufällig wieder auf Feld X.
Dann schließt der Benutzer die Eingabemaske mit ESC...
Ojé, der in Feld X eingegebene und validierte Wert ist weg!

Uns Programmierern ist klar, was hier passiert: ESC in einem GET-Feld setzt der Inhalt zurück.
Aus Benutzersicht ist dieses Verhalten aber schwer zu verstehen, und nicht zu vermitteln.
In der Hilfe zu @...GET steht:
If the user ends the editing procedure by pressing the Esc key, the original value is assigned to the variable <VarName>.
Wenn nicht das Feld sonst verlassen wurde, ist das natürlich sinnvoll, so kann man abbrechen (mit Originalwert) selbst wenn der Inhalt ungültig ist.
Kern des Problems ist aber: Der Originalwert ist anscheinend nur einmal gesetzt.
In der Hilfe zu Get:original steht:
When a Get object receives input focus a copy of the value contained in the variable is stored in the instance variable :original.
Wenn das aber doch jedesmal passieren würde wenn das Get-Objekt den Fokus bekommt, dann gäbe es nicht dieses Problem.

Ich weiß nicht, ob man das als Bug bezeichnen kann - die Hilfe ist hier nicht 100% eindeutig, und es war vermutlich schon immer so.
Also, was können wir dagegen tun?
Instanzvariable :original ist leider geschützt und lässt sich nicht setzen (z.B. nach erfolgreicher Validierung).
Ich habe auch keine Member-Funktion gefunden, die dies machen würde.
In der Hilfe zu ReadModal wird die Datei GETSYS.PRG erwähnt.
Vielleicht würde dieser Code einen Hinweis liefern, leider konnte ich aber die Datei nicht finden, und nun bin ich mit meinem Latein am Ende.

Ich hoffe, dass ich mich verständlich ausgedruckt habe, und dass vielleicht jemand eine weitere Idee hat.
Zuletzt geändert von dtmackenzie am Mo, 10. Jul 2023 15:40, insgesamt 1-mal geändert.
Viele Grüße,
David
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: GET-Objekt verliert schon validierte Daten bei ESC

Beitrag von Wolfgang Ciriack »

Hallo David,

ist bei mir auch so, dass ein ESC den Eingabedialog schließt und die Änderungen nicht gespeichert werden.
Daher prüfe ich beim Beenden eines Eingabedialogs, ob Änderungen gemacht wurden, falls ja und Abbruch/ESC, wird abgefragt, ob die Änderungen verworfen werden sollen.
Bei "Nein" bleibt der Benutzer im Dialog und kann mit OK (statt Abbruch/ESC) die Änderungen speichern (bei "Ja" werden eben die Änderungen - so wie bei dir jetzt - verworfen).
Viele Grüße
Wolfgang
Benutzeravatar
dtmackenzie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Do, 22. Nov 2007 9:02
Wohnort: Leipzig
Hat sich bedankt: 66 Mal
Danksagung erhalten: 22 Mal
Kontaktdaten:

Re: GET-Objekt verliert schon validierte Daten bei ESC

Beitrag von dtmackenzie »

Hallo Wolfgang,

Dankeschön für Deine Antwort!
Deine Vorgehensweise ist gut und vernünftig, leider haben sich die Benutzer seit 30 Jahren daran gewohnt, mit ESC zu schließen (speichernd!) wenn sie nicht ganz mit ENTER durchtabben (im Hybrid-Textmodus übrigens).
Mit einem zusätzlichen Dialog zu diesem Zeitpunkt wäre der Aufschrei groß...
Meistens geht es ja - sie sind es schon gewohnt, wenn sie eine Eingabe gemacht haben, zumindest raus aus dem Feld zu tabben bevor sie ESC drucken, und alle Felder außer dem aktuellen (was sie dann nicht geändert haben) werden gespeichert OK.
Es ist also eigentlich extrem selten, dass sie zu einem vorher eingegebenen Feld zurückkehren, aber dann ist die Auswirkung sehr unschön und ich habe noch keine Strategie, wie ich diesen Fall abfangen könnte.
Zuletzt geändert von dtmackenzie am Di, 28. Feb 2023 17:06, insgesamt 1-mal geändert.
Viele Grüße,
David
Benutzeravatar
dtmackenzie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Do, 22. Nov 2007 9:02
Wohnort: Leipzig
Hat sich bedankt: 66 Mal
Danksagung erhalten: 22 Mal
Kontaktdaten:

Re: GET-Objekt verliert schon validierte Daten bei ESC

Beitrag von dtmackenzie »

Viele Grüße,
David
Benutzeravatar
dtmackenzie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Do, 22. Nov 2007 9:02
Wohnort: Leipzig
Hat sich bedankt: 66 Mal
Danksagung erhalten: 22 Mal
Kontaktdaten:

Re: GET-Objekt verliert schon validierte Daten bei ESC

Beitrag von dtmackenzie »

Der ILX-Beitrag wurde auf meine Bitte gelöscht, da das Problem mit einer einfachen Testanwendung von Alaska Support nicht nachvollziehbar war.

Endlich bin ich draufgekommen, warum das Problem in meiner Anwendung nachvollziehbar ist aber im Testprojekt nicht: Vor langer, langer Zeit hatte ich das Workaround aus PDR 2615 (Undo-Problem) in meine Anwendung integriert - das verursacht das Verhalten.

Das habe ich nun an Alaska gemeldet.
Viele Grüße,
David
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: GET-Objekt verliert schon validierte Daten bei ESC

Beitrag von Wolfgang Ciriack »

Ist ja auch schon 25 Jahre her, da kann man das mal vergessen :badgrin: :badgrin: :badgrin:
Viele Grüße
Wolfgang
Benutzeravatar
dtmackenzie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Do, 22. Nov 2007 9:02
Wohnort: Leipzig
Hat sich bedankt: 66 Mal
Danksagung erhalten: 22 Mal
Kontaktdaten:

Re: GET-Objekt verliert schon validierte Daten bei ESC

Beitrag von dtmackenzie »

Hallo Wolfgang,

O Du Ungläubiger! :wink:
Alaska hat es nicht nur gelöst sondern auch das Workaround in PDR 2615 aktualisiert.

Siehe Zeile ::original := ::varGet() in INLINE METHOD setFocus().
Viele Grüße,
David
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: [ERLEDIGT] GET-Objekt verliert schon validierte Daten bei ESC

Beitrag von Jan »

LOL Frank++, wie lange habe ich das schon nicht mehr gelesen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Antworten