Zabrana unosa broja u Edit komponentu

Zabrana unosa broja u Edit komponentu

offline
  • Pridružio: 15 Maj 2006
  • Poruke: 333
  • Gde živiš: Babušnica

Kako da zabranim unos broja u Edit1 onChangetext? Znači da mogu samo slova da se unose.

Hvala!



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Đuro Glumac
  • dipl. ing. informatike
  • Pridružio: 08 Feb 2004
  • Poruke: 3640
  • Gde živiš: ApAtIn

procedure TForm1.Edit1Change(Sender: TObject); var i: integer; s: string; Begin s:=Edit1.Text; for i:=1 to length(s) do    if (s[i] in ['0'..'9']) then     ShowMessage('GRESKA! Unet je broj!'); end;

Prilikom svakog unosa, uzima se jedan po jedan karakter iz edit boxa i proverava da li je u skupu od 0 do 9, odnosno da li je broj. Ukoliko jeste, ispisuje da je doslo do greske.

Idea Nedostatak ovoga je sto mozes da ponavljas gresko, tj. uneses broj, on ti prikaze gresku. Kliknes OK, pa zatim ponovo uneses broj...

Idea Da bi se zastitio od ovoga, nakon prikaza poruke o gresci ne bi bilo lose da obezbedis brisanje poslednjeg unetog karaktera iz Edit boxa, tj. broja.

Ukoliko ti je najasan neki deo koda, pitaj... tu smo.



offline
  • Pridružio: 12 Nov 2006
  • Poruke: 52

Zašto ne bi koristio dogadjaj OnKeyPress?

Evo ti jednostavnog i efikasnog koda

Citat:procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key in ['0'..'9'] then key:=#0;
end;

offline
  • Pridružio: 13 Apr 2007
  • Poruke: 452
  • Gde živiš: Beograd

Kad smo vec kod ovoga, da i ja pitam nesto....
Desava mi se da kada pristisnem backspace on prijavi gresku...Radio sam sa OnKeyPress eventom....Sada ne koristim to vise, ali hocu da znam da li ima neki nacin da se uradi da samo slova ne rade, a ne i svi ostali tasteri....

offline
  • Đuro Glumac
  • dipl. ing. informatike
  • Pridružio: 08 Feb 2004
  • Poruke: 3640
  • Gde živiš: ApAtIn

Slazem se sa zamm72. Kod jeste jednostavniji i efikasan, ali jedini nedostatak u odnosu na onaj gornji kod je sto mozes da uradis copy/paste u edit box, rec koja sadrzi brojeve, mada i to moze da se sredi.

LittleHacker:
Da bi odradio da ne rade samo slova, uradis identicno kao neki od ovih gore primera samo umesto ['0'..'9'] stavis ['A'..'Z'].

offline
  • Pridružio: 13 Apr 2007
  • Poruke: 452
  • Gde živiš: Beograd

O....bas nisam razmisljao.... Very Happy
Hvala....

offline
  • Pridružio: 15 Maj 2006
  • Poruke: 333
  • Gde živiš: Babušnica

Hvala na pomoći! Evo šta sam uradio. To mi je trebalo. Možda nekom zatreba...

procedure TForm1.DBEdit3Change(Sender: TObject); var i,br: integer;     s: string; Begin s:=DbEdit3.Text; for i:=1 to length(s) do    if (s[i] in [' '..'@']) or       (s[i] in ['['..'`']) or       (s[i] in ['{'..'‰'])  then      begin       br:=i;       delete(s,br,1);     end;   DbEdit3.Text:=s;   DbEdit3.SelStart:=length(s); end;

Ko je trenutno na forumu
 

Ukupno su 1066 korisnika na forumu :: 31 registrovanih, 7 sakrivenih i 1028 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., AleksSE, aramis s, babaroga, bojcistv, cavatina, darios, Denaya, dragoljub11987, Gargantua, Georgius, ivan1973, JimmyNapoli, Kubovac, ljuba, madza, mercedesamg, Mercury, Mihajlo, mikrimaus, milenko crazy north, Milos ZA, oldtimer, Oscar2, Snorks, Srle993, t.mile, tubular, vaso1, vathra, voja64