Könnte es eine sehr einfache Frage sein, aber ich habe Delphi nie berührt. Ich habe ein Bearbeitungsfeld und das kann Zeichen akzeptieren. Aber unter einer besonderen Bedingung muss ich überprüfen, dass die Editierbox nur Zahlen sind.
Wie können wir das tun?
Hinweis: Benutzer kann ein beliebiges Zeichen eingeben, aber zum Zeitpunkt der Validierung muss ich über einem bestätigen.
Ich verstehe nicht, warum Sie einem Benutzer erlauben sollten, ein Zeichen einzugeben, und später nicht zulassen, dass es die Validierung besteht.
Wenn Sie die Eingabe wirklich blockieren müssen, ist ein Steuerelement, das dies für Sie erledigt, besser als das selbst zu hacken. Wenn Ihre Version von Delphi wirklich alt ist, dann versuchen Sie JVCL: TJvValidateEdit in der JVCL-Komponentenbibliothek, zum Beispiel in allen Versionen von Delphi. In den regulären Delphi-Versionen (2009 und später) gibt es bereits mehrere mögliche Lösungen, darunter TMaskEdit und TSpinEdit.
Wenn Sie wirklich nur eine Validierungsmethode schreiben müssen, dann sollten Sie eine regex- oder handcodierte Validierungsfunktion verwenden und diesen Code getrennt vom Steuerelement halten.
%Vor%Ich weiß nicht, welches Ereignis Sie verwenden möchten, um die Validierung aufzurufen, aber die Validierung kann wie folgt durchgeführt werden:
%Vor% Ich weiß, dass du user can enter any char but at the time of validation
gesagt hast.
Ich möchte jedoch eine Alternative anbieten, weil es sehr albern erscheint, einem Benutzer die Eingabe von Werten zu erlauben, nur um sich 1 Minute später beim Benutzer zu beschweren; das riecht einfach gut ... nicht nett.
Ich würde die Eingabe von irgendetwas außer Zahlen verbieten.
Wenn Sie Ganzzahlen haben, ist das besonders einfach:
Füllen Sie das OnKeyPress-Ereignis für die Bearbeitungsbox aus.
%Vor%Damit wird alles fallengelassen, was keine Nummer ist.
Wenn Sie negative Zahlen zulassen, müssen Sie extra prüfen, ob die -
zuvor nicht eingegeben wurde.
Da der Benutzer auch Daten in ein Bearbeitungsfeld einfügen kann, müssen Sie die Daten nach der Änderung des Textes in der Bearbeitung überprüfen.
Da dies im ONKeyPress-Event ziemlich knifflig wird, benutze ich eine benutzerdefinierte Edit-Komponente, die diese Art der Überprüfung durchführt und verhindert, dass der Benutzer die Fuß-in-Mund-Eingabe in eine Bearbeitungsbox eingeben kann.
Persönlich glaube ich nicht daran, jemals eine Fehlermeldung auszugeben, Sie sollten immer danach streben, dem Benutzer nicht zu erlauben, ungültige Daten an erster Stelle einzugeben.
Aber auf eine besondere Bedingung habe ich um das Bearbeitungsfeld Zeichen zu überprüfen sind nur Zahlen.
Sie benötigen zwei Bearbeitungssteuerelemente. Eine für den Nur-Zahlen-Wert und eine für den Allow-All-Wert. Aktivieren oder deaktivieren Sie das Steuerelement, das der Bedingung entspricht. Wenn die zwei Steuerelemente gute Beschriftungen (und vielleicht Hinweise, warum ein Steuerelement aktiviert oder deaktiviert ist) haben, so weiß der Benutzer, was er eingeben muss und warum.
aarrgghh : -
Für einfache Eingabeformulare mache ich folgendes: Ich erlaube eine falsche Eingabe, aber ändere die Schriftfarbe für jedes Bearbeitungssteuerelement mit einer ungültigen Eingabe in rot (die rote Schriftfarbe reicht nicht aus, wenn ein leerer Wert nicht zulässig ist). Wenn der Benutzer versucht, die Daten zu senden, gebe ich eine Fehlermeldung, die den Benutzer über alle ungültigen Eingabefelder informiert und den Post abbricht.