TCheckBox Delphi control menampilkan kotak centang yang bisa dihidupkan (dicentang) atau dimatikan (tidak dicentang). Itu Properti diperiksa menentukan apakah kotak centang dicentang atau tidak.
Saat pengguna mengklik kotak centang untuk mengubah negara yang Dicentangnya, acara OnClick untuk kotak centang tersebut diaktifkan.
Mengubah Properti yang Dicentang Kotak Centang
Karena tidak ada OnCheckedChanged acara, Anda mungkin akan menangani logika program tergantung pada keadaan dicentang kotak centang di acara OnClick-nya.
Namun, jika Anda pemrograman mengubah properti Diperiksa, acara OnClick akan dipecat - meskipun tidak ada interaksi pengguna.
Ada (setidaknya) dua cara untuk secara terprogram mengubah properti yang dicentang dari kotak centang sambil "menonaktifkan" peristiwa OnClick.
Hapus OnClick Handler, Ubah Dicentang, Pasang Kembali handler OnClick Asli
Dalam Delphi untuk Win32, suatu peristiwa hanya dapat memiliki satu pengendali acara (prosedur) yang melekat padanya (meskipun ada cara untuk meniru acara multicast di Delphi untuk Win32). Tanda tangan peristiwa OnClick dari kontrol TCheckBox adalah "ketik TNotifyEvent = prosedur (Pengirim: TObject) objek;"
Jika Anda menetapkan NIL ke acara OnClick sebelum Anda mengubah status kotak centang, lalu kembali ke prosedur penanganan acara OnClick yang asli - acara OnClick tidak akan dipecat.
prosedur SetCheckedState (const checkBox: TCheckBox; const periksa: boolean);
var
onClickHandler: TNotifyEvent;
mulai
dengan kotak centang melakukan
mulai
onClickHandler: = OnClick;
OnClick: = nol;
Diperiksa: = periksa;
OnClick: = onClickHandler;
akhir;
akhir;
Penggunaan prosedur ini sederhana:
// beralih kondisi yang diperiksamulai
SetCheckedState (CheckBox1, NOT CheckBox1.Checked);
akhir;
SetCheckedState di atas mengaktifkan properti Checked dari kotak centang Checkbox1.
Hack yang dilindungi: ClicksDisabled: = true
Cara lain untuk menghentikan OnClick dari mengeksekusi, ketika Anda secara terprogram mengubah properti yang dicentang dari kotak centang, adalah untuk mengambil keuntungan dari "tersembunyi" (dilindungi) ClicksDisabled Properti.
Dengan melihat prosedur Setstate TCheckBox yang dieksekusi setiap kali properti Checked berubah, OnClick dipecat jika ClicksDisabled tidak benar.
Karena ClicksDisabled dilindungi, Anda tidak dapat mengaksesnya dari kode.
Untungnya, teknik hack yang dilindungi memungkinkan Anda untuk mengakses properti-properti yang tersembunyi / terlindungi dari kontrol Delphi.
Mengakses anggota komponen yang dilindungi memberikan lebih banyak informasi tentang subjek.
Yang perlu Anda lakukan adalah mendeklarasikan kelas dummy sederhana yang memperpanjang TCheckBox di unit yang sama di mana Anda akan menggunakan properti ClicksDisabled.
Setelah Anda mendapatkan ClicksDisabled, cukup setel menjadi true, ubah properti Checked, lalu setel ClicksDisabled kembali ke false (nilai default):
Tipe
TCheckBoxEx = class (TCheckBox);
...
dengan TCheckBoxEx (CheckBox1) dobegin
ClicksDisabled: = true;
Dicentang: = TIDAK Dicentang;
ClicksDisabled: = false;
akhir;
Catatan: kode di atas mengaktifkan properti Diperiksa dari kotak centang bernama "Kotak centang1" menggunakan properti ClicksDisabled yang dilindungi.
Membangun Aplikasi dengan Delphi
- Panduan Pemula untuk Pemrograman Basis Data Delphi
- Mengintegrasikan Grafik Dasar ke dalam Aplikasi Delphi
- Cara Memindahkan dan Mengubah Ukuran Kontrol saat Jalankan
- Query Database Delphi Multithreaded