TCheckBox دلفي يعرض عنصر التحكم مربع اختيار يمكن تشغيله (محدد) أو إيقاف تشغيله (غير محدد). ال ملكية مسجلة يحدد ما إذا كانت خانة الاختيار محددة أم لا.
عندما ينقر المستخدم على مربع الاختيار لتغيير حالته المحددة ، يتم تشغيل حدث OnClick لمربع الاختيار.
تغيير الخاصية المحددة لمربع الاختيار
حيث لا يوجد تم تغييره الحدث ، من المحتمل أنك ستتعامل مع منطق البرنامج الذي يعتمد على الحالة المحددة لمربع الاختيار في حدث OnClick الخاص به.
ومع ذلك ، إذا كنت برمجياً تغيير الخاصية المحددة ، سيتم تشغيل حدث OnClick - على الرغم من عدم حدوث تفاعل من المستخدم.
هناك (على الأقل) طريقتان لتغيير الخاصية المحددة لمربع الاختيار برمجيًا أثناء "تعطيل" حدث OnClick.
إزالة معالج OnClick ، وتغيير الاختيار ، واستعادة معالج OnClick الأصلي
في دلفي لـ Win32 ، يمكن أن يكون للحدث معالج حدث واحد (إجراء) مرتبط به (على الرغم من وجود طريقة لمحاكاة أحداث الإرسال المتعدد في دلفي لـ Win32). توقيع حدث OnClick لعنصر تحكم TCheckBox هو "type TNotifyEvent = الإجراء (المرسل: TObject) للكائن ؛"
إذا قمت بتعيين NIL لحدث OnClick قبل تغيير حالة مربع الاختيار ، فارجع إلى إجراء معالجة حدث OnClick الأصلي - لن يتم تشغيل حدث OnClick.
إجراء SetCheckedState (مقدار ثابت checkBox: TCheckBox ؛ مقدار ثابت تحقق: منطقي) ؛
فار
onClickHandler: TNotifyEvent ؛
ابدأ
مع checkBox فعل
ابدأ
onClickHandler: = OnClick؛
عند النقر: = لا شيء;
فحص: = تحقق ؛
OnClick: = onClickHandler ،
النهاية;
النهاية;
استخدام هذا الإجراء بسيط:
// تبديل تبديل الحالة المحددةابدأ
SetCheckedState (CheckBox1 ، NOT CheckBox1.Checked) ؛
النهاية;
تبديل SetCheckedState أعلاه الخاصية Checked من خانة الاختيار CheckBox1.
الاختراق المحمي: ClicksDisabled: = true
هناك طريقة أخرى لإيقاف OnClick من التنفيذ ، عندما تقوم بتغيير خاصية Checked الخاصة بمربع اختيار برمجيًا ، وهي الاستفادة من "المخفي" (المحمي) نقرات معطلة خاصية.
بالنظر إلى إجراء SetState الخاص بـ TCheckBox والذي يتم تنفيذه كلما تغيرت الخاصية Checked ، يتم تشغيل OnClick إذا لم يكن ClicksDisabled صحيحًا.
نظرًا لأن ClicksDisabled محمي ، فلا يمكنك الوصول إليه من حسابك الشفرة.
لحسن الحظ ، تتيح لك تقنية الاختراق المحمية الوصول إلى تلك الخصائص المخفية / المحمية لعنصر تحكم دلفي.
يوفر الوصول المحمي لأعضاء المكون مزيدًا من المعلومات حول الموضوع.
ما عليك القيام به هو الإعلان عن فئة وهمية بسيطة توسع TCheckBox في نفس الوحدة حيث ستستخدم خاصية ClicksDisabled.
بمجرد الحصول على ClicksDisabled ، ما عليك سوى تعيينه على true ، وتغيير الخاصية Checked ، ثم تعيين ClicksDisabled مرة أخرى إلى false (القيمة الافتراضية):
اكتب
TCheckBoxEx = class (TCheckBox) ،
...
مع TCheckBoxEx (CheckBox1) دوبيجين
ClicksDisabled: = صحيح ؛
محدد: = غير محدد ؛
ClicksDisabled: = false؛
النهاية;
ملاحظة: يبدل الرمز أعلاه الخاصية المحددة لمربع الاختيار المسمى "CheckBox1" باستخدام خاصية ClicksDisabled المحمية.
تطبيقات البناء مع دلفي
- دليل المبتدئين لبرمجة قاعدة بيانات دلفي
- دمج المخططات الأساسية في تطبيقات دلفي
- كيفية تحريك وتغيير حجم عناصر التحكم في وقت التشغيل
- استعلامات قاعدة بيانات دلفي