Kod çalışma sırası....

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
hbulus
Üye
Mesajlar: 163
Kayıt: 14 Tem 2003 11:30
İletişim:

Kod çalışma sırası....

Mesaj gönderen hbulus »

S.a.
Formumda veritabanına bazı kayıtlar giriyorum. Dbedit'in onchange olayında diğer bir alanın değerini hesaplattırıyorum. Bahsettiğim dbedit boş bırakıldığında sorun yok. Ancak bu alana bir değer girdiğimde garip bir şekilde dbedit'in onchange olayı database commit edip formu kapattıktan sonra devreye giriyor ve 'not edit mode' hatası veriyor. Programı satır satır çalıştırıp kontrol ettim defalarca. Halbuki oncahnge olayı dbedite değeri girdiğimde çalışıyor, formu kapatırken nasıl olurda tekrar işleme girer. Hatayı nerede yapıyorum acaba???
Erbab-ı kemâli çekemez nakıs olan, rencide olur Dide-i Huffaş ziyadan....
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Tablo kapatıldığında veya aktif kayıt değiştiğinde DBEdit içinde değer varsa bu değişir ve onChange olayı yine çalışır. Tablon da yazmaya karşı kapalı olduğu için bu hatayı alman normaldir. Kodunu ya o alanın (TField) onChange olayına yazmalısın, ya da if Table1.State in [dsEdit,dsInsert] then şeklindeki bir kodla kontrol altına almalısın.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

onchange olayı yerine onexit kullanmanızı tavsiye ederim. edit yazdığınız her tuş bunu yeniden tetikler. dolayısı ile hesapta baştan yapılır. onexit kullanırsanız hesaplama tek bir defada yapılır.

bunu kullanırken amacınız nedir bilmiyorum tabii ama onexit olayında özellikle girilen değeri vtden sürekli aratırken kullanılıyor ise aşırı bir yavaşlatma sözkonusu
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Cevapla