![]() |
In Edit-Feld nur Zahleneingaben zulassen?
Ich hab schon mal etwas in google gesucht und auch was gefunden, man kann aber immer noch Sonderzeichen eingeben (Großschreibtaste drücken und die oberen Zahlentasten drücken -> !"§$%&/()=?). Wie kann ich überprüfen, ob die Shifttaste gedrückt wurde?
Delphi-Quellcode:
procedure TForm1.txtSpieltagKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); var Mgs: TMsg; procedure EatKey; { Clear Keyboardbuffer / Tastaturbuffer leeren } begin PeekMessage(Mgs, 0, WM_CHAR, WM_CHAR, PM_REMOVE); end; begin if not (Char(Key) in [#8, #13, #46, #48..#57,#96..#105]) then EatKey; end; |
Re: In Edit-Feld nur Zahleneingaben zulassen?
Hi mirko2000,
hatte selbst mal das Problem und hab dazu folgendes gefunden: Diese Porcedure verhindet alle Eingaben ausser Zahlen in einem Editfeld
Delphi-Quellcode:
Ich hoffe, das hilft dir weiter.
//Variante1:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var i:integer; b:boolean; begin b:=false; for i:=48 to 57 do begin if ord(key) =i then b:=true end; if b=false then key:=chr(0); end; //Variante2: procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); var i:integer ; begin try i:=strtoint(key); except key:=chr(0); end; end; //Variante3: // lässt nur Zahlen zu und die Backspacetaste procedure KeyPressWord(Form : TForm; Sender : TObject; var Key : Char); begin if NOT (Key in [#08, '0'..'9']) then Key := #0; end; //Variante4: // lässt nur Zahlen mit Komma zu und die Backspacetaste procedure KeyPressFloat(Form : TForm; Sender : TObject; var Key : Char); begin if Key = '.' then Key := ','; if NOT (Key in [#8, '0'..'9', ',']) then Key := #0; end; //Zusatz: //optional kann in die Procedure noch ein Code eingebaut werden, der den Cursor aufs nächste Feld //setzt, wenn du Enter drückst(die nächste Taborder): if Key = Chr(vk_Return) then begin Key := #0; Form.Perform(wm_NextDlgCtl, 0, 0); end; |
Re: In Edit-Feld nur Zahleneingaben zulassen?
@Jonny-Flash: Danke, genau das hab ich gesucht!
Mir fällt jetzt aber noch auf, dass ich in das Textfeld immer noch was einfügen kann. Und zwar muss ich nur mit der rechten Maustaste in das Feld und dann auf Einfügen klicken. Kann man das auch noch irgendwie unterbinden? [EDIT]Habs gerade durch ausprobieren herausgefunden, hat sich also erledigt![/EDIT] |
Re: In Edit-Feld nur Zahleneingaben zulassen?
Kannst mal versuchen bei Edit1.OnChange mal ein Checkalgorythmus zu schreiben, so was ähnliches wie:
Code:
Die jeweilige Funktion IsNotNumber kannst du nach deine Regeln herstellen, oder vom KeyPress entziehen.
function TForm1.Edit1Change(Sender:TObject);
var b:byte; S:String; begin S:=Edit1.Text; for b:=1 to Length(S) do if IsNotNumber(S[b]) then S:=''; Edit1.Text:=S; end; |
Re: In Edit-Feld nur Zahleneingaben zulassen?
Zitat:
|
Re: In Edit-Feld nur Zahleneingaben zulassen?
Zitat:
Delphi-Quellcode:
reinschreiben.
Handled := true;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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