Edit'e sadece Sayı ve Nokta ( . ) Girilmesi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
F.Atagun
Üye
Mesajlar: 158
Kayıt: 01 Oca 2008 01:56

Edit'e sadece Sayı ve Nokta ( . ) Girilmesi

Mesaj gönderen F.Atagun » 03 Mar 2008 06:34

Selamlar Değerli Dostlarım,

Forumdaki diğer yazışmalardan edite sadece sayı girilmesi işlemini aşağıdaki kod ile tamamladım.

Kod: Tümünü seç

case ord(key) of   
  48..57: // Sayısal aralıksa birşey yapma
  else
  ShowMessage('Lütfen Sayı Giriniz');
  key:=#0;
end;

Ancak bu kod Edit 'e nokta (.) yazmasını da engelliyor. Bu alanda küsüratlı hesaplamalar yaptırıyorum. Yukaridaki kodda nasıl birşey yaparak , nokta (.) hariç sayısal bir karakter girilmesini sağlayabiliriz ?

Not: Ayrıca Forumdaki mesajlarda Klavye Tuş Kodlarında nokta (.) tuşunun key kodunu bulamadım. Bilen varmıydı acaba ?

Teşekkür eder, iyi akşamlar dilerim



Sevgi ve Saygılarımla

Fatih
En son F.Atagun tarafından 03 Mar 2008 09:22 tarihinde düzenlendi, toplamda 1 kere düzenlendi.

Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7506
Kayıt: 09 Haz 2003 11:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek » 03 Mar 2008 08:12

http://www.delphiturkiye.com/index.php? ... adece_sayi

'.' diye, noktayı eklemen yeterli.

Kolay gelsin.

F.Atagun
Üye
Mesajlar: 158
Kayıt: 01 Oca 2008 01:56

Mesaj gönderen F.Atagun » 03 Mar 2008 09:07

Hocam Çok teşekkür ederim.
Noktayı da sayende ekledim

Kod: Tümünü seç

if not (key in ['0'..'9','.',#8]) then 
  begin
    Key:=#0;  //girilen karakter rakam veya backspace değilse null(#0)'a dönüştür
    Beep;       //bip sesi ile kullanıcıyı uyar.
  end;

Kullanıcı avatarı
tanerileri
Üye
Mesajlar: 55
Kayıt: 06 Tem 2007 10:30

Cevap aynı ama ben bu işi prosedur haline getirmiştim.

Mesaj gönderen tanerileri » 04 Mar 2008 12:52

Genelkodlarının olduğu dosyada bu adla bir prosedur oluştur.


procedure EditeSadeceSayiGir(Sender: TObject; var Key: Char; Ondalikli: Boolean = True);
begin
if Ondalikli then
begin
if not (key in ['0'..'9', #8, '.', ',']) then
Key := #0
end
else
begin
if not (key in ['0'..'9', #8]) then
Key := #0
end;
end;



Çağrılması // Sonrada dilediğin Editte çağır. Editin keypress olayında ..

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
EditeSadeceSayiGir(Sender, Key); // Bu ondalıklı girişide izin verir
EditeSadeceSayiGir(Sender, Key,False); // Bu ondalıklı girişe izin vermez.
end;


kolay gelsin.

Bay_Y
Üye
Mesajlar: 115
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Re: Edit'e sadece Sayı ve Nokta ( . ) Girilmesi

Mesaj gönderen Bay_Y » 16 Kas 2018 11:15

Teşekkürler , Güzel bir örnek olmuş. Elinize Sağlık

Cevapla