Form üzerindeki butonlar temassızlık yapıyor.

Başlatan z, 26 Nisan 2013, 17:07:07

z

Windows XP vs üzerinde kullandığımız programlarda form üzerinde butonlar var.

Mouse ile bunları tıkladığımda ekranda butonun çöktüğünü yani butona basıldığını görebiliyorum.

Fakat bu butonda temassızlık olmasından şüpheleniyorum çünkü butona basmış olmama rağmen fonksiyonunu yerine getirmiyor.

İkinci kez basarsam sorun yaşanmıyor.

Programlama hatası diyeceğim ama sanmıyorum.

Form üzerindeki butonlarda kontak kirlenmesi olurmu? Bu butonlar nasıl temizlenir?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

fatih6761

Hocam mekanikte sıkıntı olabilir ya da kontaklar oksitlenmiştir :) Şaka bir yana siz butona basılı tuttuğunuzda WndProc döngüsüne msg:WM_PARENTNOTIFY wparam:WM_LBUTTONDOWN mesajı yollanır. Bu olay gelince buton basılmış gibi içeri göçük bir şekilde render'lanır. Bıraktığınızda aynı şekilde wparam:WM_LBUTTONUP olarak gider. Çift tıklama olayında ise wparam:WM_LBUTTONCLICK parametresi alınır ve click olayına bağlanan fonksiyon(button click event) çağrılır(invoke). Eğer basma durumunda görüntü değişmesine rağmen tıklama olayı algılanmıyorsa uygun delege fonksiyon(func ptr, event handler) bağlanmamış demektir. Çok çok düşük ihtimal kütüphane hatası/virüs olabilir, olsa 2003'ten beri keşfederlerdi herhalde :) Neyse, benim fikrim yazılımsal hata olduğu yönünde.
He, birde şunu sorayım, buton yerel(native) yani standart XP butonu mu? (comctl kütüphanesindeki) Yoksa elle yazılmış bir component/control mü? Harici bir kütüphane ile sağlanıyorsa onun kaydında vs. hata olmuş olabilir...
Kolay gelsin, iyi çalışmalar dilerim hocam..

z

Sözkonusu butonlar standart butonlar. Bazen "Delphi"de benim yazdığım programlarda da aynı sorun oluşuyor. Özellikle programı hızlıca kullanırken arada bir yaşıyorum.

Ekranda butona basıldığı görülüyor ama buton fonksiyonunu yerine getirmiyor. Normal hızda kullanırsam sorun yok.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

fatih6761

Hocam önceki mesajda bahsettiğim Click event'i "Hızlı" kullanırken tetiklenemiyor olabilir. Fare ayarlarından çift tıklama süresini belirleyebilirsiniz. Ya da daha pahalı bir fare alın :)

z

Evet Gerbay dediğin gibi oluyormuş. Bir çok programda denedim aynen dediğin gibi durum oluşursa buton kontakları temas etmiyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

diot

windows formlarında herhangi bir butonun on_click event olayı bırakırken oluşur  (niye öyleyse ) , biz mantıksal olarak  butona bastık diyoruz ama pc demiyor butonu bıraktığın an butona basıldığını anlıyor. Butona basıp parmağı çekmeden mouse hareket ettirip buton dışına çıkarsanız olay gerçekleşmez.

fatih6761

Linuxta bu olayın sınırıda değişebiliyor. Öntanımlı değer 4 pixel. Yani ilk tıkladığınzı nokta ile bıraktığınız nokta arasında 4 pixelden fazla mesafe varsa sürükleme olarak kabul edilir.

muhittin_kaplan

Alıntı Yap(niye öyleyse )
Basılı Tuttuğunda devamlı aynı işi yapmasın diye..

SiVRiSiNEK

Alıntı yapılan: diot - 26 Nisan 2013, 18:07:45
windows formlarında herhangi bir butonun on_click event olayı bırakırken oluşur  (niye öyleyse ) , biz mantıksal olarak  butona bastık diyoruz ama pc demiyor butonu bıraktığın an butona basıldığını anlıyor. Butona basıp parmağı çekmeden mouse hareket ettirip buton dışına çıkarsanız olay gerçekleşmez.

bastığın buton tehlikeli bir iş yapıyor diyelim (önemli bir dosyayı siliyor gibi), butona bastın o anda kafana dank etti son bir şans mouse butonundan parmağını çekmeden sürükleyip buton dışında bıraktın durumu kurtardın :)
fazla zorlamamı oldu yoksa böyle uçurumun kenarından dönen varmıdır?

fatih6761

Alıntı yapılan: SiVRiSiNEK - 27 Nisan 2013, 17:25:43
bastığın buton tehlikeli bir iş yapıyor diyelim (önemli bir dosyayı siliyor gibi), butona bastın o anda kafana dank etti son bir şans mouse butonundan parmağını çekmeden sürükleyip buton dışında bıraktın durumu kurtardın :)
fazla zorlamamı oldu yoksa böyle uçurumun kenarından dönen varmıdır?
Bana çok oluyor hocam :) Aynı anda 4-5 pencereyle çalışırken örneğin bir tarafta forum var bir tarafta proje var, projeye yazacağımı foruma yazıyorum, tam "gönder"e basıyorum,,,, bırakmıyorum çekip sürüklüyorum uzak diyarlara... :)