Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга о KOL.doc
Скачиваний:
29
Добавлен:
30.04.2019
Размер:
1.77 Mб
Скачать

5.1.3. Доступ к свойствам подчиненных элементов меню (по индексу или числовому идентификатору)

Все свойства этой группы - это всего лишь другой (эквивалентный) способ обратиться к свойствам отдельных пунктов меню.

GetMenuItemHandle( i ) и ItemHandle[ i ] - возвращает числовой идентификатор пункта меню (см. MenuID);

ItemChecked[ i ] - пункт меню "отмечен". Не следует использовать это свойство для того, чтобы "отметить" элемент радио-группы переключаемых пунктов меню, используйте для этого свойство RadioCheck;

ItemEnabled[ i ] - пункт меню доступен;

ItemVisible[ i ] - пункт меню видимый. См. замечание по свойству Visible - все сказанное для него, имеет место и для данного свойства, т.к. это фактически, другой способ обратиться к этому свойству;

RadioCheck( i ) - делает "маркированным" пункт меню, входящий в группу радио-переключаемых пунктов меню, снимая при этом маркировку со всех прочих пунктов в этой группе;

ItemBitmap[ i ] - точечное изображение для отображения слева от текста в пункте меню;

ItemHelpContext[ i ] - контекст справочной системы;

ItemAccelerator[ i ] - ускоритель (сочетание клавиш) для быстрого вызова пункта меню;

ItemSubMenu[ i ] - дескриптор родительского элемента меню;

5.1.4. Главное меню

RedrawFormMenuBar - для главного меню данный вызов обеспечивает обновление изображения линейки главного меню после выполнения в нем каких-либо модификаций. Если такой вызов не делать, то само меню не обновляется.

Иногда в главном меню используется специальный визуальный эффект выравнивания вправо одного или нескольких последних пунктов верхнего уровня главного меню. Для достижения такого эффекта достаточно выполнить следующий код:

i := MainMenu1.ItemHandle[mmAbout];

ModifyMenu(MainMenu1.Handle, i,

MF_BYCOMMAND or mf_Help,

i,

PChar(MainMenu1.ItemText[mmAbout]));

5.1.5. Всплывающее меню

Как уже было отмечено, всплывающие меню в KOL ничем не отличаются от главного (кроме порядка их создания). Но для того, чтобы их отобразить, им надо приказать "всплыть", или назначить методом SetAutoPopupMenu какого-либо визуального объекта на форме дополнительный обработчик окну, который выполнит такой приказ при выполнении пользователем определенных действий (нажатие специальной кнопки на клавиатуре или правой клавиши мыши).

Popup( X, Y ) - заставляет всплыть всплывающее (popup) меню по указанным координатам на экране;

PopupEx( X, Y ) - аналогично предыдущему методу, но ведет себя по-особому, если окно родительской формы в этот момент невидимо на экране. А именно, делает его видимым (Visible = true), но выводит на время за пределы экрана, фактически оставляя невидимым для пользователя. Смысл такого "подлога" - обеспечить корректное автоматическое скрытие всплывающего меню, когда оно "теряет" фокус, точнее, когда в фокус попадает любое другое окно. Данный метод желательно использовать при организации всплывающего меню на "иконке в трее" (см. TTrayIcon), иначе всплывшее меню никаким способом не "догадывается" о том, что пора скрыться, если пользователь щелкнул мышью мимо меню. (Обычно пользователь так и поступает, если решил, что не желает выбрать ни один из пунктов такого меню, и хочет делать что-то другое, и вот тут-то меню, которое не желает исчезать, может доставить хлопот, потому что другого убрать его с экрана, в общем-то, и нет);

Flags - позволяет определить набор флажков, которые будут использоваться в методах Popup и PopupEx в качестве параметра для API-функции TrackPopupMenuEx. С помощью этих флажков возможно изменять такие параметры, как выравнивание и размещение на экране, разрешение нажимать на пункты меню правой клавишей мыши, способ анимации;

OnPopup - это событие срабатывает непосредственно перед отображением всплывающего меню, или перед разворачиванием дочерних пунктов меню (при наведении мыши или переводе курсора в элемент меню, имеющий дочерние пункты). В обработчике этого события допускается, в том числе, изменить состав, доступность или еще какие-то состояния отдельных подчиненных пунктов, в зависимости от каких-либо внешних условий. В том числе, есть возможность установить в true значение свойства NotPopup, предотвратив тем самым "всплытие";

NotPopup - установка этого свойства в true предотвращает всплытие popup меню, или разворачивание списка подчиненных элементов меню;

CurCtl - указатель на оконный объект типа PControl, который стал инициатором автоматического всплытия меню (т.к. сработал его обработчик соответствующего оконного сообщения, присоединенный к нему вызовом SetAutoPopupMenu).