Halaman

Sabtu, 30 Oktober 2010

Kalkulator Sederhana Bag.2

Program kalkulator adalah program standar yang sudah tersedia di Microsoft Windows. Tetapi, tak ada
salahnya jika kita mencoba membuat kalkulator sendiri dengan Microsoft Visual Basic 6.0.
Pertama-tama, buatlah sebuah form sesuai selera Anda, yang bentuknya kurang lebih seperti
kalkulator standar Windows, seperti ini:




Untuk properties dari masing-masing objek, saya contohkan seperti dibawah ini, dengan letak
masing-masing objek disesuaikan dengan gambar diatas.



Textbox 1:
   (Name) : txtDisplay
   Alignment: 1-Right Justify
   Text : (kosongkan)
   Maxlength : 12


Command Button 1:
   (Name) : cmdAngka
   Index : 1
   Caption : 1


Command Button 2:
   (Name) : cmdAngka
   Index : 2
   Caption : 2


Command Button 3:
   (Name) : cmdAngka
   Index : 3
   Caption : 3


Command Button 4:
   (Name) : cmdAngka
   Index : 4
   Caption : 4


Command Button 5:
   (Name) : cmdAngka
   Index : 5
   Caption : 5


Command Button 6:
   (Name) : cmdAngka
   Index : 6
   Caption : 6


Command Button 7:
   (Name) : cmdAngka
   Index : 7
   Caption : 7


Command Button 8:
   (Name) : cmdAngka
   Index : 8
   Caption : 8


Command Button 9:
   (Name) : cmdAngka
   Index : 9
   Caption : 9



Command Button 10:
   (Name) : cmdAngka
   Index : 0
   Caption : 0


Command Button 11:
   (Name) : cmdPlusMinus
   Caption : +/-


Command Button 12:
   (Name) : cmdKoma
   Caption : .


Command Button 13:
   (Name) : cmdOperator
   Index : 1
   Caption : +


Command Button 14:
   (Name) : cmdOperator
   Index : 2
   Caption : -


Command Button 15:
   (Name) : cmdOperator
   Index : 3
   Caption : x


Command Button 16:
   (Name) : cmdOperator
   Index : 4
   Caption : /


Command Button 17:
   (Name) : cmdClearEntry
   Caption : CE


Command Button 18:
   (Name) : cmdClear
   Caption : C


Command Button 19:
   (Name) : cmdSamaDengan
   Caption : =


Berikutnya, Anda tinggal membuat coding dari kalkulator tersebut. Jika Anda mengikuti semua
setting properties seperti diatas, maka codingnya saya contohkan seperti ini:

Option Explicit
Private Hasil As Double
Private Const opNol = 0
Private Const opTambah = 1
Private Const opKurang = 2
Private Const opKali = 3

Private Const opBagi = 4
Private Operator As Integer
Private NilaiBaru As Boolean


' untuk menghapus karakter terakhir
Private Sub Hapus()
Dim txt As String
Dim min_len As Integer



txt = txtDisplay.Text
If Left$(txt, 1) = "-" Then
   min_len = 2
Else
   min_len = 1
End If

If Len(txt) > min_len Then
   txtDisplay.Text = Left$(txt, Len(txt) - 1)
Else
   txtDisplay.Text = "0"
End If
End Sub


' hapus angka, hasil terakhir dan operator
Private Sub cmdClear_Click()
   cmdClearEntry_Click
   Hasil = 0
   Operator = opNol
End Sub

' hapus angka
Private Sub cmdClearEntry_Click()
   txtDisplay.Text = ""
End Sub

' menambahkan koma (desimal)
Private Sub cmdKoma_Click()
   If InStr(txtDisplay.Text, ".") Then
        Beep
   Else
        If NilaiBaru Then
            txtDisplay.Text = "."
            NilaiBaru = False
   Else
            txtDisplay.Text = txtDisplay.Text & "."
   End If
End If
End Sub

' Menghitung
Private Sub cmdSamaDengan_Click()
Dim HasilBaru As Double

    If txtDisplay.Text = "" Then
         HasilBaru = 0

    Else
         HasilBaru = CDbl(txtDisplay.Text)
     End If
     Select Case Operator
          Case opNol
                Hasil = HasilBaru
          Case opTambah
                Hasil = Hasil + HasilBaru
          Case opKurang
                Hasil = Hasil - HasilBaru
          Case opKali
                Hasil = Hasil * HasilBaru
          Case opBagi
          'Tidak bisa dibagi nol
                  If HasilBaru = 0 Then
                  MsgBox "Tidak bisa dibagi 0", vbOKOnly + vbCritical, "Kalku ERROR"
                  Call cmdClear_Click
                  Else
                  Hasil = Hasil / HasilBaru
                  End If
     End Select
     Operator = opNol
     NilaiBaru = True
     txtDisplay.Text = Format$(Hasil)
