Laman

Kamis, 12 April 2012

Program Kalkulator dari Visual Basic

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 sesuka Anda, 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()
   txtDisplay.Text = Left(txtDisplay.Text, Len(txtDisplay.Text) - 1)
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



Tidak ada komentar:

Posting Komentar