Announcement

Collapse
No announcement yet.

Edit-Feld auf Zahlen und Komma beschränken

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Edit-Feld auf Zahlen und Komma beschränken

    Hallo! Wie beschränke ich am Einfachsten die Eingabe von anderen Zeichen als "0123456789" und "," in eine Edit-Feld? Gibt es eine andere Möglichkeit als bei der on change Methode ein Funktion zu schreiben, die jeweils die letzte Eingabe prüft?

  • #2
    Probier mal TMaskEdit aus, ob es deinen Wünschen genügt

    Comment


    • #3
      MaskEdit verwenden und eine Maske verwenden in der nur nummerische Zeichen zulässig sind

      Comment


      • #4
        Hmmm ich verstehe nicht so ganz... ist es möglich die Anzahl der Vor- und Nachkommastellen unabhängig von einer Maske zu machen? 1,1 12,1 1232314342,3 2342342,23423423234 - soll alles möglich sein (eben eine Fließkommazahl

        Comment


        • #5
          Hallo Björn,

          ich lasse bei einigen Feldern auch nur Zahleneingaben zu und löse das folgendermassen:

          <PRE>
          procedure TStammdatenForm.DOTEditKeyPress(Sender: TObject; var Key: Char);
          begin
          if Key = #13 then Key := #0
          else
          if not (Key in [#8,#46,#48 .. #57]) then Key := #0
          end;
          </PRE>

          Ich persönlich verzichte auf eine Formatierung (z.B Tausendertrennzeichen) das es - zumindest bei mir - probleme gibt wenn das Trennzeichen bei Änderung des Feldinhaltes nicht überschrieben wird

          Gruß
          Heik

          Comment


          • #6
            Hallo zusammen,

            Heikos Lösungsansatz funktioniert leider schon nicht mehr, wenn man etwas aus der Zwischenablage in das Edit kopiert. Und was ist mit mehrfacher Eingabe von Kommas?

            Ich verzichte komplett auf Überprüfungen während der Eingabe, sondern überprüfe die Daten erst, wenn der User den OK-Button klickt und gebe dann entsprechende Meldungen aus.

            Grüße Joche

            Comment


            • #7
              Hallo auch,

              eine Möglichkeit ist auch, eine Prüfroutine im Ereignis OnExit aufzurufen, dann kommt die Fehlermeldung unmittelbar nach Verlassen des Edits.

              Grüße
              Juli

              Comment


              • #8
                Ich hab das mit den Kommas folgendermaßen gelöst:

                procedure Doublewert(var Key: char; Sender: TObject);

                var i:Integer;
                var Kommas:Integer;

                begin
                if ((Key<#48) or (Key>#57)) and (Key <> #44) and (Key <> #8) and (Key <> #13) then
                begin
                Key:=#0;
                end else
                begin
                if(Key=#44) then

                if Sender is TEdit then begin

                Kommas:=0;

                for i:=1 to Length((Sender as TEdit).Text) do
                begin
                if (Sender as TEdit).Text[i]=#44 then begin Kommas:=Kommas+1; ShowMessage(IntToStr(Kommas)); end;
                end;

                if (Kommas=1) then Key:=#0;

                Kommas:=0;
                end;
                end;
                end

                Comment


                • #9
                  Hallo,<BR>tschuldi für das späte posten, aber ich bin auch noch nicht so lange dabei.<BR>Ich hab da die wohl komplizierteste Lösung, aber auch gleich ein Beispiel bereitgestellt.<BR>Unter<BR><BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <a href="http://www.CastleJung.de/Tastatur.zip">www.CastleJung.de/Tastatur.zip</a><BR><BR>habe ich eine separate Tastatur zur Eingabe von Zahlen gemacht.<BR>Das war ursprünglich für Panel PCs ohne Tastatur (touchscreen) gedacht, aber vielleicht hilft es dir ja weiter..

                  Comment

                  Working...
                  X