Η Γέννηση, η Ζωή και ο Θάνατος μιας Φόρμας Δελφών

Σε Δελφοί, κάθε έργο έχει τουλάχιστον ένα παράθυρο - το κύριο παράθυρο του προγράμματος. Όλα τα παράθυρα μιας εφαρμογής Delphi βασίζονται σε Αντικείμενο TForm.

Μορφή

Φτιάξτε αντικείμενα είναι τα βασικά δομικά στοιχεία μιας εφαρμογής Delphi, τα πραγματικά παράθυρα με τα οποία ένας χρήστης αλληλεπιδρά όταν εκτελεί την εφαρμογή. Τα έντυπα έχουν τις δικές τους ιδιότητες, τα γεγονότα και τις μεθόδους με τις οποίες μπορείτε να ελέγξετε την εμφάνιση και τη συμπεριφορά τους. Μια φόρμα είναι στην πραγματικότητα ένα στοιχείο Delphi, αλλά σε αντίθεση με άλλα στοιχεία, μια φόρμα δεν εμφανίζεται στην παλέτα στοιχείων.

Συνήθως δημιουργούμε ένα αντικείμενο φόρμας ξεκινώντας μια νέα εφαρμογή (File | New Application). Αυτή η νέα μορφή θα είναι, από προεπιλογή, η κύρια μορφή της εφαρμογής - η πρώτη μορφή που δημιουργήθηκε κατά το χρόνο εκτέλεσης.

Σημείωση: Για να προσθέσετε μια πρόσθετη φόρμα στο έργο Delphi, επιλέξτε Αρχείο | Νέα φόρμα.

Γέννηση

OnCreate
Το συμβάν OnCreate ενεργοποιείται όταν πρώτα δημιουργηθεί ένα TForm, δηλαδή μόνο μία φορά. Η δήλωση που είναι υπεύθυνη για τη δημιουργία της φόρμας είναι στην πηγή του έργου (εάν το έντυπο έχει οριστεί να δημιουργείται αυτόματα από το έργο). Όταν δημιουργείται μια φόρμα και η ιδιότητά της Ορατό είναι αληθινό, εμφανίζονται τα ακόλουθα συμβάντα με την αναφερόμενη σειρά: OnCreate, OnShow, OnActivate, OnPaint.

instagram viewer

Πρέπει να χρησιμοποιήσετε το χειριστήριο συμβάντων OnCreate για να κάνετε, για παράδειγμα, εργασίες προετοιμασίας όπως την κατανομή λιστών συμβολοσειρών.

Οποιαδήποτε αντικείμενα δημιουργούνται στο συμβάν OnCreate θα πρέπει να απελευθερωθούν από το συμβάν OnDestroy.

 Δημιουργία -> OnShow -> OnActivate -> OnPaint -> OnResize -> OnPaint... 

Σε προβολή
Αυτό το συμβάν υποδεικνύει ότι εμφανίζεται η φόρμα. Το OnShow καλείται λίγο πριν εμφανιστεί μια φόρμα. Εκτός από τις κύριες φόρμες, το συμβάν αυτό συμβαίνει όταν ορίζουμε μορφές Visible property στην True ή καλέσουμε τη μέθοδο Show ή ShowModal.

OnActivate
Αυτό το συμβάν καλείται όταν το πρόγραμμα ενεργοποιήσει τη φόρμα - δηλαδή, όταν η φόρμα λαμβάνει την εστίαση εισόδου. Χρησιμοποιήστε αυτό το συμβάν για να αλλάξετε ποιο στοιχείο ελέγχου εστιάζεται στην πραγματικότητα εάν δεν είναι αυτό που επιθυμείτε.

OnPaint, OnResize
Εκδηλώσεις όπως το OnPaint και το OnResize καλούνται πάντα μετά την αρχική δημιουργία της φόρμας, αλλά καλούνται επίσης επανειλημμένα. Το OnPaint εμφανίζεται προτού ζωγραφιστούν οι έλεγχοι στο έντυπο (χρησιμοποιήστε το για ειδική ζωγραφική στο έντυπο).

ΖΩΗ

Η γέννηση μιας φόρμας δεν είναι τόσο ενδιαφέρουσα όσο μπορεί να είναι η ζωή και ο θάνατός της. Όταν δημιουργηθεί η φόρμα σας και όλα τα στοιχεία ελέγχου περιμένουν τα συμβάντα να χειριστούν, το πρόγραμμα εκτελείται μέχρι να προσπαθήσει κάποιος να κλείσει τη φόρμα!

