TCheckBox Delphi kontrolü açık (işaretli) veya kapalı (işaretsiz) olabilecek bir onay kutusu görüntüler. İşaretli mülk onay kutusunun işaretli olup olmadığını belirtir.
Kullanıcı İşaretli durumunu değiştirmek için onay kutusunu tıklattığında, onay kutusunun OnClick olayı tetiklenir.
Onay Kutusunun İşaretli Mülkünü Değiştirme
Yok olduğundan OnCheckedChanged olayında, muhtemelen program mantığını OnClick olayındaki onay kutusunun işaretli durumuna bağlı olarak işleyeceksiniz.
Ancak, eğer Checked özelliğini programlı olarak değiştirin, OnClick olayı tetiklenir - hiçbir kullanıcı etkileşimi gerçekleşmemiş olsa bile.
OnClick olayını "devre dışı bırakırken" onay kutusunun işaretli özelliğini programlı olarak değiştirmenin (en az) iki yolu vardır.
OnClick İşleyiciyi Çıkarın, Değiştirin İşaretli, Orijinal OnClick işleyiciyi Geri Koyun
Delphi for Win32'de, bir olaya yalnızca bir olay işleyici (yordam) eklenebilir (Win32 için Delphi'de çok noktaya yayın olaylarını taklit etmenin bir yolu olsa da). OnClick olayının bir TCheckBox denetiminin imzası "nesnenin TNotifyEvent = yordamı (Gönderen: TObject) yazın;"
Onay kutusunun durumunu değiştirmeden önce OnClick olayına NIL atarsanız, orijinal OnClick olay işleme yordamına dönerseniz - OnClick olayı tetiklenmez.
prosedür SetCheckedState (const checkBox: TCheckBox; const check: boolean);
var
onClickHandler: TNotifyEvent;
başla
ile Onay Kutusu yapmak
başla
onClickHandler: = OnClick;
OnClick: = sıfır;
İşaretli: = kontrol edin;
OnClick: = onClickHandler;
son;
son;
Bu prosedürün kullanımı basittir:
// İşaretli durumu aç / kapatbaşla
SetCheckedState (CheckBox1, NOT CheckBox1.Checked);
son;
SetCheckedState yukarıdaki CheckBox1 onay kutusunun Checked özelliğini değiştirir.
Korumalı Hack: ClicksDisabled: = true
Bir onay kutusunun Checked özelliğini programlı olarak değiştirdiğinizde, OnClick'in yürütülmesini durdurmanın başka bir yolu da "gizli" (korumalı) ClicksDisabled Emlak.
Checked özelliği her değiştiğinde yürütülen TCheckBox'ın SetState yordamına bakarak, ClicksDisabled doğru değilse OnClick tetiklenir.
ClicksDisabled korumalı olduğundan, kod.
Neyse ki, korumalı hack tekniği bir Delphi kontrolünün bu gizli / korumalı özelliklerine erişmenizi sağlar.
Bir bileşenin erişilen korumalı üyeleri, konu hakkında daha fazla bilgi sağlar.
Yapmanız gereken, TCheckBox'ı ClicksDisabled özelliğini kullanacağınız aynı birimde genişleten basit bir kukla sınıf ilan etmektir.
Ellerinizi ClicksDisabled'a getirdikten sonra, bunu true olarak ayarlamanız, Checked özelliğini değiştirmeniz ve ardından ClicksDisabled öğesini false (varsayılan değer) olarak yeniden ayarlamanız yeterlidir:
tip
TCheckBoxEx = sınıf (TCheckBox);
...
ile TCheckBoxEx (CheckBox1) dobegin
ClicksDisabled: = true;
İşaretli: = İşaretli DEĞİL;
ClicksDisabled: = yanlış;
son;
Not: yukarıdaki kod, korumalı ClicksDisabled özelliğini kullanarak "CheckBox1" adlı onay kutusunun Checked özelliğini değiştirir.
Delphi ile Uygulama Geliştirme
- Delphi Veritabanı Programlama Başlangıç Kılavuzu
- Temel Grafikleri Delphi Uygulamalarına Entegre Etme
- Çalışma Zamanında Denetimleri Taşıma ve Yeniden Boyutlandırma
- Çok İş Parçacıklı Delphi Veritabanı Sorguları