Nustatykite „CheckBox“. Tikrinta be „OnClick“ įvykio

„TCheckBox“ Delfi valdymas rodo žymimąjį laukelį, kuris gali būti įjungtas (pažymėtas) arba išjungtas (nepažymėtas). Patikrintas turtas nurodo, ar žymimasis laukelis pažymėtas, ar ne.

Kai vartotojas spustelėja žymimąjį laukelį, kad pakeistų jo pažymėtą būseną, žymės langelio „OnClick“ įvykis suaktyvinamas.

Pažymėto langelio pažymėtos nuosavybės pakeitimas

Kadangi nėra OnCheckedChanged įvykį, tikriausiai tvarkysite programos logiką, priklausomai nuo pažymėtos žymės langelio būsenos „OnClick“ įvykyje.

Tačiau jei jūs programiškai pakeisdami patikrintą nuosavybę, „OnClick“ įvykis bus suaktyvintas - nors jokia vartotojo sąveika nebuvo vykdoma.

Yra (bent jau) du būdai, kaip programiškai pakeisti pažymėtą žymimojo laukelio ypatybę, „išjungiant“ „OnClick“ įvykį.

Pašalinkite „OnClick“ tvarkyklę, pakeiskite pažymėtą, padėkite originalią „OnClick“ tvarkyklę

„Delphi for Win32“ renginyje gali būti tik vienas įvykių tvarkytojas (procedūra) (net jei yra būdas pamėgdžioti daugialypės terpės įvykius „Delphi for Win32“). „OnClick“ įvykio „TCheckBox“ valdiklio parašas yra „tipo TNotifyEvent = objekto procedūra (Siuntėjas: TObject)“;

instagram viewer

Jei prieš keisdami žymimojo laukelio būseną priskirsite NIL įvykiui, tada pakeiskite pradinę „OnClick“ įvykių tvarkymo procedūrą - „OnClick“ įvykis nebus paleistas.

procedūra „SetCheckedState“ (const „checkBox“: „TCheckBox“; const patikrinti: boolean);

var

 „onClickHandler“: „TNotifyEvent“;

prasideda

su žymimasis langelis daryti

prasideda

 onClickHandler: = OnClick;

 „OnClick“: = nulis;

Patikrinta: = patikrinti;
„OnClick“: = onClickHandler;
galas;

galas; 

Šia procedūra naudotis paprasta:

// perjungti Patikrinta būsenaprasideda

 „SetCheckedState“ („CheckBox1“, NE „CheckBox1. patikrinta“);

galas;

Aukščiau esančioje „SetCheckedState“ perjungiama žymimojo laukelio „CheckBox1“ pažymėta nuosavybė.

Apsaugotas įsilaužimas: „ClicksDisabled“ = tiesa

Kitas būdas sustabdyti „OnClick“ vykdymą, kai programiškai keičiate žymimąjį laukelį Patikrinta nuosavybė - pasinaudoti „paslėptu“ (saugomu) „ClicksDisabled“ nuosavybė.

Pažvelgus į „TCheckBox“ „SetState“ procedūrą, kuri vykdoma kiekvieną kartą pasikeitus patikrintai ypatybei, „OnClick“ atleidžiama, jei „ClicksDisabled“ netiesa.

Kadangi „ClicksDisabled“ yra apsaugotas, negalite jo pasiekti iš savo kodas.

Laimei, apsaugota įsilaužimo technika suteikia prieigą prie tų paslėptų / apsaugotų „Delphi“ valdiklio savybių.

Prieiga prie apsaugotų komponento narių suteikia daugiau informacijos šia tema.

Tai, ką jums reikia padaryti, yra paskelbti paprastą manekenų klasę, pratęsiančią „TCheckBox“ tame pačiame vienete, kur naudosite „ClicksDisabled“ nuosavybę.

Paleidę rankas į „ClicksDisabled“, tiesiog nustatykite ją į true, pakeiskite „Patikrinta“ nuosavybę, tada nustatykite „ClicksDisabled“ atgal į false (numatytoji vertė):

tipo


 TCheckBoxEx = klasė (TCheckBox);


 ...


su „TCheckBoxEx“ („CheckBox1“) dobeginas

 „ClicksDisabled“: = tiesa;

 Patikrinta: = Nepatikrinta;

 „ClicksDisabled“ = klaidinga;

galas;

Pastaba: aukščiau pateiktu kodu perjungiama žymimojo laukelio „CheckBox1“ pažymėta nuosavybė naudojant apsaugotą „ClicksDisabled“ nuosavybę.

Programų kūrimas naudojant „Delphi“

  • „Delphi“ duomenų bazių programavimo pradedantiesiems vadovas
  • Pagrindinių diagramų integravimas į „Delphi“ programas
  • Kaip perkelti ir pakeisti valdiklių dydį vykdymo metu
  • Daugiasluoksnės „Delphi“ duomenų bazės užklausos