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

5.1.1. События для всего меню или его дочерних пунктов

OnMenuItem - событие, которое срабатывает для объекта меню, когда в нем выбран некоторый элемент. Когда пункт меню выбран, такое событие (если назначено) срабатывает для самого пункта меню, и для каждого родительского меню. Такой подход позволяет, при желании, сэкономить на создании отдельных обработчиков событий для каждого пункта меню, и сосредоточить всю обработку нажатий на меню в одной процедуре, назначив ее в качестве обработчика нажатий на родительском меню самого верхнего уровня;

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

IsSeparator - возвращает true, если пункт является разделителем;

OnUncheckRadioItem - данное событие позволяет назначить дополнительный обработчик события "текущий элемент радио-группы перестал быть текущим". Вышеназванное событие OnMenuItem срабатывает только для того элемента радио-группы в меню, который был выбран;

AssignEvents( i, events ) - позволяет назначить обработчики событий для нескольких пунктов меню, начиная с i;

5.1.2. События, методы, свойства отдельного пункта меню как объекта

Ниже перечисленные события, методы и свойства относятся, прежде всего, к каждому отдельному пункту меню, не затрагивая все дерево меню или подчиненные пункты данного элемента меню. Для обращения к таким свойствам из кода необходимо иметь указатель объекта, соответствующего пункту меню. Например, такой указатель можно получить для главного меню, используя свойство Items[ i ]. В случае, если состав меню динамически изменяется, лучшим способом является немедленно после первоначального создания меню и до выполнения любых модификаций меню (т.е. когда для каждого пункта меню точно известен его индекс) скопировать указатели тех пунктов меню, к которым в программном коде есть обращения, в свои переменные (типа PMenu).

OnMeasureItem - событие, которое вызывается для пункта меню с опцией OwnerDrawFixed, для установления размеров меню (в младшем слове результата обработчик должен возвратить высоту, в старшем - ширину пункта меню);

OnDrawItem - событие для рисования элемента меню обработчиком, назначенном программистом. Меню должно иметь свойство OwnerDraw, равное true;

OwnerDraw - для изображения элементов меню вызывается обработчик события OnDrawItem;

MenuBreak - тип отделения данного пункта меню от последующих (для автоматического переноса пунктов меню на следующую строку или колонку);

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

IsCheckItem - элемент меню является автоматически маркируемым. Выбором такого пункта в меню пользователь автоматически изменяет его состояния "маркирован" - "не маркирован" на противоположное (перед срабатыванием события OnMenuItem);

Checked - пункт меню, соответствующий объекту, "маркирован";

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

DefaultItem - элемент меню является пунктом "по умолчанию", т.е. он визуально выделен (жирным шрифтом) и срабатывает по нажатию клавиши <Enter>, когда родительское меню отображено на экране вместе с дочерними;

Highligh - пункт меню подсвечен;

Visible - свойство объекта, соответствующего пункту меню. Объект обеспечивает "видимость" данного пункта меню, уничтожая пункт меню, когда этому свойству присваивается false, и создавая его вновь, когда свойство снова принимает значение true;

Data - указатель, который позволяет ассоциировать с пунктом меню некоторые дополнительные данные (в том число, это может быть любое 32-разрядное число);

Bitmap - точечное изображение hBitmap, использующееся для изображения пиктограммы слева от текста в меню (там же, где система изображает "птичку" или кружочек маркировки для "отмеченных" пунктов меню);

BitmapItem - точечное изображение hBitmap, изображаемое вместо текста меню, если назначено. Существует ряд зарезервированных системных констант, которые могут быть дополнительно использованы в качестве значения для данного свойства. Например, HBMMENU_CALLBACK - позволяет организовать подстановку требуемого изображения по дополнительному запросу от системы, а так же: HBMMENU_MBAR_CLOSE, HBMMENU_MBAR_MINIMIZE, и т.п.;

Accelerator - "ускоритель", или сочетание клавиш, которые могут использоваться для вызова пункта меню. Ускоритель создается в коде вызовом функции MakeAccelerator;

HelpContext - число, использующее в системе встроенной справочной системы приложения, для идентификации статьи в справке, которая активируется при запросе контекстной помощи по пункту меню (F1);