ცხოვრება

როგორ ვაჩვენოთ მენიუს პუნქტის მინიშნებები Delphi პროგრამებში

როგორ ვაჩვენოთ მენიუს პუნქტის მინიშნებები Delphi პროგრამებში

გამოიყენეთ სპეციფიკური კოდირების ენა დელფის პროგრამების დაპროგრამების მიზნით, რომ მენიუ იცავს მენიუს კომპონენტს. თუ "ShowHint" საკუთრება დაყენებულია "ჭეშმარიტად" და თქვენ დაამატებთ ტექსტს "მინიშნება" თვისებას, ეს მესიჯი გამოჩნდება, როდესაც მაუსი განთავსდება კომპონენტზე (მაგალითად, TButton).

მენიუს ელემენტების მინიშნებების ჩართვა

იმის გამო, რომ Windows შექმნილია, მაშინაც კი, თუ მინიშნება თვისების მნიშვნელობას მენიუს პუნქტზე დაყენებთ, მინიშნება არ გამოჩნდება. ამასთან, ვინდოუსის დაწყების მენიუს საგნები აჩვენებს მინიშნებებს ფავორიტების მენიუში Internet Explorer ასევე აჩვენებს მენიუს ელემენტის მინიშნებებს.

შესაძლებელია დელფის პროგრამაში გლობალური პროგრამის ცვლადის OnHint მოვლენის გამოყენება, სტატუსის ზოლში მენიუს ელემენტის მინიშნებების ჩვენების მიზნით.

Windows არ გამოავლენს შეტყობინებებს, რომლებიც საჭიროა ტრადიციული OnMouseEnter ღონისძიებისთვის. ამასთან, WM_MENUSELECT გაგზავნა იგზავნება, როდესაც მომხმარებელი ირჩევს მენიუს ნივთს.

TCustomForm- ის (TForm– ის წინაპარი) WM_MENUSELECT განხორციელება მენიუს ელემენტის მანიშნებს ადგენს "Application.Hint" - ს, ასე რომ ის შეიძლება გამოყენებულ იქნას Application.OnHint– ის შემთხვევაში.

თუ გსურთ დაამატოთ მენიუ ელემენტის ხსენებული მინიშნებები (ინსტრუმენტების რჩევები) თქვენს Delphi პროგრამის მენიუში, ყურადღება გაამახვილეთ WM_MenuSelect შეტყობინებაზე.

Popup მინიშნებები

იმის გამო, რომ თქვენ არ შეგიძლიათ დაეყრდნოთ Application.ActivateHint მეთოდს მენიუს საგნების მინიშნების სანახავად (მენიუს მართვა მთლიანად შესრულებულია Windows- ით), მინიშნება ფანჯრის მისაღებად თქვენ უნდა შექმნათ მინიშნება ფანჯრის საკუთარი ვერსია ახალი კლასის მიღებით. "THintWindow" - დან.

აქ მოცემულია, თუ როგორ უნდა შექმნათ TMenuItemHint კლასი. ეს არის მინიშნება ქვრივი, რომელიც რეალურად გამოჩნდება მენიუს ნივთებისთვის!

პირველი, თქვენ უნდა გაუმკლავდეთ WM_MENUSELECT Windows შეტყობინებას:

ტიპი
TForm1 = კლასი(TForm)

კერძო
პროცედურა WMMenuSelect (var Msg: TWMMenuSelect); მესიჯი WM_MENUSELECT;
დასასრული
განხორციელება

პროცედურა
TForm1.WMMenuSelect (var Msg: TWMMenuSelect);
var
menuItem: TMenuItem; hSubMenu: HMENU;
დაიწყოს

მემკვიდრეობით მიღებული; // TCustomForm– დან (ისე, რომ Application.Hint არის მინიჭებული)
მენიუ: = ნილ;
თუ (Msg.MenuFlag $ FFFF) ან (Msg.IDItem 0) შემდეგ
დაიწყოს
თუ Msg.MenuFlag და MF_POPUP = MF_POPUP შემდეგ
დაიწყოს
hSubMenu: = GetSubMenu (Msg.Menu, Msg.IDItem);
menuItem: = Self.Menu.FindItem (hSubMenu, fkHandle);
დასასრული
სხვაგან
დაიწყოს
menuItem: = Self.Menu.FindItem (Msg.IDItem, fkCommand);
დასასრული;
დასასრული; miHint.DoActivateHint (მენიუTem);
დასასრული
; (* WMMenuSelect *)

სწრაფი ინფორმაცია: WM_MENUSELECT გაგზავნა იგზავნება მენიუს მფლობელის ფანჯარაში, როდესაც მომხმარებელი ირჩევს (მაგრამ არ დააჭერს) მენიუს ნივთს. TMenu კლასის FindItem მეთოდის გამოყენებით, შეგიძლიათ მიიღოთ ამჟამად შერჩეული მენიუს ელემენტი. FindItem ფუნქციის პარამეტრი ეხმიანება მიღებული გზავნილის თვისებებს. მას შემდეგ რაც ჩვენ ვიცოდეთ რა მენიუს ელემენტი დასრულებულია მაუსის, ჩვენ მოვუწოდებთ DoActivateHint მეთოდს TMenuItemHint კლასის. MiHint ცვლადი განისაზღვრება, როგორც "var miHint: TMenuItemHint" და იქმნება ფორმის OnCreate ღონისძიების დამუშავებაში.

ახლა რაც დარჩა, არის TMenuItemHint კლასის განხორციელება.

აქ არის ინტერფეისის ნაწილი:

TMenuItemHint = კლასი(THintWindow)
კერძო

აქტიურიMenuItem: TMenuItem;
showTimer: TTimer;
hidTimer: TTimer;
პროცედურა HideTime (გამგზავნი: TObject);
პროცედურა ShowTime (გამგზავნი: TObject);
საზოგადოება

კონსტრუქტორი შექმნა (AOwner: TComponent); ზედმეტი;
პროცედურა DoActivateHint (მენიუTem: TMenuItem);
გამანადგურებელი გაანადგურებს; ზედმეტი;
დასასრული
;

ძირითადად, DoActivateHint ფუნქცია მოუწოდებს ThintWindow- ის აქტივატივ მეთოდს, რომელიც იყენებს TMenuItem's Hint თვისებას (თუ იგი დაინიშნა). ShowTimer გამოიყენება იმის უზრუნველსაყოფად, რომ განაცხადის HintPause მინიშნება უნდა გამოცხადდეს. HidTimer იყენებს Application.HintHidePause მინიშნების ფანჯრის დამალვისთვის მითითებული ინტერვალის შემდეგ.

მენიუს ელემენტის მინიშნებების გამოყენებით

ზოგი შეიძლება ითქვას, რომ მენიუს საგნების მინიშნებების ჩვენება არ არის კარგი, არის სიტუაციები, როდესაც მენიუს ელემენტების მინიშნებების ჩვენება ნამდვილად უკეთესია, ვიდრე სტატუსის ზოლის გამოყენება. ბოლო დროს გამოყენებული (MRU) მენიუს ელემენტების სია ერთ – ერთი ასეთი შემთხვევაა. ჩვეულებრივი დავალების მენიუ კიდევ ერთია.