Avatar billede -benne- Nybegynder
09. marts 2002 - 12:51 Der er 8 kommentarer og
1 løsning

KUN tal...

Jeg har en edit, men hvordan sikrer jeg mig, at der kun bli'r indtastet tal i den...?
Avatar billede fireworld Nybegynder
09. marts 2002 - 12:55 #1
her er en funktion

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
Avatar billede -benne- Nybegynder
09. marts 2002 - 13:00 #2
Kan jeg koble den til OnChange?
Avatar billede martinlind Nybegynder
09. marts 2002 - 13:28 #3
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
Avatar billede morten_s Nybegynder
10. marts 2002 - 17:00 #4
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.
Avatar billede sfreak Nybegynder
10. marts 2002 - 22:41 #5
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 :-) )
Avatar billede laffe Nybegynder
11. marts 2002 - 13:55 #6
sfreak - Den duer ikke.
Hvad hvis der er tastet: 1234a, så bliver hele strengen slettet. ;-)

benne - Jeg vil holde på martinlind's forslag.
Avatar billede doc404 Novice
11. marts 2002 - 15:50 #7
En simpel quick and dirty løsning:

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
Avatar billede morten_s Nybegynder
11. marts 2002 - 19:01 #8
Jeg vil nu fastholde at SpinEdit er den bedste til indtastning af (hel)tal
Avatar billede -benne- Nybegynder
14. marts 2002 - 12:52 #9
Takker for foreslagene... Især martinlind, hvis forslag jeg fandt mest passende...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester