[ ik0 @ 02.06.2010. 19:01 ] @
Do sada sam koristio ovaj kod

Code:
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{if ((Key >= 'a') && (Key <= 'z') || Key == VK_BACK) {}     
       else
       {Key = 0;
       Beep();
       ShowMessage("Mozes koristiti samo slova");
              }}


Ali sada postoi problem, kada bi trebao pisati sa srpskom ili bilo koje druge podrske onda zapisue sve. Probao sam da iskoristim znanje iz Dev c++ ali isalpha mi ne radi u for ciklusu pa nikako nisam uspe da ga nagodim kako treba valjda...Ako moze neka pomos... Hvala
[ X Files @ 02.06.2010. 21:14 ] @
Koliko vidim, imas dva problema:
1. Sta se desava s kodom kada koristis PASTE (neki brojevi su na klipbordu, desni taster misa, Paste u to edit polje) u TEdit? OnKeyPress ce biti lagano zaobidjen.
2. Detekcija slova van opsega a..z

1)
Idi na:
http://codenewsfast.com/

Kljucne reci za pretragu:
subclass WM_PASTE TEdit

Potrazi recimo temu:
How to disallow a specific char in TEdit?

Tu ces naci kako se vrsi hvatanje WM_PASTE, a kod prilagodi tvojoj situaciji.


2) Ako si se opredelio za OnKeyPress, dodaj odmah na pocetku te funkcije:
ShowMessage("Mozes koristiti samo slova:" + IntToStr(Key) );
... cisto da vidis koji su kodovi (brojevi) slova kod žšđčć, pa to ugradi u postojeci kod:
if ((Key >= 'a') && (Key <= 'z') || Key == VK_BACK || Key == BROJ_ZA_PRVO_SLOVO || Key == BROJ_ZA_DRUGO_SLOVO || ...)

To bi trebalo da su negativne vrednosti.



Ipak, ja se ne bih opterecivao tim proverama, vec bih korisnika o greskama obavestio nakon pokusaja neke operacije za koju je kljucno da sadrzi samo slova i vratio ga na taj Edit.

[ ik0 @ 02.06.2010. 21:47 ] @
Upravo to sam i hteo da uradim, mislim probo sam da resim problem kada zacuvujem te podatke od edita u bazi. To sam probao sa for ciklusom, ali pa tu se nemogu snaci sa isalpha.

String a;
int b;
a=Edit1->Text;
b=a.Length();
for (int i=0; i<b; i++)
if (isalpha (a))
.....
.....

Radio sam sa Dev C++ i mesam kodove pa ispravi me gde gresim ili daj resenje za ovo...
[ tkaranovic @ 04.06.2010. 11:06 ] @
Code (cpp):

bool __fastcall IsSrLatinica(Char& Karakter)
{
   AnsiString tekst = "ertzuiopšđasdfghjklčćžcvbnmERTZUIOPŠĐASDFGHJKLČĆŽCVBNM";
   bool      Result;
   Result = tekst.Pos(Karakter) > 0;
   return Result;
}
 


...
for (int i=1; i<=b; i++)
[ ik0 @ 04.06.2010. 16:26 ] @
Hvala na odgovorima. Mnogo mi je pomoglo.