Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#4

AW: DBEdit mitteilen das Eingabe komplett

  Alt 13. Jan 2014, 15:50
Das Aufrufen der Methode die das Feld berechnet war nicht das Problem.
Hat ja auch keiner behauptet.

Vielmehr ist das Datenfeld zum Zeitpunkt der Berechnung leer, da das DBEdit die Eingabe noch nicht an das Datenfeld weitergeleitet hat. Hierbei sollte man erwähnen das die Berechnungsmethode im Datenmodul durch ein OnChange eines Datenfeldes ausgelöst wurde. Was jetzt jedoch durch das OnExit des DBEdits ausgelöst wird.
Meine DBEditfelder ändern ihre Farbe, sobald sie zur Eingabe bereit sind (Dataset.Edit) und wieder zurück, sobald die Eingabe beendet wurde (Dataset.Post).

Es geht doch offenbar darum, ein anwender- bzw. benutzerfreundliches Handling zu implementieren. Da halte ich es für etwas gewöhnungsbedürftig, eine Eingabe durch das Verlassen des Feldes abzuschließen: Der Anwender muß also irgendwo anders hinklicken, um seine Eingabe zu bestätigen und die Verarbeitung auszulösen. Dann könntest du ihm auch gleich einen Button präsentieren oder eben ganz auf diesen ganzen Firlefanz verzichten, das DBEdit beim Enter zur Eingabe vorbereiten (Dataset.Edit; DBEdit.ReadOnly := False; DBEdit.Color := clGreen; etc.) und beim Drücken der Entertaste die Eingabe auf Korrektheit überprüfen und gegebenfalls abschließen (Dataset.Post; DBEdit.ReadOnly := True; DBEdit.Color := clWhite; etc.). Ist die Eingabe nicht korrekt, machst du entweder ein Dataset.Cancel oder beläßt die Datenmenge im Editiermodus, wobei du dem Anwender natürlich seine Fehleingabe anzeigen mußt. Das wäre eine konkrete und begreifbare Vorgehensweise für den Anwender; dagegen ist "irgendwo hinklicken zu müssen" etwas vage und läßt manchen Anwender dann auch mal außerhalb des Formulars oder sonstwohin klicken, was zu Fehlverhalten der Anwendung führen könnte. Du kannst z.B. auch noch auf die Betätigung der ESC-Taste prüfen, womit der Anwender signalisieren kann, daß er die Eingabe abzubrechen wünscht. Beim Verlassen des Feldes ohne vorherige Bestätigung mit Enter verwirfst du die Eingabe (Dataset.Cancel).
  Mit Zitat antworten Zitat