Страница 39 из 39
Компонент TPopupMenu TObject-”TPersistent—”TComponent->TMenu->TPopupMenu Модуль MENUS Страница Палитры компонентов Standard Этот компонент описывает всплывающее меню. В отличие от главного, собственное меню такого типа может быть почти у каждого оконного элемента управления на форме (кроме переключателей), а также у самой формы. Всплывающее меню обычно связывают с нажатием правой кнопки мьппи. Чтобы это правило соблюдалось, нужно установить в True свойство (Pb) property AutoPopup: Boolean; Для вызова этого меню из программы используйте метод: procedure Popup(X, Y: Integer); который показывает его, помещая в точку экрана (X,Y) точку панели меню, определенную свойством: (Pb) property Alignment: TPopupAlignment; TPopupAlignment = (paLeft, paRight, paCenter) ; В зависимости от его значения в точке щелчка появится: paLeft — левый верхний угол; paRight — правый верхний угол; paCenter — середина верхней стороны. Разумеется, если нажатие произошло в самом низу экрана и развернуться вниз невозможно, меню автоматически будет сдвинуто вверх. При вызове всплывающего меню перед его показом на экране программист извещается событием: (Pb) property OnPopup: TNotifyEvent; Одно и то же всплывающее меню могут разделять несколько компонентов. Свойство property PopupComponent: TComponent ; показывает, который из них инициировал меню (на котором был щелчок правой кнопки мыши). Если меню вызвано из метода Popup, значение этого свойства не определено, и присвоить ему значение должен сам программист. Контекст помощи всплывающего меню задается свойством: (Pb) property HelpContext: THelpContext; Функции для работы с меню Рассмотрим также описанные в модуле Menus полезные функции для управления меню. Четыре функции предназначены для преобразования типа TShortCut, представляющего горячую комбинацию клавиш: а) в символ+состояние специальных клавиш и обратно: procedure ShortCutToKey(Shortcut: TShortCut; var Key: Word; var Shift: TShiftState); function Shortcut(Key: Word; Shift: TShiftState): TShortCut; б) в текст и обратно: function ShortCutToText(Shortcut: TShortCut): string; function TextToShortCut(Text: string): TShortCut; Новые меню и их составные части можно создавать, пользуясь функциями: function NewMenu(Owner: TComponent; const AName: string; Items: array of TMenuItem): TMairiMenu; | Создает новое главное меню с именем AName и пунктами Items, которое будет принадлежать владельцу Owner. | function NewPopupMenu(Owner: TCoiriponent; const AName: string; Alignment: TPopupAlignment; AutoPopup: Boolean; Items: array of TMenuItem): TPopupMenu; | Создает новое всплывающее меню. Назначение дополнительных параметров см. описание TPopupMenu. | function NewSubMenu(const ACaption: string; hCtx: Word; const AName: string; Items: array of TMenuItem): TMenuItem; | Создает новое подменю. Здесь AName — имя объекта, ACaption — его текст, hCtx — контекст системы помощи. | function Newltemfconst ACaption: string; AShortCut: TShortCut; AChecked, AEnabled: Boolean; AOnClick: TNotifyEvent; hCtx: Word; const AName: string): | Создает новый объект типа TMenuItem. Параметры метода соответствуют свойствам класса. | function NewLine: TMenuItem; | Создает новый элемент меню типа разделитель (TMenuItem с Caption = '-'). | Все функции в случае успешного завершения возвращают указатель на созданный объект |