CheckBox'ı ayarlayın. OnClick Etkinliği Olmadan Kontrol Edildi

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

instagram viewer

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ı