Практика
Модифицирование MainMenu

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика


Сегодня мы разберемся, каким образом можно модифицировать MainMenu, а именно, последний пункт меню мы разместим с правой стороны формы, как, например это сделано в Total Commander. Для этого мы воспользуемся функцией ModifyMenu, которая определена в Delphi следующим образом

function ModifyMenu(
   hMnu: HMENU,          // Определяет меню, которое будет изменено
   uPosition: Cardinal,  // Определяет пункт меню, который будет изменен
   uFlags: Cardinal,     // Флаги
   uIDNewItem: Cardinal, // Идентификатор изменяемого пункта меню или подменю
   lpNewItem: PChar      // Содержание изменяемого пункта меню
   ): boolean;

Интерпритация параметра lpNewItem зависит от того, включает ли uFlags параметр MF_BITMAP, MF_OWNERDRAW или MF_STRING.

Приступим. Бросим на форму MainMenu, сделаем 4 пункта, назовем их 1, 2, 3, 4, каждый из которых состоит из нескольких подпунктов (в моем примере везде 4 подпункта). Имена пунктов оставим без изменений (N11, N21, N31 и N41 соответственно). В обработчик формы onCreate запишем следующий код

ModifyMenu( MainMenu1.Handle, 3,
            MF_BYPOSITION or MF_POPUP or MF_HELP,
            N41.Handle, Pchar( N41.Caption ) );

Теперь разберем, что мы написали. Первый параметр пропустим, надеюсь он всем понятен. Второй параметр, номер пункта, который мы хотим изменить. Так как мы хотим перенести вправо последний (четвертый) пункт меню, запишем сюда его номер (т.к. нумерация начинается с 0, то мы пишем 3). Далее идут флаги, определяющие, что именно мы хотим сделать (описание всех флагов можно посмотреть в хелпе). Четвертый параметр - указатель на изменяемый пункт. Последний параметр - новый заголовок изменяемого пункта, мы можем написать здесь что-то свое, или, как в примере, взять заголовок этого пункта.

И это все! Как видите, все элементарно просто. Как всегда, этот пример можно скачать в конце статьи. Удачи вам в программировании.

.: Пример к данной статье :.


При использовании материала - ссылка на сайт обязательна