Konu: text de iki rakam arası sayı
text de sadece 1 ile 9 arası sayıların girilmesini nasıl sağlarız,
"1-9 arası giriniz" mesajı verdirebiliriz.
Giriş yapmadınız. Lütfen giriş yapın yada kayıt olun.
fox4um » Gridler ve Diğer Kontroller » text de iki rakam arası sayı
text de sadece 1 ile 9 arası sayıların girilmesini nasıl sağlarız,
"1-9 arası giriniz" mesajı verdirebiliriz.
.... veya text control'un input mask'ına 9 yazarak
sadece diyelim 1 ile 15 arası sayıların girişini yapmak istiyoruz.
O zaman Valid Event ile kontrol etmen lazım
örnek verebilirmisiniz.
IF THIS.VALUE < 1 OR THIS.VALUE > 15
MESSAGEBOX("Opala ... sadece 1 ile 15 demişdik",16,"Hata")
RETURN 0
ENDIF
RETURN 1
tamam teşkrlr.
valid'i hiçbir zaman kullanmanı tavsiye etmem. FPD zamanlarından kalma bir komut. Başına bela açabilir.
lostfocus'u kullanabilirsin nodefault ile.
if !betw(this.value,1,15)
nodefa
retu
okey.teşkrlr
Valid gereken yerlerde valid yerine lostfocus kullan. Ancak bunun icin Spinner kullansan? O zaman dogrudan spinnerin propertyleri kontrol eder isi, koda gerek yok:
PUBLIC oForm
oForm = CREATEOBJECT('myForm')
oForm.Show()
Define Class myForm As Form
Add Object spnSayi As Spinner With ;
SpinnerLowValue=1, SpinnerHighValue=15,;
KeyboardLowValue=1, KeyboardHighValue=15,;
Value=1, SelectOnentry=.t.
Enddefine
Lostfocus hücreye yanlış veri girerek bir sonraki hüçreye geçiş yapmanı egellemiyor.
Bu durumda kayıt esnasında o hücredeki değeri kontrol etmek lazım.
Ama Çetin Beyin önerdiği en doğrusu.
Lostfocus yalniz basina engellemiyor dogru. Ama lostfocus'ta kontrol daha fazla, istedigin ara mesajlar, baska form gosterme vs rahat oluyor ve ister devam etmesini sagliyorsun istersen de orada kalmasini. Ozellikle Grid icinden gerekiyorsa ( ornegin baska form ile bir musteri sectirip ID sini fielde yazmak gibi) valid sadece saclari yolmaya yarar. Lostfocus ile kolay, Genel yapi:
* Lostfocus
lSonuc = BirseyleriKontrolEt()
if m.lSonuc && tamam gidebilir ek kod gerekmiyor istenirse yazilabilir - asagidaki gibi
* thisform.txtSiradaOlamayanBaskaBirKontrol.Setfocus()
else && gitmemesi lazim, valid .F. dondurme durumu
NODEFAULT && tum espri bu nodefault'ta
this.SetFocus()
endif
NODEFAULT 'u orda kullanmak hiç aklıma gelmemişdi. Bilgi için teşekkürler.
yardmlrnz için teşklr.
Sevgili Arkadaşlar,
1-15 arasındaki sayılar için spinner gayet kullanışlı olabilir ama bir kullanıcı olarak dikkatinizi çekmek istiyorum; örneğin bağzı banka sitelerinde olduğu gibi doğum tarihi için 1900 ile 2010 arasında spinner kullanılıyor ki bu, kullanıcı için son derece sıkıcı ve kullanışsız. Adeta bir işkence oluyor. Programlarınızı yazarken bu hususu da dikkate almanız iyi olur sanırım.
Sevgilerimle.
Erdal
Lostfocus hücreye yanlış veri girerek bir sonraki hüçreye geçiş yapmanı egellemiyor.
Bu durumda kayıt esnasında o hücredeki değeri kontrol etmek lazım.Ama Çetin Beyin önerdiği en doğrusu.
nodefa yazmıştım oraya. sadece üç satırlık bir kod. önce bir deneseydin?
Sevgili Arkadaşlar,
1-15 arasındaki sayılar için spinner gayet kullanışlı olabilir ama bir kullanıcı olarak dikkatinizi çekmek istiyorum; örneğin bağzı banka sitelerinde olduğu gibi doğum tarihi için 1900 ile 2010 arasında spinner kullanılıyor ki bu, kullanıcı için son derece sıkıcı ve kullanışsız. Adeta bir işkence oluyor. Programlarınızı yazarken bu hususu da dikkate almanız iyi olur sanırım.
Sevgilerimle.
Erdal
iyi de vfp spinnerde istersen elle de değer girebiliyorsun. bence spinner güzel bir kontrol.
Erdal abi,
Haklisin. Oyle uzun araliklarda birer birer artan spinnerlar beni de bayiyor. Burada sayi az diye onerdim.
Bir de oyle uzun listelerde kullanilacaksa bence Ctrl ve Shift tusunun basili olmalarina bagli olarak farkli artis miktarlari uygulanabilir (Ctrl basilinca 100, Shift ile 10 artis gibi). Ben bunu FoxyClasses'in spinner kullanan saat kontrolunde kullanmistim. 1, 5 veya (hatirlayamadim simdi kacti) Dakikalik artislar icin.
fox4um » Gridler ve Diğer Kontroller » text de iki rakam arası sayı