![]() |
Eingabe beschränken
Moin Leuts,
ist es möglich ein Edit so zu beeinflussen,dass nur Zahlen akzeptiert werden und nach eingabe eines Kommas (Fliesskommazahl) nur noch max 2 Stellen eingegeben werden können. (Sonst kommt es Fehler in der Berechnung) und wenn es machbar ist: wenn ein komma eingegeben wurde,kein weiteres akzeptieren ***Aber das sind ja 3 Wünsche auf einmal!*** :mrgreen: Rutscht gut Rein!! |
Moin Privateer,
das ginge entweder mit einem TMaskEdit, oder aber Du fängst das OnKeyPress Ereignis ab, prüfst den Inhalt und löscht ggf. das übergebene Zeichen. TMaskEdit soll allerdings etwas buggy sein. (Das weiss ich allerdings nicht genau, ich hab' damit nie gearbeitet) |
Ja eben, ich hab keine Ahnung
wie ich die Eingabe eines weiteren Kommas verhindere. Vielleicht sollte ich sie ganz verhindern?! Geht das: User gibt beispielsweise 110 ein. Jetzt wird diese Zahl in 1,10 also immer 2 Dezimalstellen um gewandelt. Bei 1100 in 11,00. Wie müsste man das anstellen |
du könntest doch ganz einfach mit Length die Länge des Strings feststellen und dann mit Copy den ersten Teil herauskopieren (Length -2)
Dann das Komma dazwischen packen und dann wieder mit Copy den letzten Teil kopieren und ans Ende anfügen Alexander |
So auf die Schnelle:
Delphi-Quellcode:
var
Comma : Boolean = FALSE; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if (Comma = TRUE) and (Key = #44) then key := #0; if pos(',', Edit1.Text) > 0 then Comma := TRUE else Comma := FALSE; if not (Key in [#8,#44,#48 .. #57]) then Key := #0 end; |
Thx @ all!
|
@Luckie
dein Beispiel funktioniert soweit nur muss man 2mal auf Komma tippen um eins zu bekommen!? |
war ja auch nur so auf die Schnelle. Optimier es doch einfach noch etwas.
|
Ich hab mir auch mal was dazu gebastelt.
Hallo bin blutiger Anfänger aber das mit den Kommas hat mich echt tierisch genervt. Wollte einfach das ich noch angeben kann wieviel Stellen ich noch nach dem Komma eingeben kann. Naja bin dann nach langem rumprobieren auf das hier gekommen:
Geht sicher auch noch einfacher aber wie gesagt blutiger Anfänger. :D
Delphi-Quellcode:
Jetzt muß ich mir nurn noch was basteln wo wenn ich das Edit Feld verlasse die Stellen hinter dem Komma mit Nullen aufgefüllt werden.
procedure TForm1.InnendurchmesserKeyPress(Sender: TObject; var Key: Char);
var Komma: Boolean; Position: Integer; Stellenpuffer: String; Zeichenpuffer: String; Stellenanzahl: Integer; begin Komma := False; Zeichenpuffer := Innendurchmesser.Text; if Pos('.', Zeichenpuffer) > 0 then Komma := True; if (Komma = True) and (Key = #44) then Key := #0; if (Komma = True) and (Key = #46) then Key := #0; if (Komma = False) and (Key = #44) then Key := '.'; if Pos('.', Zeichenpuffer) > 0 then begin Stellenanzahl := Length(Zeichenpuffer); Position := Pos('.', Zeichenpuffer); Stellenpuffer := Copy(Zeichenpuffer, Position+1, Stellenanzahl-Position); Stellenanzahl := Length(Stellenpuffer); if Stellenanzahl = 3 then begin if (Key in [#44, #46, #48..#57]) then Key := #0 end; end; if Key = #13 then Key := #0; if not (Key in [#8, #44, #46, #48..#57]) then Key := #0; end; Also aus z.B. 3 wird 3.000 oder aus 12.37 wird 12.370 Ich finde das Forum hier echt super muß ich noch sagen. Respekt gibt keine übersichtlicheres als das hier. Man sieht das ihr Euch echt viel Arbeit damit macht und ich hoffe Ihr macht weiter so. Damit ich noch viel lernen kann :hello: Gruß Markus |
Das mit dem Nullen auffüllen würde ich so machen:
Wenn deine Komma-Variable true ist, mit pos nach dem Komma suchen und dann pos von der gesamtlänge abziehen, dann weißt du weiviele Stellen hinter dem Komma sind und die kannst du dann auffüllen, bzw einfach hinzufügen. Man liest sich, Stanlay 8) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:48 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