Validasi data kontrol dengan membatasi fokus
Peristiwa Validasi dan properti CausesValidation digunakan bersama-sama untuk mengonfirmasi input ke kontrol sebelum mengizinkan pengguna memindahkan fokus dari kontrol. Misalnya: Pertimbangkan aplikasi dengan beberapa kotak teks dan tombol Bantuan. Ketika setiap kotak teks menerima fokus, Anda ingin mencegah pengguna memindahkan fokus hingga kriteria validasi khusus kotak teks terpenuhi; pengguna untuk memindahkan fokus ketika kotak teks menerima fokus. Tombol Bantuan dapat diklik kapan saja. Untuk melakukannya, tetapkan kriteria validasi dalam peristiwa Validasi dan atur properti CausesValidation tombol Bantuan ke False. Jika properti diatur ke True (pengaturan default), peristiwa Validasi akan terjadi pada kontrol pertama. Jika properti diatur ke False, event Validasi pada kontrol pertama akan terjadi terlebih dahulu.
Peristiwa Validasi lebih cocok untuk memvalidasi entri data dibandingkan peristiwa LostFocus karena peristiwa LostFocus (menurut definisi) terjadi setelah fokus dipindahkan. Sebaliknya, dengan menggunakan kejadian Validasi, Anda dapat mencegah fokus berpindah ke kontrol lain hingga aturan validasi terpenuhi.
kemungkinan kegunaan
Aplikasi entri data perlu melakukan validasi entri data yang lebih kompleks daripada validasi yang disediakan oleh kontrol MaskedEdit atau yang terjadi dalam aturan bisnis.
Formulir tersebut perlu mencegah pengguna menggunakan tombol TAB atau tombol akselerator untuk memindahkan kontrol hingga data telah dimasukkan ke dalam kolom.
Dokumen ActiveX yang berjalan di Internet Explorer memerlukan cara bagi pengguna untuk menyelesaikan pengerjaan formulir sebelum skrip memindahkan fokus secara terprogram.
Kontrol fokus pada acara Validasi
Acara Validasi menyertakan parameter keepfocus. Saat parameter diatur ke True, kontrol tetap fokus. Ini secara efektif mencegah pengguna mengklik kontrol lain.
Menggunakan serangkaian kontrol
Array kontrol adalah sekelompok kontrol dengan nama dan tipe yang sama. Rangkaian peristiwa mereka juga sama. Array kontrol harus memiliki setidaknya satu elemen, dan jumlah elemen dapat ditingkatkan dalam cakupan yang diizinkan oleh sumber daya sistem dan memori, ukuran array juga bergantung pada memori dan sumber daya Windows yang diperlukan oleh setiap kontrol; Nilai indeks maksimum yang tersedia dalam array kontrol adalah 32767. Elemen dalam array kontrol yang sama memiliki pengaturan propertinya sendiri. Kegunaan umum dari array kontrol mencakup penerapan kontrol menu dan pengelompokan tombol opsi.
Perhatikan bahwa Visual Basic menyertakan kemampuan untuk secara dinamis menambahkan kontrol yang tidak direferensikan ke koleksi Kontrol pada saat run time. Topik ini hanya mengacu pada kontrol referensi yang ditambahkan pada waktu desain dengan memotong dan menempelkan kontrol ke formulir. Untuk informasi selengkapnya tentang menambahkan kontrol pada waktu proses, lihat topik referensi "Tambahkan metode (Koleksi Kontrol)" dan "Tambahkan metode (Koleksi Lisensi)".
Mengapa menggunakan array kontrol
Pada waktu desain, menambahkan kontrol menggunakan array kontrol menghabiskan lebih sedikit sumber daya dibandingkan menambahkan beberapa kontrol dengan tipe yang sama langsung ke formulir. Array kontrol juga berguna ketika Anda ingin beberapa kontrol berbagi kode. Misalnya, jika Anda membuat array kontrol yang berisi tiga tombol opsi, kode yang sama akan dieksekusi terlepas dari tombol mana yang diklik.
Untuk membuat instance kontrol baru pada waktu proses, kontrol baru harus menjadi anggota array kontrol. Saat menggunakan array kontrol, setiap anggota baru mewarisi prosedur acara publik array.
Tidak mungkin membuat kontrol baru saat runtime menggunakan mekanisme array kontrol, karena setiap kontrol baru mewarisi prosedur kejadian yang ditulis untuk array tersebut. Misalnya, jika Anda memiliki beberapa kotak teks di formulir Anda, dan setiap kotak teks menerima nilai tanggal, Anda bisa membuat array kontrol sehingga semua kotak teks berbagi kode validasi yang sama.
Contoh aplikasi: Calc.vbp
Contoh aplikasi Kalkulator yang ditunjukkan pada Gambar 7.2 (terdaftar di direktori Samples!Alink(vbsamples)) berisi dua array kontrol—tombol numerik dan tombol tindakan.
Perhatikan bagaimana contoh menggunakan sintaks objek(indeks) untuk mereferensikan setiap kontrol. Tentukan nilai indeks saat membuat kontrol. Faktanya, menentukan indeks sembarang untuk suatu kontrol pada waktu desain akan menjadikan kontrol sebagai bagian dari array.
Properti Index membedakan elemen dalam array kontrol. Ketika kontrol dalam array mengenali suatu peristiwa, Visual Basic memanggil prosedur peristiwa publik dan meneruskan parameter (nilai properti Indeks) untuk mengidentifikasi kontrol mana yang mengenali peristiwa tersebut.
Misalnya, baris kode pertama dalam prosedur event Number_Click terlihat seperti ini:
PRivateSubNumber_Click(IndexAsInteger)
Jika Angka(0) mengidentifikasi peristiwa, VisualBasic meneruskan 0 sebagai parameter indeks, dan jika Angka(1) mengidentifikasi peristiwa, VisualBasic meneruskan 1 sebagai parameter indeks. Berbeda dengan nilai indeks, sisa kode Number_Click yang dieksekusi sama untuk Number(0) hingga Number(9).
Buat array kontrol pada waktu desain
Ada tiga cara untuk membuat array kontrol pada waktu desain:
1. Berikan nama yang sama pada beberapa kontrol.
2. Salin kontrol yang ada dan tempelkan pada formulir.
3. Atur properti Indeks kontrol ke nilai bukan Null.
Perhatikan bahwa array kontrol menu harus dibuat di Editor Menu. Untuk informasi lebih lanjut tentang operasi ini, lihat "Membuat dan Memodifikasi Menu pada Run Time" di Bab 6, "Membuat Antarmuka Pengguna".
Untuk menambahkan elemen array kontrol dengan mengubah nama kontrol:
1. Gambarkan kontrol yang akan ditambahkan ke dalam array kontrol (harus berjenis kontrol yang sama) untuk menentukan kontrol mana yang akan menjadi elemen pertama dalam array.
2. Pilih kontrol dan ubah nilai pengaturan Nama ke nilai pengaturan Nama elemen pertama array.
3. Saat Anda memasukkan nama yang ada untuk sebuah kontrol dalam array, Visual Basic akan menampilkan kotak dialog yang menanyakan konfirmasi apakah Anda ingin membuat array kontrol. Pada titik ini pilih "OK" untuk mengonfirmasi operasi.
Misalnya, jika elemen pertama dari array kontrol bernama cmdCtlArr, pilih CommandButton, tambahkan ke array, dan tetapkan namanya menjadi cmdCtlArr. Pada saat ini, pesan berikut akan ditampilkan: "Kontrol bernama 'cmdCtlArr'. sudah ada. . Apakah Anda ingin membuat array kontrol?" Pilih OK untuk mengonfirmasi operasi.
Kontrol yang ditambahkan dengan cara ini hanya membagikan properti Nama dan tipe kontrol lainnya yang memiliki nilai yang sama seperti saat kontrol pertama kali diambil.
Untuk menambahkan elemen array kontrol dengan menyalin kontrol yang ada:
1. Gambarkan kontrol dalam array kontrol.
2. Saat kontrol menjadi fokus, pilih perintah "Salin" di menu "Edit".
3. Pada menu "Edit", pilih perintah "Tempel". Visual Basic akan menampilkan kotak dialog yang menanyakan apakah akan mengonfirmasi pembuatan array kontrol. Pilih OK untuk mengonfirmasi operasi. Nilai indeks yang ditetapkan ke kontrol adalah 1. Kontrol pertama yang diambil memiliki nilai indeks 0.
Nilai indeks setiap elemen array baru sama dengan urutan penambahannya ke array kontrol. Saat Anda menambahkan kontrol seperti ini, sebagian besar properti visual, seperti tinggi, lebar, dan warna, disalin dari kontrol pertama dalam array ke kontrol baru.
Tambahkan array kontrol saat runtime
Pada saat run time, Anda dapat menggunakan pernyataan Load dan Unload untuk menambah dan menghapus kontrol dari array kontrol. Namun, kontrol yang ditambahkan harus berupa elemen dari array kontrol yang ada. Anda harus membuat kontrol dengan (dalam banyak kasus) properti Indeks 0 pada waktu desain, dan kemudian menggunakan sintaks berikut pada waktu proses:
Saat memuat elemen baru dari array kontrol, sebagian besar pengaturan properti akan disalin dari elemen yang ada dalam array dengan subskrip terkecil—dalam hal ini, elemen dengan indeks 0. Karena pengaturan properti Visible, Index, dan TabIndex tidak secara otomatis disalin ke elemen baru dalam array kontrol, agar kontrol yang baru ditambahkan terlihat, properti Visible harus diatur ke True.
Perhatikan bahwa Visual Basic akan menghasilkan kesalahan ketika mencoba menggunakan pernyataan Load pada nilai indeks yang sudah ada dalam array.
Poin pentingnya adalah bahwa pernyataan Unload dapat digunakan untuk menghapus semua kontrol yang dibuat oleh pernyataan Load. Namun, Unload tidak dapat menghapus kontrol yang dibuat pada waktu desain, terlepas dari apakah kontrol tersebut merupakan bagian dari array kontrol.
Skema kontrol: menambah dan menghapus kontrol dalam array kontrol
Cara menambah dan menghapus kontrol pada saat run time ditunjukkan dalam contoh array kontrol, di mana kontrol tersebut merupakan tombol opsi. Berdasarkan contoh ini, pengguna dapat menambahkan tombol opsi untuk mengubah warna latar belakang kotak gambar.
Seperti yang ditunjukkan pada Gambar 7.3, mulai formulir, lalu gambar kotak gambar, label, dua tombol opsi, dan tiga tombol perintah di atasnya.
Mengontrol peristiwa aplikasi array
Selanjutnya, Anda harus menambahkan prosedur acara untuk tombol opsi dan tombol perintah. Mulai aplikasi setelah menambahkan deklarasi formulir:
DimMaxIdAsInteger
Semua tombol opsi berbagi prosedur acara Klik:
PrivateSuboptButton_Click(IndexAsInteger)
picDisplay.BackColor=QBColor(Indeks 1)
Sub Akhir
Tambahkan tombol opsi baru melalui prosedur acara Klik tombol perintah "Tambah". Dalam contoh ini, sebelum mengeksekusi pernyataan Load, kode memeriksa untuk memastikan bahwa tidak lebih dari sepuluh tombol opsi dimuat. Setelah kontrol dimuat, properti Visible-nya harus disetel ke True.
PrivateSubcmdTambahkan_Klik()
IfMaxId=0ThenMaxId=1 'Setel semua tombol opsi.
IfMaxId>8ThenExitSub 'Hanya sepuluh tombol yang diperbolehkan.
MaxId=MaxId 1 'Jumlah tombol bertambah.
LoadoptButton(MaxId) 'Buat tombol baru.
optButton(0).SetFocus 'Opsi tombol reset.
'Tempatkan tombol baru di bawah tombol sebelumnya.
optButton(MaxId).Top=optButton(MaxId-1)._
400 teratas
optButton(MaxId).Visible=Benar 'Tampilkan tombol baru.
optButton(MaxId).Caption=Opsi&MaxId 1
Sub Akhir
Hapus tombol opsi melalui prosedur acara Klik tombol perintah Hapus:
PrivateSubcmdDelete_Click()
IfMaxId<=1ThenExitSub 'Pertahankan dua tombol pertama.
UnloadoptButton(MaxId) 'Hapus tombol terakhir.
MaxId=MaxId-1 'Jumlah tombol berkurang.
optButton(0).SetFocus 'Opsi tombol reset.
Sub Akhir
Akhiri aplikasi melalui prosedur acara Klik tombol Tutup:
PrivateSubcmdClose_Click()
Bongkar Saya
Sub Akhir
->