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