Обычно, когда Вы создаёте меню в приложении, то код выглядит примерно так:

Автор: MAD Rodrguez

 Вы, наверное, задавались вопросом, почему системное меню постоянно одно и тоже ? Пример показывает, как добавить туда такие пункты как "About" или "Information", или что-нибудь ещё.

 Нам понадобится две вещи, первая это Item ID, который может быть любым целым числом. Второе это Описание(Caption) для нашего пункта меню. Нам понадобится также процедура, которая будет принимать сообщения Window для определения нажатия на наш пункт меню.

 

Допустим, у Вас есть TMainMenu MainMenu1 и HelpMenuItem в конце панели меню (Menubar). Если Вызвать следующий обработчик события OnCreate, то HelpMenuItem сместится вправо.

Ниже мы покажем вариант кода

Следующий пример демонстрирует добавление битмапа в пункт PopUpMenu при помощи API функции SetMenuItemBitmaps(). Эта функция имеет следующие параметры: дескриптор всплывающего меню, номер (начиная с нуля) пункта меню в который мы хотим добаить битмап, и два дескриптора битмапов (одна картинка для меню в активном состоянии, а вторая для неактивного состояния).

 

 

 

nmWindow - это Name пункта меню "Окна"

(этот код я писал для добавления открытых окон в пункт меню "Окна", главного меню своего приложения)

 

В примере показано как показать меню и выбрать в нем какой-то пункт, эмулируя нажатие "быстрой кдавиши" пункта меню. Если у Вашего пункта меню нет "быстрой клавиши" Вы можете посылать комбинации VK_MENU, VK_LEFT, VK_DOWN, и VK_RETURN, чтобы программно "путешествовать" по меню.

Как в контекстное меню системы Windows?

 Может быть, вы можете использовать Keybd_event для eumlate ALT + пробел.  Может быть, вы можете использовать TPopupmenu.

 Но у них всегда есть какие-то проблемы.  Метод ниже является идеальным решением!

 BTW: если ваша форма имеет borderstyle = bsNone, пожалуйста, сделайте это так:

 Набор форм стиль = bsSingle; и использовать код ниже, чтобы установить бодер форма:

 SetWindowLong(ручки, GWL_STYLE,GetWindowLong(ручки, GWL_STYLE)  и (не WS_CAPTION) или WS_DLGFRAME или WS_OVERLAPPED);

 

 

  Eugeny Sverchkov показывает как это можно сделать

 

В примере создается обработчик события Application.Hint - подсказки меню изображаются на status Panel:

1. Разместите на форме TControlBar. (закладка Additional) Установите Align = Client.

2. Разместите TToolBar (закладка Win32) внутри TControlBar.

3. Установите в True свойства Flat и ShowCaptions этого TToolBar.