Excel Forum

Excel Forum (http://www.excel.web.tr/index.php)
-   Access Dersanesi (http://www.excel.web.tr/forumdisplay.php?f=171)
-   -   Basit bir hesap makinası oluşturma. (http://www.excel.web.tr/showthread.php?t=67747)

modalı 12-04-2009 17:16

Basit bir hesap makinası oluşturma.
 
1 Eklenti(ler)
Foruma eklediğim bir uygulamayla ilgili soru soran arkadaşlar var. Onlar için basit bir hesap makinasının yapım aşamalarını ekliyorum. Uygulama ekte.

Önce yeni bir access uygulaması oluşyuruyoruz. Sonra tasarım görünümğnde bir form ekleyip frmHesapmakinasi olarak kydediyoruz.

Form üstüne bir metin kutusu (adı:sayi) ekliyoruz. Daha sonra ise 0-9 arası 10 adet düğme ekliyoruz (adları. b0,b1,...b9). İşlemleri yapacak 6 adet düğme daha ekliyoruz (adları: topla, cikar, carp, bol, esit, clear)

Form üstünde iitediğimiz değişiklikleri ve özellikleri ayarlıyoruz. (Form özelliklerinden biçim sekmesi ayarları.

Formun kod yazma penceresini açarak en üstte iki genel değişken ekliyoruz. (giris ve islem). Eğer sonuçlar diğer formlarda kullanılacak ise yeni bir modülde belirtmemiz gerekiyor.

Numara düğümelerinin klik olaylarının kodlarını şöyle oluşturuyoruz.

Kod:

Private Sub b0_Click()
Me.sayi.Value = Val(Me.sayi.Value) * 10 + 0
End Sub
Private Sub b1_Click()
Me.sayi.Value = Val(Me.sayi.Value) * 10 + 1
End Sub
Private Sub b2_Click()
Me.sayi.Value = Val(Me.sayi.Value) * 10 + 2
End Sub
Private Sub b3_Click()
Me.sayi.Value = Val(Me.sayi.Value) * 10 + 3
End Sub
Private Sub b4_Click()
Me.sayi.Value = Val(Me.sayi.Value) * 10 + 4
End Sub
Private Sub b5_Click()
Me.sayi.Value = Val(Me.sayi.Value) * 10 + 5
End Sub
Private Sub b6_Click()
Me.sayi.Value = Val(Me.sayi.Value) * 10 + 6
End Sub
Private Sub b7_Click()
Me.sayi.Value = Val(Me.sayi.Value) * 10 + 7
End Sub
Private Sub b8_Click()
Me.sayi.Value = Val(Me.sayi.Value) * 10 + 8
End Sub
Private Sub b9_Click()
Me.sayi.Value = Val(Me.sayi.Value) * 10 + 9
End Sub

1 e tıklanınca yani yazılan sayıyı 10 ile çarp 1 ekle
örneğin 123 yazıyosa, 1230 + 1 = 1231
bunu, tıklanınca sayıyı yanına eklemesi için kullanıyoruz.


Böl butonunun klik olayı:

Kod:

Private Sub bol_Click()
If giris > 0 Then
    If islem = "+" Then Me.sayi.Value = Val(giris) + Val(Me.sayi.Value)
    If islem = "-" Then Me.sayi.Value = Val(giris) - Val(Me.sayi.Value)
    If islem = "*" Then Me.sayi.Value = Val(giris) * Val(Me.sayi.Value)
    If islem = "/" Then Me.sayi.Value = Val(giris) / Val(Me.sayi.Value)
End If
giris = Me.sayi.Value
Me.sayi.Value = ""
Me.sayi.SetFocus
islem = "/"
End Sub

Açıklama :
ilk satırda alt kod için giriş yaptık. onu geçiyorum

2-7 satırlar arasında sunu kastediyoruz.
eğer giris değişkenine değer atandıysa, yani daha önceden işlem yapıldıysa sonucu yazdır ve işlem yapmaya devam et. yani programın üstüste işlemler yapabilmesi için gerekli olan kısım.

8. Satır >> giris değişkenine girilen sayıyı aktarıyoruz.
9. Satır >> sayi nesnesini (yazı girilen alan) boşaltıyoruz.
10. Satır >> ve imleci yazı alanına konumlandırıyoruz.
11. Satır >> islem değişkenine / karakterini atıyoruz. (hangi işlemi yapacağını belirlemek için)
12. Alt kod kısmını kapatıyoruz.


diğerleri de aynı şekilde. sadece 11. satırda değişiklik yapıyoruz.


Çarp butonu klik olayı:


Kod:

Private Sub carp_Click()
If giris > 0 Then
If islem = "+" Then Me.sayi.Value = Val(giris) + Val(Me.sayi.Value)
If islem = "-" Then Me.sayi.Value = Val(giris) - Val(Me.sayi.Value)
If islem = "*" Then Me.sayi.Value = Val(giris) * Val(Me.sayi.Value)
If islem = "/" Then Me.sayi.Value = Val(giris) / Val(Me.sayi.Value)
End If
giris = Me.sayi.Value
Me.sayi.Value = ""
Me.sayi.SetFocus
islem = "*"
End Sub



çıkar butonu klik olayı:

Kod:

Private Sub cıikar_Click()
If giris > 0 Then
If islem = "+" Then Me.sayi.Value = Val(giris) + Val(Me.sayi.Value)
If islem = "-" Then Me.sayi.Value = Val(giris) - Val(Me.sayi.Value)
If islem = "*" Then Me.sayi.Value = Val(giris) * Val(Me.sayi.Value)
If islem = "/" Then Me.sayi.Value = Val(giris) / Val(Me.sayi.Value)
End If
giris = Me.sayi.Value
Me.sayi.Value = ""
Me.sayi.SetFocus
islem = "-"
End Sub

Topla butonu klik olayı.

Kod:

Private Sub topla_Click()
If giris > 0 Then
If islem = "+" Then Me.sayi.Value = Val(giris) + Val(Me.sayi.Value)
If islem = "-" Then Me.sayi.Value = Val(giris) - Val(Me.sayi.Value)
If islem = "*" Then Me.sayi.Value = Val(giris) * Val(Me.sayi.Value)
If islem = "/" Then Me.sayi.Value = Val(giris) / Val(Me.sayi.Value)
End If
giris = Me.sayi.Value
Me.sayi.Value = ""
Me.sayi.SetFocus
islem = "+"
End Sub

eşit butonu klik olayı:

Kod:

Private Sub esit_Click()
If islem = "+" Then Me.sayi.Value = Val(giris) + Val(Me.sayi.Value)
If islem = "-" Then Me.sayi.Value = Val(giris) - Val(Me.sayi.Value)
If islem = "*" Then Me.sayi.Value = Val(giris) * Val(Me.sayi.Value)
If islem = "/" Then Me.sayi.Value = Val(giris) / Val(Me.sayi.Value)
End Sub

Açıklama >> burda yapılanı diğer butonlarda birden fazla işlem yapılabilmesi için kullandık.
peki ne yazıyor burda ?? güzel soru
kullanıcı,
+ butonuna tıklayınca islem değişkeni "+" değerini almıştı.
- butonuna tıklayınca islem değişkeni "-" değerini almıştı.
* butonuna tıklayınca islem değişkeni "*" değerini almıştı.
/ butonuna tıklayınca islem değişkeni "/" değerini almıştı.

bu satırlarda da diyorki.
eğer islem değişkeni + ise (yani kullanıcı +ya basmışsa) ilk sayıyla 2. sayıyı topla

eğer işlem değişkeni - ise (yani kullanıcı - ye basmışsa) ilk sayıdan 2. sayıyı çıkar.

bölme ve çarpma da aynı şekilde....


Clear butonu kodları:

Kod:

Private Sub clear_Click()
Me.sayi.Value = 0
islem = ""
giris = 0
End Sub

2.satır >> sayı girdiğimiz alanı temizler.
3. satır >> işlem değişkenini temizler.
4. satır >> giris değişkenini temizler.


Bir de form ilk açılışında sayı metin kutusuna 0 değerini atamamız veya özelliklerden default ayarını 0 yapmamız gerekir.

Kod:

Private Sub Form_Load()
Me.sayi.Value = 0
End Sub

İyi çalışmalar

semih11 12-04-2009 19:29

Çok tesekkür ederim özel mesajdan istemiştim sagolun beni kırmadınız ve yardım ettiniz sizin sayenizde ödevimi yetiştirdim size minnetarım

burrek 14-04-2010 20:33

Bu hesap makınesınde nok ta nıe yok onu nasıl yapıcam...?

İsmail Küçükşengün 15-04-2010 07:59

Sayın Modalı. Paylaşımınıza çok teşekkürler.

Kuruş hanesi için nokta kısmı da ilave edilebilir mi?


Saat 08:13

Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.