function IsStrANumber(const S: String): Boolean; var P:PChar; begin P:=PChar(S); result:=False; while P^ <> #0 do begin if not (P^ in ['0'..'9']) then exit; inc(P); end; result:=True; end;
... sæt den til en knap eller lign. .. og hvis den sender TRuew tilbage er det tal for false så er det ikke kun tal
function IsStrANumber(const S: String): Boolean; VAR V,E : Integer; begin Val(S,V,E); Result := (E = 0); end;
/Så lidt skal der til, og ja du kan godt putte det ind i en event, jeg vil dog vælge Onkeypress, og sætte Key := #0 hvis det ikke er et tal, du kunne også overveje at bruge MaskEdit comp. i stedet for en alm. edit, den kan du sætte op til kun at godtage tal
Brug en SpinEdit, den tager kun tal ind og du kan definere et interval for din max og min værdi, du finder den på komponentpalleten under samples.
Alternativt brug en mask edit og sæt editmask op, fra Delphi hjælp om editMask 0 The 0 character requires a numeric character only in this position. 9 The 9 character permits a numeric character in this position, but doesn't require it.
# The # character permits a numeric character or a plus or minus sign in this position, but doesn't require it.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var j : string; begin if key = 'a' then edit1.text := '';
if key = 'b' then edit1.text := '';
if key = 'c' then edit1.text := '';
if key = 'd' then edit1.text := '';
if key = 'e' then edit1.text := '';
if key = 'f' then edit1.text := '';
if key = 'g' then edit1.text := '';
if key = 'h' then edit1.text := '';
if key = 'i' then edit1.text := '';
if key = 'j' then edit1.text := '';
if key = 'k' then edit1.text := '';
if key = 'l' then edit1.text := '';
if key = 'm' then edit1.text := '';
if key = 'n' then edit1.text := '';
if key = 'o' then edit1.text := '';
if key = 'p' then edit1.text := '';
if key = 'q' then edit1.text := '';
if key = 'r' then edit1.text := '';
if key = 's' then edit1.text := '';
if key = 't' then edit1.text := '';
if key = 'u' then edit1.text := '';
if key = 'v' then edit1.text := '';
if key = 'w' then edit1.text := '';
if key = 'x' then edit1.text := '';
if key = 'y' then edit1.text := '';
if key = 'z' then edit1.text := '';
if key = 'æ' then edit1.text := '';
if key = 'ø' then edit1.text := '';
if key = 'å' then edit1.text := ''; end; er det eneste jeg kan komme i tanke om (er presset på tid, så kan ikke lige komme med et bedre eksempel, men det virker da :-) )
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9',#13,#08,#3,#22,#24,#26]) then Key := #00; end; #13,#08 etc. er nødvendig for at få Retur, backspace etc. til at virke.
Har dog den fejl at du kan paste text i din edit box...
Du kan benytte OnKeyDown istedet, men det kræver lidt mere kode
Takker for foreslagene... Især martinlind, hvis forslag jeg fandt mest passende...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.