Skip to main content

Membuat Spin Box Menggunakan ActiveX Control

Windows Operating System banyak menggunakan program yang menampilkan spin box untuk memudahkan pengguna berinteraksi dengan komputer, tanpa harus mengetik. Sayangnya, Access tidak menyediakan fitur control berupa spin box seperti halnya control yang berupa text box, combo box, list box, option box, dan sebagainya.
Spin box adalah tombol yang digunakan untuk menaikkan atau menurunkan nilai, kebanyakan berupa angka, yang ada dalam sebuah text box. Contohnya adalah properti Date and Time pada system tray Windows yang akan menampilkan tahun dan waktu dengan menggunakan spin box. Contoh lainnya adalah properti Scheduled Tasks pada Control Panel yang juga menggunakan spin box, seperti pada Gambar 1 di bawah.
Gambar 1
Spin box terdiri dari dua bagian, tombol perintah naik/turun (atau kiri/kanan) dan text box. Tombol perintah naik/turun ini biasa disebut spinner, yang bila ditekan sesuai dengan arah spinner akan mengakibatkan nilai dari text box itu berubah sesuai dengan arah spinner. Umumnya, bila spinner ditekan untuk naik/kanan, maka nilai dalam text box akan bertambah. Sedangkan bila spinner ditekan untuk turun/kiri, maka nilai dalam text box akan berkurang.
Gambar 2
Kita dapat membuat spin box melalui fitur ActiveX Control. ActiveX Control adalah tambahan program yang hanya bisa dijalankan melalui program utama, seperti Windows atau MS Office. Jadi, ActiveX Control bukan merupakan progam yang berdiri sendiri. Untuk menjalankan program yang berupa ActiveX Control, kita harus mengaktifkannya melalui semacam Add On atau bila di Access melalui tombol ActiveX Control yang tersedia di Grup Controls tab Design. Liha Gambar 2 di atas dan 3 di bawah.
Gambar 3
  1. Untuk membuat spin box, terlebih dahulu kita harus membuat form dengan menggunakan Blank form dalam format Design view.
  2. Sisipkan spin button yang ada di ActiveX Control ke blank form. Caranya, tekan tombol ActiveX Control sehingga kotak dialog Insert ActiveX Control akan muncul seperti di Gambar 3. Setelah itu, carilah Microsoft Form 2.0 SpinButton, sorot seperti Gambar 3, dan klik OK untuk menambahkan spin button ke blank form dan kembali ke Design view. Spin button ini digunakan sebagai spinner.
  3. Aturlah properti spin button itu seperti ini:
    1. Name=spbSpinBox
    2. Control Source= bila dikaitkan dengan sebuah record source, isikan nama control source yang ada. Bila tidak, kosongkan apa adanya (unbound).
    3. Untuk  menampilkan spin button vertikal, atur properti lebar dan tinggi dari spin box sbb:
      1. Widht=.2”
      2. Height= 0.241"
      3. Orientation=Auto. Bila Width lebih besar dari Height, maka spin button akan secara otomatis ditampilkan secara horizontal.
    4. Value=biarkan apa adanya
    5. Delay=200, digunakan untuk mengatur jeda waktu saat tombol naik atau turun pada spinner ditekan terus. Semakin besar nilai Delaynya, semakin lama jeda waktu naik atau turun.
    6. Min=atur sesuka hati, atau biarkan apa adanya
    7. Max= atur sesuka hati, atau biarkan apa adanya
    8. SmallChange= atur sesuka hati, atau biarkan apa adanya
    Spinner hanya bisa digunakan pada data yang mempunyai tipe number.
  4. Di sebelah kiri atau kanan dari spin button, sisipkan sebuah text box dengan properti sbb:
    1. Name=txtSpinBox
    2. Control Source= bila dikaitkan dengan sebuah record source, isikan nama control source yang ada. Bila tidak, kosongkan apa adanya (unbound)
Mengenai Control Source yang akan dikaitkan (bind) dengan sebuah field, mana yang akan dipakai di antara spinner atau text box, tergantung pada situasi. Bila field yang akan menjadi Control Source mempunyai tipe number, maka kita bisa mengaitkannya langsung ke Control Source dari spinner atau text box. Sedangkan bila field yang akan menjadi Control Source mempunyai tipe bukan number (contoh tipe: date/time, text, dan sebagainya), maka kita hanya bisa mengaitkan field ke text box. Penggunaan contoh di bawah akan membantu menjelaskan situasi ini.

