Hayot

Delphi dasturlarida menyu bandlari ko'rsatmalarini qanday ko'rsatish mumkin

Delphi dasturlarida menyu bandlari ko'rsatmalarini qanday ko'rsatish mumkin

Sichqoncha menyu komponentini aylantirganda, ishora yoki ko'rsatgichni ko'rsatish uchun Delphi dasturlarini dasturlash uchun maxsus kodlash tilidan foydalaning. Agar "ShowHint" xususiyati "true" ga o'rnatilgan bo'lsa va siz "hint" xususiyatiga matn qo'shsangiz, bu xabar sichqonchani komponent ustiga (masalan, Tutton uchun) qo'yilganda paydo bo'ladi.

Menyu elementlari uchun maslahatlarni yoqing

Windows qanday ishlab chiqilganligi sababli, hattoki menyudagi eslatma xususiyatining qiymatini belgilasangiz ham, qalqib chiquvchi ko'rsatma ko'rinmaydi. Biroq, Windows-ning boshlang'ich menyusida ko'rsatmalar mavjud. Internet Explorer-dagi sevimlilar menyusi maslahatlari ham ko'rsatiladi.

Holat panelida menyu bandlari ko'rsatmalarini ko'rsatish uchun Delphi dasturlarida global dastur o'zgaruvchisining OnHint hodisasidan foydalanish mumkin.

Windows an'anaviy OnMouseEnter tadbirini qo'llab-quvvatlash uchun zarur bo'lgan xabarlarni oshkor qilmaydi. Biroq, WM_MENUSELECT xabari foydalanuvchi menyu elementini tanlaganida yuboriladi.

TCustomForm (TFormning ajdodi) ning WM_MENUSELECT-ni amalga oshirish menyudagi bandni "Application.Hint" ga o'rnatadi, shunda uni Application.OnHint tadbirida ishlatish mumkin.

Delphi dasturlar menyusiga menyu elementlari qalqib chiqadigan ko'rsatmalarini (ko'rsatmalarini) qo'shmoqchi bo'lsangiz, WM_MenuSelect xabariga e'tibor qarating.

Qalqib chiquvchi maslahatlar

Siz menyu punktlari uchun ishora oynasini namoyish qilish uchun Application.ActivateHint usuliga ishonishingiz mumkin emas (chunki menyuni boshqarish to'liq Windows tomonidan amalga oshirilgan), ishora oynasini namoyish qilish uchun siz yangi sinfni olish orqali ishora oynasining o'z versiyasini yaratishingiz kerak. "ThintWindow" dan.

Mana TMenuItemHint klassini qanday yaratish kerak. Bu aslida menyu elementlari uchun ko'rsatiladigan beparvo beva!

Birinchidan, siz WM_MENUSELECT Windows xabarini qayta ishlashingiz kerak:

turi
TForm1 = sinf(TForm)

xususiy
tartibi WMMenuSelect (var Ms: TWMMenuSelect); xabari WM_MENUSELECT;
oxiri
amalga oshirish

tartibi
TForm1.WMMenuSelect (var Ms: TWMMenuSelect);
var
menyuItem: TMenuItem; hSubMenu: HMENU;
boshlash

meros qilib olingan; // TCustomForm-dan (Application.Hint tayinlanishi uchun)
menyuItem: = nol;
agar (MenuFlag $ FFFF) yoki (Ms.IDItem 0) keyin
boshlash
agar MenuFlag va MF_POPUP = MF_POPUP keyin
boshlash
hSubMenu: = GetSubMenu (Ms.Menu, Msg.IDItem);
menyuItem: = Self.Menu.FindItem (hSubMenu, fkHandle);
oxiri
yana
boshlash
menyuItem: = Self.Menu.FindItem (Msg.IDItem, fkCommand);
oxiri;
oxiri; miHint.DoActivateHint (menyuItem);
oxiri
; (* WMMenuSelect *)

Tezkor ma'lumot: WM_MENUSELECT xabari foydalanuvchi menyu punktini tanlaganida (lekin bosmayotgan) menyu egasi oynasiga yuboriladi. TMenu sinfidagi FindItem usulidan foydalanib, hozir tanlangan menyu elementini olishingiz mumkin. FindItem funktsiyasining parametrlari olingan xabarning xususiyatlariga bog'liq. Sichqoncha qaysi menyu bandini tugatganini bilganimizdan so'ng, biz TMenuItemHint sinfining DoActivateHint usulini chaqiramiz. MiHint o'zgaruvchisi "var miHint: TMenuItemHint" deb belgilangan va Formaning OnCreate voqea ishlov beruvchisida yaratilgan.

Endi qolgan narsa TMenuItemHint sinfini amalga oshirishdir.

Bu erda interfeys qismi:

TMenuItemHint = sinf(TintWindow)
xususiy

activeMenuItem: TMenuItem;
showTimer: TTimer;
hideTimer: TTimer;
tartibi HideTime (Yuboruvchi: TObject);
tartibi ShowTime (yuboruvchi: TObject);
ommaviy

quruvchi Yaratish (AOwner: TComponent); bekor qilmoq;
tartibi DoActivateHint (menyuItem: TMenuItem);
buzuvchi Yo'q qilmoq; bekor qilmoq;
oxiri
;

Asosan, DoActivateHint funktsiyasi TMenuItem-ning Hint xususiyatidan foydalangan holda (agar u tayinlangan bo'lsa) THintWindow-ning ActivateHint usulini chaqiradi. ShowTimer-dan foydalanib, HintPause-ning eslatma paydo bo'lishidan oldin tugashini ta'minlash uchun foydalaniladi. Belgilangan vaqtdan keyin ishorali oynani yashirish uchun hideTimer Application.HintHidePause-dan foydalanadi.

Menyu elementlaridan foydalanish bo'yicha maslahatlar

Ba'zilar, menyu elementlari uchun maslahatlarni ko'rsatish yaxshi dizayn emas, deb aytsa-da, vaziyatlar paneli ishlatilgandan ko'ra aslida menyu elementlariga oid ko'rsatmalarni namoyish etish yaxshiroqdir. Yaqinda ishlatilgan (MRU) menyu elementlari ro'yxati ana shunday holatlardan biridir. Maxsus vazifalar paneli menyusi boshqa.