End Sub


' menuliskan angka
Private Sub cmdAngka_Click(Index As Integer)
   If NilaiBaru Then
      txtDisplay.Text = Format$(Index)
      NilaiBaru = False
   Else
      txtDisplay.Text = _
      txtDisplay.Text & Format$(Index)
   End If
End Sub

' tombol tambah/kurang/bagi/kali
Private Sub cmdOperator_Click(Index As Integer)
     cmdSamaDengan_Click
          Operator = Index
          NilaiBaru = True
End Sub


' merubah tanda +/-
Private Sub cmdPlusMinus_Click()
   If NilaiBaru Then
       txtDisplay.Text = "-"
   ElseIf Left$(txtDisplay.Text, 1) = "-" Then
       txtDisplay.Text = Right$(txtDisplay.Text, 2)
   Else

       txtDisplay.Text = "-" & txtDisplay.Text
   End If
End Sub



' filter untuk angka saja yg dapat diketikkan
Private Sub Form_KeyPress(KeyAscii As Integer)
     txtDisplay_KeyPress KeyAscii
End Sub

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
     txtDisplay_KeyUp KeyCode, Shift
End Sub

' supaya kursor tetap di kanan
Private Sub txtDisplay_Change()
     txtDisplay.SelStart = Len(txtDisplay.Text)
End Sub

Private Sub txtDisplay_GotFocus()
     txtDisplay_Change
End Sub


' untuk mengetikkan angka di keyboard
Private Sub txtDisplay_KeyPress(KeyAscii As Integer)
Dim ch As String

ch = Chr$(KeyAscii)
Select Case ch
     Case "0"
            cmdAngka_Click 0
     Case "1"
            cmdAngka_Click 1
     Case "2"
            cmdAngka_Click 2
     Case "3"
            cmdAngka_Click 3
     Case "4"
            cmdAngka_Click 4
     Case "5"
            cmdAngka_Click 5
     Case "6"
            cmdAngka_Click 6
     Case "7"
            cmdAngka_Click 7
     Case "8"
            cmdAngka_Click 8
    Case "9"
            cmdAngka_Click 9

    Case "*", "x", "X"
            cmdOperator_Click opKali
    Case "+"
            cmdOperator_Click opTambah
    Case vbCrLf, vbCr, "="

            cmdSamaDengan_Click
    Case "-"
            cmdOperator_Click opKurang
    Case "."
            cmdKoma_Click
    Case "/"
            cmdOperator_Click opBagi
    Case "C", "c"
            cmdClearEntry_Click
End Select
   KeyAscii = 0
End Sub


' untuk ketikan angka di numpad
Private Sub txtDisplay_KeyUp(KeyCode As Integer, Shift As Integer)
      Select Case KeyCode
            Case vbKeyNumpad0
                  cmdAngka_Click 0
            Case vbKeyNumpad1
                  cmdAngka_Click 1
            Case vbKeyNumpad2
                  cmdAngka_Click 2
            Case vbKeyNumpad3
                  cmdAngka_Click 3
            Case vbKeyNumpad4
                  cmdAngka_Click 4
            Case vbKeyNumpad5
                  cmdAngka_Click 5
            Case vbKeyNumpad6
                  cmdAngka_Click 6
            Case vbKeyNumpad7
                  cmdAngka_Click 7
            Case vbKeyNumpad8
                  cmdAngka_Click 8
            Case vbKeyNumpad9
                  cmdAngka_Click 9
            Case vbKeyMultiply
                  cmdOperator_Click opKali
            Case vbKeyAdd
                  cmdOperator_Click opTambah

            Case vbKeySeparator
                  cmdSamaDengan_Click
            Case vbKeySubtract
                  cmdOperator_Click opKurang
            Case vbKeyDivide
                  cmdOperator_Click opBagi
            Case vbKeyDecimal
                  cmdKoma_Click
            Case vbKeyBack, vbKeyDelete
                  Hapus
      End Select
      KeyCode = 0
End Sub


Silahkan modifikasi sendiri program Anda. Dapat saja ditambahkan fungsi yang lain seperti akar, kuadrat atau bahkan trigonometri.


Source code diperoleh dari
www.planetsourcecode.com


Terima kasih & Selamat Mencoba!







Tidak ada komentar:

Posting Komentar