Contoh 1: Untuk menampilkan data berupa angka pada text box, kita bisa menggunakan kode VBA berikut ini:
Gambar 5
Private Sub spbSpinBox_Change()
  Me.txtSpinBox.Value = Me.spbSpinBox.Value
End Sub
Private Sub txtSpinBox_AfterUpdate()
  Me.spbSpinBox.Value = Me.txtSpinBox.Value
End Sub
Selain itu tambahkan properti Input Mask= 99;;  dari txtSpinBox sebagai persyaratan bahwa nilai yang dimasukkan harus berupa angka, bukan string/text. Angka 99 berarti panjang angka hanya dua digit, jika lebih tambahkan angka 9, dan seterusnya. Jika panjang angka hanya 1 digit, hapus satu angka 9 sehingga hanya menjadi satu digit.

Contoh 2: Kita dapat menampilkan data bulan dengan menggunakan angka atau text. Caranya:
Ubahlah properti spbSpinBox berikut ini:
  1. Min=1
  2. Max=12
Gambar 6
Untuk menampilkan data bulan dengan menggunakan angka, gunakan kode VBA pada contoh 1 di atas. Sedangkan untuk menampilkan data bulan dengan menggunakan text, kosongkan properti Input Mask dari txtSpinBox dan gunakan kode VBA berikut ini:
Private Sub spbSpinBox_Change()
  Me.txtSpinBox.Value = MonthName(Me.spbSpinBox.Value)
End Sub
Private Sub txtSpinBox_AfterUpdate()
  Me.spbSpinBox.Value = Month(CDate("1 " & Me.txtSpinBox.Value))
End Sub
Private Sub txtSpinBox_BeforeUpdate(Cancel As Integer)
  Dim i As Integer, arrTgl(0 To 11) As String, ada As Boolean
  For i = Me.spbSpinBox.Min To Me.spbSpinBox.Max
    arrTgl(i - 1) = MonthName(i)
  Next i
  For i = LBound(arrTgl) To UBound(arrTgl)
    If arrTgl(i) = Me.txtSpinBox Then
      ada = True
      Exit For
    Else
      ada = False
    End If
  Next i
  If Not ada Then
    MsgBox "Tidak ada"
    Cancel = True
    Exit Sub
  End If
End Sub
 
Contoh 3: Kita dapat menampilkan data jenis kelamin dengan menggunakan array text. Caranya:
Ubahlah properti spbSpinBox berikut ini:
  1. Min=0
  2. Max=1
Gambar 7
Untuk menampilkan data jenis kelamin pada text box, kita bisa menggunakan kode VBA berikut ini:
Private Sub spbSpinBox_Change()
  Dim arrJnsKelamin As Variant
  arrJnsKelamin = Array("Laki", "Perempuan")
  Me.txtSpinBox.Value = arrJnsKelamin(Me.spbSpinBox.Value)
End Sub
Private Sub txtSpinBox_AfterUpdate()
  Select Case Me.txtSpinBox
    Case "Laki"
      Me.spbSpinBox = 0
    Case "Perempuan"
      Me.spbSpinBox = 1
  End Select
End Sub
Private Sub txtSpinBox_BeforeUpdate(Cancel As Integer)
  If Me.txtSpinBox <> "Laki" And Me.txtSpinBox <> "Perempuan" Then
    MsgBox "Data yang dimasukkan tidak valid"
    Cancel = True
    Exit Sub
  End If
End Sub

Ketiga contoh di atas bersifat standar, artinya, pada saat pemasukkan data melalui spin box, Access mungkin akan memberikan pesan kesalahan seperti tipe data yang berbeda antara txtSpinBox dengan spbSpinBox, nilai txtSpinBox tidak berada dalam range min dan max dari spbSpinBox, dan sebagainya. Hal ini terjadi karena txtSpinBox dapat diinput manual, tidak dilakukan otomatis melalui spinner. Jadi kalau tidak ingin ada pesan kesalahan yang tidak perlu, maka properti Enabled dari txtSpinBox harus diset No. Prinsip yang harus dipegang adalah properti spbSpinBox.value dan txtSpinBox.value harus mempunyai nilai numerik yang sama.

Comments

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Fungsi Untuk Menghitung Pajak Penghasilan PPh 21 di MS Access

Format Untuk Field Dengan Tipe Data Number dan Currency di MS Access