Wie kann ich überprüfen, ob ein Textfeld nur Zahlen in Delphi enthält?

7

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.

    
PawanS 23.06.2011, 13:23
quelle

4 Antworten

6

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%     
Warren P 23.06.2011, 15:24
quelle
9

Ich weiß nicht, welches Ereignis Sie verwenden möchten, um die Validierung aufzurufen, aber die Validierung kann wie folgt durchgeführt werden:

%Vor%     
David Heffernan 23.06.2011 13:29
quelle
3

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.

%Vor%

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.

    
Johan 23.06.2011 14:19
quelle
3
  

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.

  • Ich mag es nicht, den Benutzer zu blockieren. Ein Szenario:
  • Ich gebe " abc123 "
  • ein
  • Beim Verlassen des Edit Controls erhalte ich die Fehlermeldung "Nur Zahlen erlaubt"
  • Ich merke, dass ich vergessen habe, die besondere Bedingung
  • zu erreichen
  • Ich möchte etwas tun, um den besonderen Zustand zu erreichen
  • aber ich kann nicht, weil ich immer die Fehlermeldung "nur Zahlen erlaubt"
  • bekomme
  • also muss ich den Wert auf " 123 "
  • korrigieren
  • mach die Dinge, um die besondere Bedingung zu erreichen
  • Geben Sie meinen alten "abc123" -Wert erneut ein

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.

    
Heinz Z. 23.06.2011 19:57
quelle

Tags und Links