Programlama ile ilgilenen herkesin ekrana “Hello word” yazdırmasının ardından yaptığı ve yapması da gereken uygulamalardan bir tanesi.
Daha sonra ise Rakam tuşlarından devam edebiliriz. Burada ben tek bir fonksiyon yazıp 10 rakamın da event’ini bu fonksiyona yönlendirmeyi seçtim. Bunun için öncelikle gerekli fonksiyonu yazmalıyız. Bu fonksiyonda object türündeki senderımızı öncelikle button nesnesine dönüştürüyoruz daha sonra ise textbox’ımıza butonun üzerindeki rakamı metin olarak ekliyoruz
Daha sonra ise Tüm rakamları seçtikten sonra Proparties penceresinde Event listesini açıp orana Click eventi olarak, yazdığımız fonksiyonu seçmek.
Artık rakam tuşlarımız çalışıyor. Şİmdi sıra geldi İşlem tuşlarına. Bunun için de aynı yolu izleyebliriz yani önce bir fonksiyon yazmak ve ardından 4 işlem tuşunun Click eventine de aynı fonksiyonu atamak.
İşlem tuşlarımızın içinde ise işlem devamlılığını sağlamak için birkaç küçük ayrıntı var. Örneğin 5+3*5 işlemini hesaplarken artı tuşuna bastığımızda 5 rakamını bir değişkende tutmalıyız fakat * tuşuna bastığımızda ise değişkende tuttuğumuz sayı olan 5 ile yeni girdiğimiz sayı olan 3′ ü bir önceki işlem olan + ile hesap ettirmeli ve çıkan sonucu da hafızada tutulan 3′ ün yerine yazmalıyız. Bu sayede *5 dediğimizde (Bir önceki işlemin sonusu)*5 olmalı. Bunu için de hesap isimli bool tipinde bir değişken tuttum bu değişken sayesinde işlem tuşlarına 1. basışımda sadece sayıyı alır 2. basışımda hesap yapar ve hesap değişkenimi tekrar false yaparım 3. basışımda ise tekrar sayıyı alırım ve hesap değişkenini true yaparım. Böylece sonsuz kere işlemi ard arda yapmış olurum.
Hesap makinemizden ilk sonuçları almamış için son adıma geldik. Şimdi de işlemlerin gerçekleştiği fonksiyonu yazacağız. Bunu fonksiyon olarak yapmamın sebebi ile hem eşittir tuşunun hemde işlem tuşlarının buradaki kodları kullanacak olması.
Fonksiyon oldukça basit sayi1 isimli değişkendeki sayımız ile ekranda yazan sayıyı islem isimli değişkende belirtilen işlem türüne göre işleme sokup sonucu geri döndürecek.
Artık hesap makinemiz tıkır tıkır çalışmakta fakat biz göremiyoruz tabiki çünkü sonucu ekrana yazmadık henüz Bunun için ise eşittir butonumuza diyeceğiz ki en son hesabı da yap ve sonucu ekrana yaz. Çünkü işlem butonlarımız her seferinde bir önceki işlemi yapar ve sonunda son işlem yapılmadan bekler bu yüzden sadece sonuncuyu da yapmasını istiyoruz.
hesap makinemiz bitti diyebiliriz. Her şey çalışıyor. Fakat durun. Ben de dahil olmak üzere çoğu kullanıcı hesap makinesini klavyedeki tuşlar ile kullanır. Bu sebepten bizim de bu özelliği eklememiz yerinde bir karar olacaktır. bunu için ise ekranda hesap makinesi aktif iken bir tuşa basılıp basılmadığını kontrol etmemiz ve tuşa basıldığında programın bize haber vermesi gerek. İşte bu olayı sağlaması için form nesnemizin evetları arasında tam da bize uygun bir grup var KeyDown(tuşa basıldığında), KeyPress(KeyDown’dan sonra) ve KeyUp(parmak tuştan çelikdiğinde). İşte bu evetlardan KeyPress’i kullanarak ihtiyacımız olan tuşa basıldı çağrısını da alabilir ve gerekli kodu o kısımda çalıştırabiliriz.
Form’un key evetlarını kullanabilmemiz için öncelikle form özelliklerinden KeyPreview özelliğini True yapmalıyız ki tuşları dinleyebilelim. daha sonra ise formumuzun evetlarından KeyPress’ e çift tıklayarak kodumuzu yazacağımız fonksiyonu oluşturalım.
Burada kodumuzu yazacağız ama hangi tuşa basıldığını nereden öğreneceğiz ? Diye bir soru oluşacak. İşte bu noktada da şimdiye kadar hep gördüğümüz ama hiç kullanmadığımız fonksiyonların üzerinde parametre olarak tanımlanan e nesnesi bize yardım edecek. Bu nesne eventlar tarafından çağrılan fonksiyonlarda fonksiyonun çağrılmasına sebep olan olayları kayıt altına tutar. Mesela farenin tıklanması, hareket etmesi veya klavyeden bir tuşa basılması. İşte biz de e nesnesini kullanarak hangi tuşun bu fonksiyonun çağrılmasında vesile olduğunu öğreneceğiz. Bunu için e.KeyChar’ı kullanacağız böylelikle basılan tuşun ASCİİ koduna erişebiliyoruz.
Bu fonksiyonun içini doldururken dikkat etmemiz gereken şeyler ise ekrana sadece sayı girişine izin vermek ve işlem tuşları ve ENTER tuşunu özel olarak kontrol ettirmek.
Yazdığınız bu kodlar sayesinde artık hesap makineniz klavyeden de kullanılabiliyor. Her şey bitti geçmiş olsun.
Fakat o da ne!!!
Enter’ a bastığımızda eşittir görevi görmüyor onun yerine saçma sapan işlemler veya sayılar yazıyor. İşte bu bir problem.
Öncelikle sakin olmalı ve debug yapmalıyız. Bu bir davranış ve bir özellik ile kodlamada çözülemeyecek problem yoktur.
Fakat bu problemi debug ile bile zor farkedebilirsiniz. Çünkü KeyPress ten debug yaptığınızda göreceksiniz ki Enter basıldığında progrem hiçnir tuş basılmamış gibi davranıyor. Enterasann !
İşte bunun sebebi ise enter basıldığında enter değilde o an seçili olan butonun tıklanmış olması. Bu problemi çözmek ise çok basit eğer buton seçili olsun istemiyorsanız başka bir nesneyi seçtirirsiniz. Mesela benim seçtiğim nesne üstteki label. Bu seçtirme işlemini de sürekli tekrarlansın ve buton asla seçili kalmaın diye kodumu textbox’ın TextChanged eventına yazıyorum ki ben sayı girdikçe odak labelde kalsın. bunu için gerekli tek satır kod ise: lblIslem.Focus();
Ve artık bu problemimiz de çözüldüğüne göre hesap makinemiz kullanıma hazır bir hale geldi. Kendi yaptığınız hesap makenesini güle güle kullanın.
Genel Görüntü
Daha sonra ise Rakam tuşlarından devam edebiliriz. Burada ben tek bir fonksiyon yazıp 10 rakamın da event’ini bu fonksiyona yönlendirmeyi seçtim. Bunun için öncelikle gerekli fonksiyonu yazmalıyız. Bu fonksiyonda object türündeki senderımızı öncelikle button nesnesine dönüştürüyoruz daha sonra ise textbox’ımıza butonun üzerindeki rakamı metin olarak ekliyoruz
Daha sonra ise Tüm rakamları seçtikten sonra Proparties penceresinde Event listesini açıp orana Click eventi olarak, yazdığımız fonksiyonu seçmek.
Artık rakam tuşlarımız çalışıyor. Şİmdi sıra geldi İşlem tuşlarına. Bunun için de aynı yolu izleyebliriz yani önce bir fonksiyon yazmak ve ardından 4 işlem tuşunun Click eventine de aynı fonksiyonu atamak.
İşlem tuşlarımızın içinde ise işlem devamlılığını sağlamak için birkaç küçük ayrıntı var. Örneğin 5+3*5 işlemini hesaplarken artı tuşuna bastığımızda 5 rakamını bir değişkende tutmalıyız fakat * tuşuna bastığımızda ise değişkende tuttuğumuz sayı olan 5 ile yeni girdiğimiz sayı olan 3′ ü bir önceki işlem olan + ile hesap ettirmeli ve çıkan sonucu da hafızada tutulan 3′ ün yerine yazmalıyız. Bu sayede *5 dediğimizde (Bir önceki işlemin sonusu)*5 olmalı. Bunu için de hesap isimli bool tipinde bir değişken tuttum bu değişken sayesinde işlem tuşlarına 1. basışımda sadece sayıyı alır 2. basışımda hesap yapar ve hesap değişkenimi tekrar false yaparım 3. basışımda ise tekrar sayıyı alırım ve hesap değişkenini true yaparım. Böylece sonsuz kere işlemi ard arda yapmış olurum.
Hesap makinemizden ilk sonuçları almamış için son adıma geldik. Şimdi de işlemlerin gerçekleştiği fonksiyonu yazacağız. Bunu fonksiyon olarak yapmamın sebebi ile hem eşittir tuşunun hemde işlem tuşlarının buradaki kodları kullanacak olması.
Fonksiyon oldukça basit sayi1 isimli değişkendeki sayımız ile ekranda yazan sayıyı islem isimli değişkende belirtilen işlem türüne göre işleme sokup sonucu geri döndürecek.
Artık hesap makinemiz tıkır tıkır çalışmakta fakat biz göremiyoruz tabiki çünkü sonucu ekrana yazmadık henüz Bunun için ise eşittir butonumuza diyeceğiz ki en son hesabı da yap ve sonucu ekrana yaz. Çünkü işlem butonlarımız her seferinde bir önceki işlemi yapar ve sonunda son işlem yapılmadan bekler bu yüzden sadece sonuncuyu da yapmasını istiyoruz.
hesap makinemiz bitti diyebiliriz. Her şey çalışıyor. Fakat durun. Ben de dahil olmak üzere çoğu kullanıcı hesap makinesini klavyedeki tuşlar ile kullanır. Bu sebepten bizim de bu özelliği eklememiz yerinde bir karar olacaktır. bunu için ise ekranda hesap makinesi aktif iken bir tuşa basılıp basılmadığını kontrol etmemiz ve tuşa basıldığında programın bize haber vermesi gerek. İşte bu olayı sağlaması için form nesnemizin evetları arasında tam da bize uygun bir grup var KeyDown(tuşa basıldığında), KeyPress(KeyDown’dan sonra) ve KeyUp(parmak tuştan çelikdiğinde). İşte bu evetlardan KeyPress’i kullanarak ihtiyacımız olan tuşa basıldı çağrısını da alabilir ve gerekli kodu o kısımda çalıştırabiliriz.
Form’un key evetlarını kullanabilmemiz için öncelikle form özelliklerinden KeyPreview özelliğini True yapmalıyız ki tuşları dinleyebilelim. daha sonra ise formumuzun evetlarından KeyPress’ e çift tıklayarak kodumuzu yazacağımız fonksiyonu oluşturalım.
Burada kodumuzu yazacağız ama hangi tuşa basıldığını nereden öğreneceğiz ? Diye bir soru oluşacak. İşte bu noktada da şimdiye kadar hep gördüğümüz ama hiç kullanmadığımız fonksiyonların üzerinde parametre olarak tanımlanan e nesnesi bize yardım edecek. Bu nesne eventlar tarafından çağrılan fonksiyonlarda fonksiyonun çağrılmasına sebep olan olayları kayıt altına tutar. Mesela farenin tıklanması, hareket etmesi veya klavyeden bir tuşa basılması. İşte biz de e nesnesini kullanarak hangi tuşun bu fonksiyonun çağrılmasında vesile olduğunu öğreneceğiz. Bunu için e.KeyChar’ı kullanacağız böylelikle basılan tuşun ASCİİ koduna erişebiliyoruz.
Bu fonksiyonun içini doldururken dikkat etmemiz gereken şeyler ise ekrana sadece sayı girişine izin vermek ve işlem tuşları ve ENTER tuşunu özel olarak kontrol ettirmek.
Yazdığınız bu kodlar sayesinde artık hesap makineniz klavyeden de kullanılabiliyor. Her şey bitti geçmiş olsun.
Fakat o da ne!!!
Enter’ a bastığımızda eşittir görevi görmüyor onun yerine saçma sapan işlemler veya sayılar yazıyor. İşte bu bir problem.
Öncelikle sakin olmalı ve debug yapmalıyız. Bu bir davranış ve bir özellik ile kodlamada çözülemeyecek problem yoktur.
Fakat bu problemi debug ile bile zor farkedebilirsiniz. Çünkü KeyPress ten debug yaptığınızda göreceksiniz ki Enter basıldığında progrem hiçnir tuş basılmamış gibi davranıyor. Enterasann !
İşte bunun sebebi ise enter basıldığında enter değilde o an seçili olan butonun tıklanmış olması. Bu problemi çözmek ise çok basit eğer buton seçili olsun istemiyorsanız başka bir nesneyi seçtirirsiniz. Mesela benim seçtiğim nesne üstteki label. Bu seçtirme işlemini de sürekli tekrarlansın ve buton asla seçili kalmaın diye kodumu textbox’ın TextChanged eventına yazıyorum ki ben sayı girdikçe odak labelde kalsın. bunu için gerekli tek satır kod ise: lblIslem.Focus();
Ve artık bu problemimiz de çözüldüğüne göre hesap makinemiz kullanıma hazır bir hale geldi. Kendi yaptığınız hesap makenesini güle güle kullanın.
Genel Görüntü