![]() |
Eingabe von Buchstaben verhindern
Tach
ich wollte mal wissen, wie ich verhindern kann, dass jemand Buchstaben in mein Edit-Feld eingibt. Das habe ich so probiert, ging aber nicht:
Delphi-Quellcode:
procedure TfrmRechner.edEingabeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); var i:integer; buchstabe:boolean; Zahl:array[0..9] of integer; begin buchstabe:=false; for i:=0 to 9 do zahl[i]:=i; for i:=0 to 9 do begin if Key<>zahl[i] then buchstabe:=true; if Key=zahl[i] then buchstabe:=false; if not Buchstabe then break; end; if Buchstabe then Key:=0; //was besseres ist mir nicht eingefallen. gibt 's denn sowas wie Key:=''? end; |
Re: Eingabe von Buchstaben verhindern
hi,
ähh also ich glaube dass die Variable "Key" den ASCII-Code enthält. und Zahlen haben folgende ASCII-Codes: 0: 30 1: 31 .. .. 9: 39 => nicht von 0 bis 9 sonder von 30 bis 39 überprüfen ob eine Zahl eingegeben wurde ich hoff das Stimmt außerdem musst du diesen Quellcode im OnKeyPress Event einfügen und nicht im OnKeyDown Event cu, stefan2005 |
Re: Eingabe von Buchstaben verhindern
Wenn du verhindern willst, dass ein Buchstabe EINGETIPPT wurde, kannst du es doch ganz einfach so machen:
Delphi-Quellcode:
;)
(if key = '0') or (if key = '1') or (if key = '2') or (if key = '3') or (if key = '4') or ... (if key = '9') then
Buchstabe := false else Buchstabe := true; |
Re: Eingabe von Buchstaben verhindern
Delphi-Quellcode:
Ich hoffe das passt gleich, habe kein Delphi offen. Solltest aber bedenken, daß Du auch noch die Back-Space-Taste drücken können solltest - erweiter dann die Konstante einfach so:
const CKeys = ['0'..'9'];
begin if Key not in CKeys then Key := #0; // Key := #0 -> Key beinhaltet 'nichts' (wobei nichts ja auch nicht richtig ist - es beinhaltet ja den Wert "0" ;) end;
Delphi-Quellcode:
Sollte es nicht klappen dann musst Du mit dem Code etwas rumtüfteln. Zudem muss ich Stefan2005 mit dem Ereignis zustimmen.
const CKeys = ['0'..'9', #9, #8]; // etc...
MfG Michael Wollert |
Re: Eingabe von Buchstaben verhindern
Und was soll passieren, wenn 's ein Buchstabe ist? :-)
|
Re: Eingabe von Buchstaben verhindern
Hallo,
wie bereits erwaehnt wurde, ist in der Variable "Key" der ASCII-Code des Zeichens enthalten. Folgende solltest du erlauben: 48 ('0') bis 57 ('9'), 9 (Backspace) und evtl. 13 (Return). Also fragst du ab:
Delphi-Quellcode:
Sollte so eigentlich funktionieren.
if Key not in [9, 13, 48..57] then
Key := 0; Greetz alcaeus |
Re: Eingabe von Buchstaben verhindern
Hallo nochmal,
im OnKeyPress-Event ist Key vom Typ "Char", d.h. Du musst eine Typenkonvertierung durchführen wenn Du auf einen Ascii-Wert hin vergleichen möchtest - dies erreichst Du mit einer einleitenden Raute (#0 = $0) MfG Michael Wollert |
Re: Eingabe von Buchstaben verhindern
Delphi-Quellcode:
liefert mir folgenden Fehler:
if Key not in CKeys then
Operator oder Semikolon fehlt Operator ist auf diesen Operandentyp nicht anwendbar |
Re: Eingabe von Buchstaben verhindern
Man könnte doch eigentlich auch alle Zeichen von 65 bis 255 sperren, dann braucht man sich doch keine Sorgen mehr drum zu machen, ob noch wichtige Tastencodes dazwischen sind, oder? Oder kommen noch Sonderzeichen vor #65?
also so:
Delphi-Quellcode:
if not key in [65..255] then
Buchstabe := false else Buchstabe := true; |
Re: Eingabe von Buchstaben verhindern
Zitat:
Delphi-Quellcode:
:zwinker:
if not key in CKeys then
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 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 by Thomas Breitkreuz