Setel kotak centang. Diperiksa Tanpa Acara OnClick

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;"

instagram viewer

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
instagram story viewer