![]() |
|
| |||||||
|
| | Seçenekler |
|
#1
| ||||||
| ||||||
Basit Bir Hesap Makinası Kod ÖrneğiBasit Bir Hesap Makinası Kod Örneği Formumuza 1 buton,2 label,1 text box ekliyoruz.Butonu kopyalayarak 19 tane buton elde ediyoruz bunlarda bildiğimiz hesap makinasının tuşlarını barındırıcak. 'İşlemler yapılmadan önce bir değişkende saklamak için değişken tanımladım Dim temp As Variant 'Eğer sayımız ondalık bir sayı ise virgülün birden fazla kullanılmasını 'engellemek gerekiyor bunun için de bir değişken tanımladım Dim ondalık As Boolean Private Sub Form_KeyPress(KeyAscii As Integer) Dim sTemplate As String 'Basılan tuş virgül olsa da sistem bunu . olarak algılamalı 've birden fazla kullanmamalı ondalık = False 'Aşağıdaki instr fonksiyonunun kullanımı ana sayfa fonksiyonlar kısmında bulunmaktadır. ondalık = InStr(1, Text1.Text, ".") If ondalık <> 0 Then ondalık = True End If If ondalık = True And (KeyAscii = 44 Or KeyAscii = 46) Then KeyAscii = 0 Else 'Aşağıdaki kısımda virgül basılmış olsa da sisteme bunu nokta olarak gönderdik If KeyAscii = 44 Then KeyAscii = 46 End If End If 'Aşağıda ise matematiksel(+-*/=) gibi tuşlara basıldığında işlemi formumuzda 'tasarlamış olduğumuz tuşlara gönderdik If KeyAscii = 47 Then tuşlar_Click (12) If KeyAscii = 42 Then tuşlar_Click (13) If KeyAscii = 45 Then tuşlar_Click (14) If KeyAscii = 43 Then tuşlar_Click (15) If KeyAscii = 13 Then tuşlar_Click (11) 'klavyeden kontrol edilmesini istediğimiz tuşları aşağıya giriyoruz sTemplate = "1234567890,.=" If Not InStr(1, sTemplate, Chr(KeyAscii)) > 0 And KeyAscii <> 13 And KeyAscii <> 8 Then KeyAscii = 0 End Sub Private Sub Text1_Change() 'klavye kullanarak girişte sorunu çözdük ancak aynı sorun form üzerinde maus kullanarak girişte 'devam etmekte bunu da engellemek için yukarıdaki kodları Text1'in change olayına yazıjyoruz ondalık = False ondalık = InStr(1, Text1.Text, ".") If ondalık <> 0 Then tuşlar(10).Enabled = False End If 'klavyeden ondalık sayı girilip backspace tuşuyla silindiğinde .'nın tekrar enable olması gerekir. If Text1.Text = "" Or ondalık = 0 Then tuşlar(10).Enabled = True 'İmlecin focus'tan sonra sürekli rakamların sağında olması için ekranın alamayacağı bir sayı yazdım Text1.SelStart = 20 Text1.SetFocus End Sub Private Sub tuşlar_Click(Index As Integer) 'Hata oluşması durumunda yapılması gereken kodu yazıyorum On Error GoTo hata 'Aşağıda her tuşa basılması ile oluşacak olayları kodluyoruz Select Case Index Case 0 Label1.Caption = 0 'Hesap makinemizin ekranında sayıların yazılmasını sağlıyorum Text1.Text = Text1.Text + Label1.Caption 'Değişken gibi kullandığım Label1 caption'una değeri atıyorum Label1.Caption = Text1.Text 'Bu yaptıklarımı tanımladığım tüm tuşlar için yapıyorum Case 1 Label1.Caption = 1 Text1.Text = Text1.Text + Label1.Caption Label1.Caption = Text1.Text Case 2 Label1.Caption = 2 Text1.Text = Text1.Text + Label1.Caption Label1.Caption = Text1.Text Case 3 Label1.Caption = 3 Text1.Text = Text1.Text + Label1.Caption Label1.Caption = Text1.Text Case 4 Label1.Caption = 4 Text1.Text = Text1.Text + Label1.Caption Label1.Caption = Text1.Text Case 5 Label1.Caption = 5 Text1.Text = Text1.Text + Label1.Caption Label1.Caption = Text1.Text Case 6 Label1.Caption = 6 Text1.Text = Text1.Text + Label1.Caption Label1.Caption = Text1.Text Case 7 Label1.Caption = 7 Text1.Text = Text1.Text + Label1.Caption Label1.Caption = Text1.Text Case 8 Label1.Caption = 8 Text1.Text = Text1.Text + Label1.Caption Case 9 Label1.Caption = 9 Text1.Text = Text1.Text + Label1.Caption Label1.Caption = Text1.Text Case 10 Label1.Caption = "." Text1.Text = Text1.Text + Label1.Caption Label1.Caption = Text1.Text 'Bir işlem asnasında birden fazla virgül veya nokta kullanılmaması için 'Basit bir önlem alıyorum tuşlar(10).Enabled = False Case 11 '= tuşuna basılması durumunda yapılacak işlemleri kodluyorum If Label2.Caption = "/" Then Text1.Text = temp / Val(Text1.Text) ElseIf Label2.Caption = "*" Then Text1.Text = temp * Val(Text1.Text) ElseIf Label2.Caption = "-" Then Text1.Text = temp - Val(Text1.Text) ElseIf Label2.Caption = "+" Then Text1.Text = temp + Val(Text1.Text) End If Case 12 'Label2'nin caption'una da matematiksel işlemleri atıyorum tuşlar(10).Enabled = True Label2.Caption = "/" temp = Val(Text1.Text) Text1.Text = "" Case 13 Label2.Caption = "*" temp = Val(Text1.Text) Text1.Text = "" Case 14 Label2.Caption = "-" temp = Val(Text1.Text) Text1.Text = "" Case 15 Label2.Caption = "+" temp = Val(Text1.Text) Text1.Text = "" Case 16 'Ekran silme işlemi Label1.Caption = "" Text1.Text = "" Case 17 'Karekök işlemi Label1.Caption = 0 Text1.Text = Sqr(Text1.Text) Case 18 '% işlemi Text1.Text = temp * Val(Text1.Text) / 100 Case 19 'Çıkış End End Select 'Disable yapmışolduğum virgül kullanımının hangi durumlarda enabled olacağını belirtiyorum If (Index < 17) And (Index > 10) Then tuşlar(10).Enabled = True hata: 'Eğer hata kodu 11(Sıfıra bölme hatası) ise kullanıcıya mesaj veriyor ve C tuşu basımı gönderiyorum If Err.Number = "11" Then MsgBox "Sıfıra bölme işlemi tanımsızdır.": tuşlar_Click (16) End Sub Eğer hesap makinasını klavyeden kontrol etmek istiyorsanız formun enabled özelliğini true yapın. |
![]() |
| Arama Etiketleri: basit, hesap, kod, makinasi, ornegi |
| Seçenekler | |
| |
Benzer Konular | ||||
| Konu | Konu Açanlar | Forum | Cevaplar | Güncel Mesajlar |
| Basit Bir Hesap Makinesi | B737 | Javascript | 0 | 26-01-2008 04:33 |
| Hesap Makinası (Tam Anlatımlı), Basit ama güzel bir hesap makinası | Celebrian | Visual Basic & Action script | 0 | 24-12-2007 01:20 |
| Elektirik Üreten Fotoğraf Makinası | egitimbilgisi | Donanım Haberleri | 0 | 16-12-2007 03:02 |
| Canon'dan 9 yeni dijital fotoğraf makinası modeli | LeaveMeALoNe | Donanım Haberleri | 0 | 19-11-2007 07:47 |
| Basit bir web servis örneği (toplama işlemi) | kadınca | Visual Basic & Action script | 0 | 08-11-2007 12:04 |
![]() | ![]() |