Εμφάνιση ενός πλαισίου μηνυμάτων ενός συστήματος TopMost με το Delphi

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

Σε Δελφοί, υπάρχουν διάφοροι τρόποι για την εμφάνιση ενός μηνύματος στο χρήστη. Μπορείτε είτε να χρησιμοποιήσετε οποιοδήποτε από τα έτοιμα μηνύματα που εμφανίζουν ρουτίνες που παρέχονται στο RTL, όπως το ShowMessage ή το InputBox. ή μπορείτε να δημιουργήσετε το δικό σας παράθυρο διαλόγου (για επαναχρησιμοποίηση): CreateMessageDialog.

Ένα κοινό πρόβλημα με όλα τα παραπάνω παράθυρα διαλόγου είναι ότι αυτά απαιτούν την ενεργοποίηση της εφαρμογής ώστε να εμφανίζεται στον χρήστη. "Ενεργός" αναφέρεται σε πότε η εφαρμογή σας έχει την "εστίαση εισόδου".

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

instagram viewer

Σύστημα-Modal Top Most Message Box

Ακόμα κι αν αυτό μπορεί να ακούγεται περίπλοκο, στην πραγματικότητα πραγματικά δεν είναι.

Δεδομένου ότι οι Δελφοί μπορούν εύκολα να έχουν πρόσβαση σε περισσότερες από τις κλήσεις API των Windows, η εκτέλεση της λειτουργίας API των Windows "MessageBox" θα κάνει το τέχνασμα.

Ορίστηκε στη μονάδα "windows.pas" - αυτή που περιλαμβάνεται από προεπιλογή στη ρήτρα χρήσης κάθε φόρμας των Δελφών, το Κουτί μηνυμάτων λειτουργία δημιουργεί, εμφανίζει και λειτουργεί ένα πλαίσιο μηνύματος. Το πλαίσιο μηνυμάτων περιέχει ένα μήνυμα και τίτλο που ορίζονται από την εφαρμογή, μαζί με οποιονδήποτε συνδυασμό προκαθορισμένων εικονιδίων και κουμπιών.

Δείτε πώς δηλώνεται το μήνυμα:

λειτουργία Κουτί μηνυμάτων(

hWnd: HWND;
lpText,
lpCaption: PAnsiChar;
uType: Cardinal): ακέραιο;

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

ο lpText και lpCaption καθορίστε τη λεζάντα και το κείμενο του μηνύματος που εμφανίζεται στο πλαίσιο μηνύματος.

Το τελευταίο είναι το uType παράμετρο και είναι το πιο ενδιαφέρον. Αυτή η παράμετρος καθορίζει τα περιεχόμενα και τη συμπεριφορά του πλαισίου διαλόγου. Αυτή η παράμετρος μπορεί να είναι ένας συνδυασμός διαφόρων σημαιών.

Παράδειγμα: Πλαίσιο προειδοποίησης Modal System Όταν αλλάζει η ημερομηνία / ώρα του συστήματος

Ας ρίξουμε μια ματιά σε ένα παράδειγμα δημιουργίας ενός συστήματος με το πιο πάνω σύστημα. Εσείς χειριστείτε το μήνυμα των Windows που αποστέλλεται σε όλες τις τρέχουσες εφαρμογές όταν το αλλαγή ημερομηνίας / ώρας συστήματος-Για παράδειγμα, χρησιμοποιώντας την μικροεφαρμογή "Ιδιότητες ημερομηνίας και ώρας".

Η λειτουργία MessageBox θα καλείται ως:

 Windows. Κουτί μηνυμάτων(

 λαβή,

 «Αυτό είναι ένα μήνυμα για το σύστημα« # 13 # 10 »από μια ανενεργή εφαρμογή»,

 'Ένα μήνυμα από μια ανενεργή εφαρμογή!',

 MB_SYSTEMMODAL ή MB_SETFOREGROUND ή MB_TOPMOST ή MB_ICONHAND);

Το πιο σημαντικό κομμάτι είναι η τελευταία παράμετρος. Το "MB_SYSTEMMODAL ή MB_SETFOREGROUND ή MB_TOPMOST" εξασφαλίζει ότι το πλαίσιο μηνύματος είναι σύστημα σύστημα, κορυφή πιο και γίνεται το παράθυρο του προσκηνίου.

  • MB_SYSTEMMODAL σημαία διασφαλίζει ότι ο χρήστης πρέπει να ανταποκριθεί στο πλαίσιο μηνύματος πριν συνεχίσει τις εργασίες στο παράθυρο που προσδιορίζεται από την παράμετρο hWnd.
  • MB_TOPMOST η σημαία καθορίζει ότι το πλαίσιο μηνυμάτων θα πρέπει να τοποθετείται πάνω από όλα τα μη επάνω παράθυρα και θα πρέπει να παραμείνει πάνω από αυτά, ακόμα και όταν απενεργοποιηθεί το παράθυρο.
  • MB_SETFOREGROUND σημαία διασφαλίζει ότι το πλαίσιο μηνύματος γίνεται το παράθυρο του προσκηνίου.

Εδώ είναι ο πλήρης κώδικας παραδείγματος (TForm με το όνομα "Form1" που ορίζεται στη μονάδα "μονάδα1"):

μονάδα Μονάδα 1;

διεπαφή


χρήσεις

 Windows, Μηνύματα, SysUtils, Παραλλαγές, Μαθήματα,

 Γραφικά, Έλεγχοι, Μορφές, Διαλόγους, ExtCtrls.


τύπος

 TForm1 = τάξη(TForm)

ιδιωτικός

διαδικασία WMTimeChange (var Msg: TMessage); μήνυμα WM_TIMECHANGE;

δημόσιο

{Δημόσιες δηλώσεις}

τέλος;

var

 Μορφή1: TForm1;


εκτέλεση{$ R * .dfm}


διαδικασία TForm1.WMTimeChange (var Msg: TMessage);

ξεκινήσει

 Windows. Κουτί μηνυμάτων(

 λαβή,

 «Αυτό είναι ένα μήνυμα για το σύστημα« # 13 # 10 »από μια ανενεργή εφαρμογή»,

 'Ένα μήνυμα από μια ανενεργή εφαρμογή!',

 MB_SYSTEMMODAL ή MB_SETFOREGROUND ή MB_TOPMOST ή MB_ICONHAND);

τέλος;

τέλος.

Δοκιμάστε να εκτελέσετε αυτήν την απλή εφαρμογή. Βεβαιωθείτε ότι η εφαρμογή είναι ελαχιστοποιημένη ή τουλάχιστον ότι κάποια άλλη εφαρμογή είναι ενεργή. Εκτελέστε την μικροεφαρμογή "Ιδιότητες ημερομηνίας και ώρας" και αλλάξτε την ώρα του συστήματος. Μόλις πατήσετε το κουμπί "Ok" (στο applet) θα εμφανιστεί το πλαίσιο μηνυμάτων κορυφής του συστήματος από την ανενεργή εφαρμογή σας.

instagram story viewer