डेल्फी एप्लिकेशन में मेनू आइटम संकेत कैसे प्रदर्शित करें

जब एक मेनू घटक पर माउस मंडराता है, तो संकेत, या टूलटिप प्रदर्शित करने के लिए डेल्फी एप्लिकेशन को प्रोग्राम करने के लिए विशिष्ट कोडिंग भाषा का उपयोग करें। यदि "ShowHint" संपत्ति "true" पर सेट है और आप "hint" प्रॉपर्टी में टेक्स्ट जोड़ते हैं, तो यह संदेश तब प्रदर्शित होगा जब माउस को घटक के ऊपर रखा गया हो (उदाहरण के लिए एक TButton)।

मेनू आइटम के लिए संकेत सक्षम करें

Windows डिज़ाइन करने के तरीके के कारण, भले ही आप एक मेनू आइटम पर संकेत संपत्ति के लिए मान सेट करें, पॉपअप संकेत प्रदर्शित नहीं होगा। हालाँकि, Windows प्रारंभ मेनू आइटम प्रदर्शन संकेत करते हैं। इंटरनेट एक्सप्लोरर में पसंदीदा मेनू भी मेनू आइटम संकेत प्रदर्शित करता है।

वैश्विक अनुप्रयोग चर के ऑनहिंट ईवेंट का उपयोग करना संभव है डेल्फी एक स्थिति पट्टी में मेनू आइटम संकेत प्रदर्शित करने के लिए आवेदन।

Windows पारंपरिक OnMouseEnter ईवेंट का समर्थन करने के लिए आवश्यक संदेशों को उजागर नहीं करता है। हालाँकि, उपयोगकर्ता द्वारा मेनू आइटम का चयन करने पर WM_MENUSELECT संदेश भेजा जाता है।

WM_MENUSELECT का कार्यान्वयन TCustomForm (TForm का पूर्वज) "अनुप्रयोग" के लिए मेनू आइटम संकेत सेट करता है। संकेत "तो यह अनुप्रयोग में इस्तेमाल किया जा सकता है। OnHint घटना।

instagram viewer

यदि आप अपने डेल्फी एप्लिकेशन मेनू में मेनू आइटम पॉपअप संकेत (टूलटिप्स) जोड़ना चाहते हैं, तो WM_MenuSelect संदेश पर ध्यान केंद्रित करें।

पॉपअप संकेत

चूंकि आप एप्लिकेशन पर भरोसा नहीं कर सकते। मेनू आइटम के लिए संकेत विंडो प्रदर्शित करने के लिए ActivateHint विधि (जैसा कि मेनू हैंडलिंग पूरी तरह से किया जाता है खिड़कियाँ), संकेत खिड़की को प्रदर्शित करने के लिए आपको "THintWindow" से एक नई कक्षा प्राप्त करके संकेत विंडो का अपना संस्करण बनाना होगा।

यहाँ एक TMenuItemHint क्लास बनाने का तरीका बताया गया है। यह एक संकेत विधवा है जो वास्तव में प्रदर्शित होती है विकल्प सूची की चीज़ें!

सबसे पहले, आपको WM_MENUSELECT Windows संदेश को संभालना होगा:

प्रकार
TForm1 = कक्षा(TForm)
...
निजी
प्रक्रिया WMMenuSelect (वर Msg: TWMMenuSelect); संदेश WM_MENUSELECT;
समाप्त...
कार्यान्वयन
...
प्रक्रिया
TForm1.WMMenuSelect (वर Msg: TWMMenuSelect);
वर
menuItem: TMenuItem; hSubMenu: HMENU;
शुरू

विरासत में मिला; // TCustomForm से (ताकि आवेदन। संकेत दिया गया है)
मेनू इटेम: = शून्य;
अगर (संदेश। MenuFlag <> $ FFFF) या (संदेश। IDItem <> 0) फिर
शुरू
अगर संदेश। MenuFlag तथा MF_POPUP = MF_POPUP फिर
शुरू
hSubMenu: = GetSubMenu (Msg)। मेनू, संदेश। IDItem);
मेनू इटाम: = स्व। मेन्यू। FindItem (hSubMenu, fkHandle);
समाप्त
अन्य
शुरू
मेनू इटाम: = स्व। मेन्यू। FindItem (Msg)। IDItem, fkCommand);
समाप्त;
समाप्त; miHint। DoActivateHint (menuItem);
समाप्त
; (* WMMenuSelect *)

त्वरित जानकारी: उपयोगकर्ता द्वारा मेनू आइटम का चयन करने पर (लेकिन क्लिक नहीं करता है) WM_MENUSELECT संदेश को मेनू के विंडो में भेजा जाता है। TMenu वर्ग की FindItem पद्धति का उपयोग करके, आप वर्तमान में चयनित मेनू आइटम प्राप्त कर सकते हैं। FindItem फ़ंक्शन के पैरामीटर प्राप्त संदेश के गुणों से संबंधित हैं। एक बार जब हमें पता चल जाता है कि माउस का कौन सा मेनू आइटम है, तो हम TMenuItemHint वर्ग के DoActivateHint विधि को कॉल करते हैं। MiHint वेरिएबल को "var miHint: TMenuItemHint" के रूप में परिभाषित किया गया है और यह फॉर्म के फॉर्म में बनाया गया है OnCreate आयोजन प्रबंधकर्ता।

अब, जो बचा है वह TMenuItemHint वर्ग का कार्यान्वयन है।

यहाँ इंटरफ़ेस हिस्सा है:

तिमनुइतेमहंत = कक्षा(THintWindow)
निजी

activeMenuItem: TMenuItem;
showTimer: TTimer;
HideTimer: TTimer;
प्रक्रिया HideTime (प्रेषक: Tobject);
प्रक्रिया ShowTime (प्रेषक: Tobject);
जनता

निर्माता बनाएँ (AOwner: TComponent); ओवरराइड;
प्रक्रिया DoActivateHint (menuItem: TMenuItem);
नाशक नष्ट; ओवरराइड;
समाप्त
;

असल में, DoActivateHint फ़ंक्शन TMenuItem की हिंट प्रॉपर्टी (यदि इसे असाइन किया गया है) का उपयोग करके THintWindow के ActivateHint विधि को कॉल करता है। शोटिमर का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि संकेत प्रदर्शित होने से पहले एप्लिकेशन का हिंटपॉज समाप्त हो जाए। HideTimer अनुप्रयोग का उपयोग करता है। HintHidePause एक निर्दिष्ट अंतराल के बाद संकेत विंडो को छिपाने के लिए।

मेनू आइटम संकेत का उपयोग करना

हालांकि कुछ लोग कह सकते हैं कि यह मेनू आइटम के लिए संकेत प्रदर्शित करने के लिए एक अच्छा डिज़ाइन नहीं है, ऐसी परिस्थितियां हैं जहां वास्तव में मेनू आइटम संकेत प्रदर्शित करना स्थिति पट्टी का उपयोग करने से बहुत बेहतर है। हाल ही में उपयोग किया गया (MRU) मेनू आइटम सूची एक ऐसा ही मामला है। एक कस्टम टास्कबार मेनू एक और है।