Ορίστε CheckBox. Έλεγχος χωρίς το συμβάν OnClick

click fraud protection

Το TCheckBox Δελφοί ο έλεγχος εμφανίζει ένα πλαίσιο ελέγχου που μπορεί να είναι (ελέγχεται) ή απενεργοποιημένο (μη ελεγμένο). ο Έλεγχος ιδιοκτησίας καθορίζει αν το πλαίσιο ελέγχου είναι επιλεγμένο ή όχι.

Όταν ο χρήστης κάνει κλικ στο πλαίσιο ελέγχου για να αλλάξει την κατάσταση ελέγχου, ενεργοποιείται το συμβάν OnClick για το πλαίσιο ελέγχου.

Αλλαγή της ιδιότητας ελέγχου του Checkbox

Δεδομένου ότι δεν υπάρχει OnCheckChanged, πιθανότατα θα χειριστείτε τη λογική του προγράμματος ανάλογα με την κατάσταση ελέγχου του πλαισίου ελέγχου στο συμβάν OnClick.

Ωστόσο, αν εσείς να αλλάξει προγραμματικά την ιδιότητα Έλεγχος, το συμβάν OnClick θα εκτοξευθεί - παρόλο που δεν πραγματοποιήθηκε αλληλεπίδραση χρήστη.

Υπάρχουν (τουλάχιστον) δύο τρόποι να αλλάξετε με προγραμματισμό την ελεγχόμενη ιδιότητα του πλαισίου ελέγχου ενώ "απενεργοποιεί" το συμβάν OnClick.

Κατάργηση χειριστηρίου OnClick, Αλλαγή ελέγχου, Επιστροφή του αρχικού χειριστηρίου OnClick

Στους Delphi για το Win32, ένα συμβάν μπορεί να έχει μόνο ένα χειριστή συμβάντος (διαδικασία) συνδεδεμένο με αυτό (παρόλο που υπάρχει ένας τρόπος να μιμηθούν γεγονότα multicast στους Δελφούς για το Win32). Η υπογραφή του συμβάντος OnClick ενός ελέγχου TCheckBox είναι "τύπου TNotifyEvent = διαδικασία (Sender: TObject) του αντικειμένου"

instagram viewer

Εάν αντιστοιχίσετε το NIL στο συμβάν OnClick προτού αλλάξετε την κατάσταση του πλαισίου ελέγχου και μετά επιστρέψετε στην αρχική διαδικασία χειρισμού συμβάντων OnClick - το συμβάν OnClick δεν θα απολυθεί.

διαδικασία SetCheckedState (const checkbox: TCheckBox; const έλεγχος: boolean);

var

 onClickHandler: TNotifyEvent;

ξεκινήσει

με checkbox κάνω

ξεκινήσει

 onClickHandler: = OnClick;

 OnClick: = μηδέν;

Έλεγχος: = έλεγχος.
OnClick: = onClickHandler;
τέλος;

τέλος; 

Η χρήση αυτής της διαδικασίας είναι απλή:

// εναλλαγή κατάσταση ελέγχουξεκινήσει

 SetCheckedState (CheckBox1, NOT CheckBox1.Checked);

τέλος;

Το SetCheckedState παραπάνω ενεργοποιεί την ιδιότητα Έλεγχος του πλαισίου ελέγχου CheckBox1.

Προστατευμένη απόκριση: ClicksDisabled: = true

Ένας άλλος τρόπος να σταματήσετε την εκτέλεση του OnClick, όταν προγραμματίζετε να αλλάξετε την ιδιότητα Έλεγχος ενός πλαισίου ελέγχου, είναι να επωφεληθείτε από το "κρυφό" (προστατευμένο) ΚλικΕνεργοποιημένα ιδιοκτησία.

Με την εξέταση της διαδικασίας SetState του TCheckBox που εκτελείται κάθε φορά που αλλάζει η ιδιότητα Checked, ενεργοποιείται το OnClick αν δεν είναι αληθές το ClicksDisabled.

Από τη στιγμή που το ClicksDisabled προστατεύεται, δεν μπορείτε να έχετε πρόσβαση από το κώδικας.

Ευτυχώς, η τεχνική προστατευμένου hack επιτρέπει την πρόσβαση σε αυτές τις κρυφές / προστατευμένες ιδιότητες ενός ελέγχου Delphi.

Η προσπέλαση προστατευμένων μελών ενός εξαρτήματος παρέχει περισσότερες πληροφορίες για το θέμα.

Αυτό που πρέπει να κάνετε είναι να δηλώσετε μια απλή ανδρική κλάση που επεκτείνει το TCheckBox στην ίδια μονάδα όπου θα χρησιμοποιήσετε την ιδιότητα ClicksDisabled.

Μόλις πάρετε τα χέρια σας στο ClicksDisabled, απλώς το ορίστε στο true, αλλάξτε την ιδιότητα Checked και, στη συνέχεια, ορίστε τα ClicksDisabled πίσω στην false (προεπιλεγμένη τιμή):

τύπος


 TCheckBoxEx = κλάση (TCheckBox);


 ...


με TCheckBoxEx (CheckBox1) dobegin

 ClicksDisabled: = true;

 Έλεγχος: = NOT Έλεγχος;

 ClicksDisabled: = false;

τέλος;

Σημείωση: Ο παραπάνω κώδικας αλλάζει την ιδιότητα Έλεγχος του πλαισίου ελέγχου που ονομάζεται "CheckBox1" χρησιμοποιώντας την προστατευμένη ιδιότητα ClicksDisabled.

Δημιουργία εφαρμογών με τους Δελφούς

  • Οδηγός αρχαρίων για τον προγραμματισμό βάσης δεδομένων Delphi
  • Ενσωμάτωση των βασικών διαγραμμάτων στις εφαρμογές των Δελφών
  • Πώς να μετακινήσετε και να αλλάξετε το μέγεθος των στοιχείων ελέγχου κατά το χρόνο εκτέλεσης
  • Πολλαπλά ερωτήματα βάσης δεδομένων για τα Delphi
instagram story viewer