![]() |
Fehlermeldungen im Dialog abfangen
Hallo zusammen,
ich suche eine Lösung für folgendes Situation - Aus dem Hauptprogramm wird mit DoModal ein Dialogfenster aufgerufen - In dem Dialogfenster können Eingaben (TEdit) gemacht werden, als auch werden Berechnungen durchgeführt mit den Eingaben. - Wie erreiche ich, daß bei Falscheingaben die Fehlemeldungen (ConvertError) angezeigt werden und der User den Dialog erst mit Drücken der OK-Taste verlassen kann, wenn die Fehler beseitigt worden sind. Bsp: In Feld soll Zahl eingegeben werden. User gibt Buchstabe ein Es erscheint eine Fehlermeldung Der OK-Button wird disabled Der User korrigiert die falsche Eingabe Der OK-Button wird wieder enabled Der User verläßt den Dialog mit OK - Ins Hauptprogramm möchte ich nur zurückspringen, wenn alle Eingaben richtig sind. Welche Lösungen habt ihr? Vielen Dank für eure Unterstützung. Michael |
Re: Fehlermeldungen im Dialog abfangen
Zitat:
Also nicht auf "fehler" in der Eingabe reagieren sondern die Falscheingabe verhindern. |
Re: Fehlermeldungen im Dialog abfangen
Hallo,
Delphi-Quellcode:
Das setzt voraus, dass das Button-ModalResult auf mrNone bleibt.
procedure TFormX.Button_OK_OnClick(...);
begin // consistence check if not TryStrToInt() then Exit; ModalResult:= mrOK; end; Heiko |
Re: Fehlermeldungen im Dialog abfangen
Danke für den Tipp :lol: :lol:
funktioniert so. Michael |
Re: Fehlermeldungen im Dialog abfangen
Liste der Anhänge anzeigen (Anzahl: 1)
Schade zu früh gefreut. Es klappt so nicht zuverlässig.
Anbei ein Mini-Programm In das Edit-Feld sollen nur Zahlen eingegeben werden können. OK soll nur möglich sein, wenn eine Zahl drin steht. Wie kann ich falsche Zahlen verhindern? Michael |
Re: Fehlermeldungen im Dialog abfangen
Zitat:
Delphi-Quellcode:
So in der Art mache ich das immer ;)
procedure TheEdit.KeyPress(Sender: TObject; var Key: Char);
begin if not (Key in ['0'..'9',#8]) then Key := #0; end; procedure TheEdit.Change(Sender: TObject); begin btnOK.Enabled := Length(TheEdit.Text) > 0; end; //Edit: Dabei ist darauf zu achten, dass bei der Anzeige des Dialogs das Edit leer und der Button disabled sind, sonst bringt das so nix :mrgreen: //Edit2: Falsches Ereignis, es muss in Keypress sein |
Re: Fehlermeldungen im Dialog abfangen
Bei einem Modalen Formular sollte man immer alle Prüfungen ausführen,
wenn der Benutzer OK gedrückt hat. Man sollte nicht die Eingaben in die einzelnen Felder überprüfen und sofort ablehnen. Warum ? 1.) die Prüfungen im Event KeyPress sind nutzlos, wenn über die Zwischenablage eingefügt wird 2.) angenommen auf dem Formular gibt es die Felder PLZ und Ort. Man kann das Feld PLZ nur dann verlassen, wenn man 5 Ziffern eingegeben hat. Das ist aber viel zu restriktiv! Wenn der Benutzer die PLZ und den Ort als ein String aus einem anderen Dokument kopiert und dann einfügen möchte scheitert er am PLZ-Feld, obwohl er nach dem Einfügen den Ort nochmals markieren, ausschneiden und ins Ort-Feld kopieren wollte. ==> Alle Prüfungen am Schluss durchführen und dem Benutzer eine sinnvolle Exception um die Ohren hauen:
Delphi-Quellcode:
procedure ...PlausiPruefung;
var msg : string; begin if Length(Trim(EditPLZ.Text)) <> 5 then msg := 'PLZ muss 5-stellig sein'#13#10; if Length(EditOrt.Text) > 40 then msg := msg+'Ort darf maximal 40 Zeichen haben'#13#10; if msg <> '' then raise Exception.Create(msg); |
Re: Fehlermeldungen im Dialog abfangen
Die Idee die Überprüfungen zum Schluß zu machen ist ja gut.
So wie beschrieben kommt dann die Exception, wird bestätigt und wieder auf OK gedrückt und weg ist der Dialog mit den falschen Angaben. Hilft also nicht wirklich |
Re: Fehlermeldungen im Dialog abfangen
Zitat:
Im Event OnClick werden dann zuerst die Plausiprüfungen gemacht. Als letzte Zeile folgt dann
Delphi-Quellcode:
ModalResult := mrOK;
end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz