Skip to main content

Membuat Fungsi Global Yang Berkaitan Dengan Objek Form dan Control

Ada pertanyaan yang muncul dari pembaca sehubungan dengan bagaimana cara membuat fungsi yang berkaitan dengan objek form dan control, dan bisa dipakai di semua form, sehingga tidak perlu mengulang-ulang untuk membuat fungsi yang sama di setiap form.
Berikut ini adalah pertanyaannya:
Function fsBaru()
  CmdBaru.enabled= false
  CmdEdit .enabled= false
  CmdSimpan .enabled= true
  CmdHapus .enabled= false
  CmdBatal .enabled= true
End function
Maf pak... Bagaimana cara agar fungsi diatas menjadi fungsi global (bisa dipakai di setiap form) cmdbaru,cmdsimpan dll.adalah tombol2 yg kita buat tiap form.

Ada beberapa macam solusi. Berikut ini adalah fungsi global yang disimpan dalam modul standar.

Kita ambil contoh yang paling sederhana terlebih dulu.
Function fsBaru(strForm As String, strCtl As String)
  Forms(strForm).Controls(strCtl).Enabled = False
End Function
Cara aplikasinya:
Bila ditaruh di Event On Click tombol perintah Command1, tuliskan fungsi seperti ini:
=fsbaru([Name],"HapusRecord")
di mana [Name] adalah nama form yang sedang terbuka dan aktif (dalam gambar di atas bernama frmRekUtama), sedangkan HapusRecord adalah nama control, dalam hal ini control berupa tombol perintah (command button). Saat sebuah form dibuka dengan mode Form View dan tombol Command11 diklik maka properti Enabled yang ada pada control HapusRecord pada form frmRekUtama akan di-disabled.

Pada gambar di atas, panah merah menunjukkan nama command button control. Panah warna biru menunjukkan variabel strForm yang diisi dengan [Name] atau nama form yang aktif terbuka=frmRekUtama, sedangkan panah warna hijau menujukkan variabel strCtl atau nama control=HapusRecord.

Fungsi di atas juga bisa diaplikasikan di Event Form On Open tapi dengan cara seperti ini:
Private Sub Form_Open(Cancel As Integer)
  fsBaru Me.Name, Me.HapusRecord.Name
End Sub

Bila ada beberapa tombol perintah yang sama di setiap form, maka kita bisa membuat fungsi global seperti ini:
Function fsBaru1(strForm As String)
  Forms(strForm).Controls("HapusRecord").Enabled = False
  Forms(strForm).Controls("TutupForm").Enabled = False
'bila ada control yang mempunyai pola mirip di atas, silakan tambahkan di sini.
End Function
Penjelasan: Properti Enabled pada control yang bernama HapusRecord dan TutupForm di form yang bernama strForm diberi nilai False.
Cara aplikasi fungsi fsBaru1 di atas mirip dengan fungsi fsBaru seperti yang sudah dijelaskan di awal posting ini. Perbedaannya terletak pada jumlah variabel yang dipakai, pada fsBaru1 jumlah variabel yang digunakan ada satu, sedangkan pada fsBaru ada dua.

Cara lain untuk membaca form dan control dapat dilakukan dengan fungsi berikut ini:
Function fsBaru2(strForm As String)
  Dim frm As Form
  Set frm = Forms(strForm)
  With frm
    .Controls("HapusRecord").Enabled = False
    .Controls("TutupForm").Enabled = False
  End With
  Set frm = Nothing
End Function
Bila fungsi fsBaru2 di atas dijalankan, hasilnya sama dengan fungsi fsBaru1. Cara mana yang ingin digunakan silakan pilih saja salah satu.

Comments

Post a Comment

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Relasi Database

Menampilkan Data MySQL dalam Form di Access