Χρησιμοποιήστε συγκεκριμένη γλώσσα κωδικοποίησης για να προγραμματίσετε τις εφαρμογές Delphi για να εμφανίσετε μια υπόδειξη ή μια επεξήγηση εργαλείου όταν το ποντίκι αιωρείται πάνω από ένα στοιχείο του μενού. Εάν η ιδιότητα "ShowHint" έχει οριστεί σε "true" και προσθέτετε κείμενο στην ιδιότητα "hint", αυτό το μήνυμα θα εμφανιστεί όταν το ποντίκι τοποθετηθεί πάνω από το στοιχείο (π.χ. TButton).
Ενεργοποιήστε τις συμβουλές για τα στοιχεία μενού
Λόγω του τρόπου με τον οποίο έχουν σχεδιαστεί τα Windows, ακόμα και αν ορίσετε την τιμή για την ιδιότητα υπαινιγμών σε ένα στοιχείο μενού, δεν θα εμφανιστεί η υπενθύμιση popup. Ωστόσο, τα στοιχεία του μενού έναρξης των Windows εμφανίζουν συμβουλές. Το μενού αγαπημένων στον Internet Explorer εμφανίζει επίσης συμβουλές για τα στοιχεία του μενού.
Είναι δυνατό να χρησιμοποιήσετε το συμβάν OnHint της μεταβλητής συνολικής εφαρμογής στο Δελφοί εφαρμογές για την εμφάνιση συμβουλών στοιχείου μενού σε μια γραμμή κατάστασης.
Τα Windows δεν εκθέτουν τα μηνύματα που απαιτούνται για την υποστήριξη ενός παραδοσιακού συμβάντος OnMouseEnter. Ωστόσο, το μήνυμα WM_MENUSELECT αποστέλλεται όταν ο χρήστης επιλέγει ένα στοιχείο μενού.
Η εφαρμογή WM_MENUSELECT του TCustomForm (πρόγονος του TForm) ορίζει την υπενθύμιση του στοιχείου μενού στην "Εφαρμογή". Συμβουλή ", ώστε να μπορεί να χρησιμοποιηθεί στην εφαρμογή. OnHint συμβάν.
Αν θέλετε να προσθέσετε συμβουλές pop-up με τα στοιχεία μενού (tooltips) στα μενού εφαρμογών Delphi, επικεντρωθείτε στο μήνυμα WM_MenuSelect.
Αναδυόμενες συμβουλές
Δεδομένου ότι δεν μπορείτε να βασιστείτε στην εφαρμογή. Μέθοδος ActivateHint για την εμφάνιση του παραθύρου υπαινιγμών για τα στοιχεία του μενού (καθώς το χειρισμό του μενού πραγματοποιείται εξ ολοκλήρου από το Windows), για να εμφανιστεί το παράθυρο υπαινιγμών, πρέπει να δημιουργήσετε τη δική σας έκδοση του παραθύρου υποδείξεων, εξάγοντας μια νέα κλάση από το "THintWindow".
Δείτε πώς μπορείτε να δημιουργήσετε μια κλάση TMenuItemHint. Αυτή είναι μια χήρα υπαινιγμό που πραγματικά εμφανίζεται για αντικείμενα μενού!
Πρώτον, πρέπει να χειριστείτε το μήνυμα Windows WM_MENUSELECT:
τύπος
TForm1 = τάξη(TForm)
...
ιδιωτικός
διαδικασία WMMenuSelect (var Msg: TWMMenuSelect); μήνυμα WM_MENUSELECT;
τέλος...
εκτέλεση...
διαδικασία TForm1.WMMenuSelect (var Msg: TWMMenuSelect);
var menuItem: TMenuItem; hSubMenu: HMENU;
ξεκινήσει
κληρονόμησε; // από το TCustomForm (έτσι ώστε η εφαρμογή. Η συμβουλή έχει εκχωρηθεί)
menuItem: = μηδέν;
αν (Msg. MenuFlag <> $ FFFF) ή (Msg. IDItem <> 0) έπειτα
ξεκινήσει
αν Msg. MenuFlag και MF_POPUP = MF_POPUP έπειτα
ξεκινήσει
hSubMenu: = GetSubMenu (Msg. Μενού, Msg. IDItem).
menuItem: = Self. Μενού. FindItem (hSubMenu, fkHandle);
τέλος
αλλού
ξεκινήσει
menuItem: = Self. Μενού. FindItem (Msg. IDItem, fkCommand).
τέλος;
τέλος; miHint. Το DoActivateHint (menuItem);
τέλος; (* WMMenuSelect *)
Γρήγορη πληροφορία: το μήνυμα WM_MENUSELECT αποστέλλεται στο παράθυρο ιδιοκτήτη ενός μενού όταν ο χρήστης επιλέγει (αλλά δεν κάνει κλικ) ένα στοιχείο μενού. Χρησιμοποιώντας τη μέθοδο FindItem της κλάσης TMenu, μπορείτε να πάρετε το στοιχείο μενού που έχετε επιλεγεί. Οι παράμετροι της συνάρτησης FindItem σχετίζονται με τις ιδιότητες του ληφθέντος μηνύματος. Αφού μάθουμε τι είδους στοιχείο του ποντικιού ολοκληρώνεται, καλούμε τη μέθοδο DoActivateHint της κλάσης TMenuItemHint. Η μεταβλητή miHint ορίζεται ως "var miHint: TMenuItemHint" και δημιουργείται στη φόρμα OnCreate χειριστής συμβάντων.
Τώρα, αυτό που έχει απομείνει είναι η εφαρμογή της κλάσης TMenuItemHint.
Εδώ είναι το τμήμα διεπαφής:
TMenuItemHint = τάξη(THintWindow)
ιδιωτικός
activeMenuItem: TMenuItem;
showTimer: TTimer;
hideTimer: TTimer;
διαδικασία HideTime (αποστολέας: TObject);
διαδικασία ShowTime (αποστολέας: TObject);
δημόσιο
κατασκευαστής Δημιουργία (AOwner: TComponent); καταπατώ;
διαδικασία Το DoActivateHint (menuItem: TMenuItem);
καταστροφέας Καταστρέφω; καταπατώ;
τέλος;
Βασικά, η συνάρτηση DoActivateHint καλεί τη μέθοδο ActivateHint του THintWindow χρησιμοποιώντας την ιδιότητα Hint της TMenuItem (αν έχει εκχωρηθεί). Το showTimer χρησιμοποιείται για να διασφαλιστεί ότι θα περάσει η HintPause της εφαρμογής πριν εμφανιστεί η υπόδειξη. Το hideTimer χρησιμοποιεί την εφαρμογή. HintHidePause για να αποκρύψετε το παράθυρο υπαινιγμών μετά από ένα καθορισμένο διάστημα.
Χρήση συμβουλών στοιχείου μενού
Ενώ κάποιοι μπορεί να πουν ότι δεν είναι καλός σχεδιασμός για να εμφανιστούν συμβουλές για τα στοιχεία του μενού, υπάρχουν περιπτώσεις όπου η εμφάνιση των συμβουλών στοιχείων μενού είναι πολύ καλύτερη από τη χρήση μιας γραμμής κατάστασης. Μια λίστα στοιχείων που χρησιμοποιήθηκε πρόσφατα (MRU) είναι μια τέτοια περίπτωση. Ένα προσαρμοσμένο μενού της γραμμής εργασιών είναι άλλο.