استخدم لغة ترميز معينة لبرمجة تطبيقات دلفي لعرض تلميح أو تلميح أداة ، عند تمرير الماوس فوق أحد مكونات القائمة. إذا تم تعيين الخاصية "ShowHint" على "true" وقمت بإضافة نص إلى خاصية "hint" ، سيتم عرض هذه الرسالة عند وضع الماوس فوق المكون (على سبيل المثال ، زر TButton).
تمكين تلميحات عناصر القائمة
نظرًا للطريقة التي تم تصميم Windows بها ، حتى إذا قمت بتعيين قيمة خاصية التلميح إلى عنصر قائمة ، فلن يتم عرض التلميح المنبثق. ومع ذلك ، تعرض عناصر قائمة ابدأ في Windows تلميحات. تعرض قائمة المفضلة في Internet Explorer أيضًا تلميحات عناصر القائمة.
من الممكن استخدام حدث OnHint لمتغير التطبيق العام في دلفي تطبيقات لعرض تلميحات عنصر القائمة في شريط الحالة.
لا يقوم Windows بكشف الرسائل اللازمة لدعم حدث OnMouseEnter التقليدي. ومع ذلك ، يتم إرسال رسالة WM_MENUSELECT عندما يحدد المستخدم عنصر قائمة.
يعين تطبيق WM_MENUSELECT TCustomForm (سلف TForm) تلميح عنصر القائمة إلى "التطبيق. تلميح "بحيث يمكن استخدامه في التطبيق. حدث OnHint.
إذا كنت ترغب في إضافة تلميحات منبثقة لعناصر القائمة (تلميحات الأدوات) إلى قوائم تطبيق دلفي ، فركز على رسالة WM_MenuSelect.
تلميحات منبثقة
حيث لا يمكنك الاعتماد على التطبيق. طريقة ActivateHint لعرض نافذة التلميح لعناصر القائمة (حيث تتم معالجة القائمة بالكامل بواسطة شبابيك) ، للحصول على نافذة التلميح المعروضة ، يجب عليك إنشاء نسختك الخاصة من نافذة التلميحات عن طريق اشتقاق فئة جديدة من "THintWindow."
فيما يلي كيفية إنشاء فئة TMenuItemHint. هذه أرملة تلميح يتم عرضها بالفعل عناصر القائمة!
أولاً ، تحتاج إلى معالجة رسالة WM_MENUSELECT Windows:
اكتب
TForm1 = صف دراسي(TForm)
...
نشر
إجراء WMMenuSelect (فار Msg: TWMMenuSelect) ؛ رسالة WM_MENUSELECT ،
النهاية...
التنفيذ...
إجراء TForm1.WMMenuSelect (فار Msg: TWMMenuSelect) ؛
فار menuItem: TMenuItem ؛ hSubMenu: HMENU ؛
ابدأ
وارث; // من TCustomForm (بحيث التطبيق. تم تعيين تلميح)
menuItem: = لا شيء;
إذا (رسالة. MenuFlag <> $ FFFF) أو (رسالة. IDITem <> 0) ثم
ابدأ
إذا رسالة. MenuFlag و MF_POPUP = MF_POPUP ثم
ابدأ
hSubMenu: = GetSubMenu (Msg. القائمة ، رسالة. IDItem) ؛
menuItem: = الذات. قائمة طعام. FindItem (hSubMenu، fkHandle) ؛
النهاية
آخر
ابدأ
menuItem: = الذات. قائمة طعام. FindItem (رسالة. IDItem ، fkCommand) ؛
النهاية;
النهاية; تلميح. 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 باستخدام خاصية تلميحات TMenuItem (إذا تم تعيينها). يتم استخدام showTimer لضمان انقضاء HintPause الخاص بالتطبيق قبل عرض التلميح. يستخدم hideTimer التطبيق. HintHidePause لإخفاء نافذة التلميح بعد فاصل زمني محدد.
استخدام تلميحات عنصر القائمة
بينما قد يقول البعض أنه ليس من التصميم الجيد عرض تلميحات لعناصر القائمة ، إلا أن هناك حالات يكون فيها عرض تلميحات عنصر القائمة أفضل بكثير من استخدام شريط الحالة. قائمة عناصر قائمة (MRU) المستخدمة حديثًا هي إحدى هذه الحالات. قائمة شريط المهام المخصصة أخرى.