Θάνατος

Μια εφαρμογή που οδηγείται από συμβάντα σταματά να τρέχει όταν όλες οι φόρμες της είναι κλειστές και δεν εκτελείται κανένας κώδικας. Εάν εξακολουθεί να υπάρχει κρυφή φόρμα όταν κλείνει η τελευταία ορατή φόρμα, η εφαρμογή σας φαίνεται να έχει (επειδή δεν υπάρχουν ορατές μορφές), αλλά θα συνεχίσει να τρέχει μέχρι να εμφανιστούν όλες οι κρυφές μορφές κλειστό. Απλά σκεφτείτε μια κατάσταση όπου η κύρια μορφή κρυμμένη νωρίς και όλες οι άλλες μορφές είναι κλειστές.

... OnCloseQuery -> OnClose -> OnDeactivate -> OnHide -> OnDestroy 

OnCloseQuery
Όταν προσπαθούμε να κλείσουμε τη φόρμα χρησιμοποιώντας τη μέθοδο Κλείσιμο ή με άλλα μέσα (Alt + F4), καλείται το συμβάν OnCloseQuery. Έτσι, ο χειριστής συμβάντων για αυτό το συμβάν είναι ο χώρος για να παρακολουθήσετε ένα κλείσιμο μιας φόρμας και να το αποτρέψετε. Χρησιμοποιούμε το OnCloseQuery για να ρωτήσουμε τους χρήστες εάν είναι βέβαιοι ότι θέλουν πραγματικά να κλείσουν τη φόρμα.

διαδικασία TForm1.FormCloseQuery (αποστολέας: TObject; var CanClose: Boolean).

ξεκινήσει

ανMessageDlg('Πραγματικά κλείστε αυτό το παράθυρο;', mtConfirmation, [mbOk, mbCancel], 0) = mrCancel έπειτα CanClose: = Λάθος;

τέλος; 

Ένα πρόγραμμα χειρισμού συμβάντων OnCloseQuery περιέχει μια μεταβλητή CanClose που καθορίζει αν επιτρέπεται να κλείσει μια φόρμα. Ο χειριστής συμβάντων OnCloseQuery μπορεί να ορίσει την τιμή του CloseQuery σε ψευδή (μέσω της παραμέτρου CanClose), διακόπτοντας τη μέθοδο Κλείσιμο.

OnClose
Εάν το OnCloseQuery υποδεικνύει ότι η φόρμα πρέπει να είναι κλειστή, το συμβάν OnClose καλείται.

Το γεγονός OnClose μας δίνει μια τελευταία ευκαιρία να αποτρέψουμε το κλείσιμο της φόρμας. Ο χειριστής συμβάντων OnClose έχει μια παράμετρο Ενέργεια, με τις ακόλουθες τέσσερις πιθανές τιμές:

  • caNone. Η φόρμα δεν επιτρέπεται να κλείσει. Ακριβώς όπως έχουμε θέσει το CanClose σε ψευδή στο OnCloseQuery.
  • caHide. Αντί να κλείσετε τη φόρμα, την κρύβετε.
  • caFree. Η φόρμα είναι κλειστή, οπότε η μνήμη της είναι ελευθερωμένη από τους Δελφούς.
  • caMinimize. Η φόρμα είναι ελαχιστοποιημένη και όχι κλειστή. Αυτή είναι η προεπιλεγμένη ενέργεια για τις μορφές παιδιού MDI. Όταν ένας χρήστης απενεργοποιεί τα Windows, ενεργοποιείται το συμβάν OnCloseQuery και όχι το OnClose. Αν θέλετε να αποτρέψετε το κλείσιμο των Windows, βάλτε τον κώδικα στο χειριστή συμβάντων OnCloseQuery, φυσικά CanClose = False δεν θα το κάνει αυτό.

OnDestroy
Αφού γίνει η επεξεργασία της μεθόδου OnClose και η φόρμα πρόκειται να κλείσει, καλείται το συμβάν OnDestroy. Χρησιμοποιήστε αυτό το συμβάν για λειτουργίες αντίθετες με εκείνες του συμβάντος OnCreate. Το OnDestroy χρησιμοποιείται για την απόσπαση αντικειμένων που σχετίζονται με τη φόρμα και για την απελευθέρωση της αντίστοιχης μνήμης.

Όταν κλείνει η κύρια φόρμα για ένα έργο, η εφαρμογή τερματίζεται.

instagram story viewer