Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Системное меню приложения

Delphi , Компоненты и Классы , Меню



Автор: Davyd
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> 
Если в HNDL указать Application.Handle, то меню добавиться к меню
при клике правой кнопокой мыши на панели задач.
Если Form1.Handle (или любая ваша форма и даже не ваша),
то к системному меню окна клик на иконке окна (слева сверху в углу).

Зависимости: SysUtils, Menus
Автор:       Davyd, davyd@pisem.net, ICQ:163118406, Самара
Copyright:   Собственное написание (Давид)
Дата:        4 апреля 2003 г.
***************************************************** }

procedure ExtendSysMenu(HNDL: THandle; AddMenu: TMainMenu);
var
  i: integer;
begin
  if (AddMenu = nil) or (HNDL = 0) then
    Exit; //Проверяем ссылку на объект

  AppendMenu(GetSystemMenu(HNDL, False),
    MF_SEPARATOR, 0, ''); //Добавляем разделитель

  with AddMenu do
    for i := 0 to Items.Count - 1 do
      AppendMenu(GetSystemMenu(HNDL, False),
        MF_POPUP, Items[i].Handle,
        PChar(Items[i].Caption));
end;

Пример использования:

//На форму кидаем MainMenu (компоненту)
procedure TForm1.FormCreate(Sender: TObject);
begin
  ExtendSysMenu(Application.Handle, MainMenu1);
  ExtendSysMenu(Form1.Handle, MainMenu1);
end;

Система меню расширения

Процедура ExtendSysMenu принимает два параметра: HNDL, представляющий handle окна или приложения, для которого необходимо расширить системное меню, и AddMenu, который является компонентом TMainMenu, содержащим элементы меню, которые нужно добавить.

Процедура сначала проверяет, является ли параметр AddMenu равным нулю или если параметр HNDL равен 0. Если любая из этих условий истинна, процедура выходит из себя.

Затем она добавляет разделитель в системное меню с помощью функции AppendMenu из модуля SysUtils.

Далее она проходит по каждому элементу компонента AddMenu и добавляет каждый элемент как пункт popup-меню в системное меню. Флаг MF_POPUP указывает, что это пункт popup-меню, а параметр Items[i].Handle specifies the handle of the item to be added. Наконец, она устанавливает текст пункта меню с помощью конвертации PChar(Items[i].Caption).

Пример использования

Пример использования демонстрирует, как использовать процедуру ExtendSysMenu в приложении Delphi. В этом случае код создает компонент главного меню (MainMenu1) и вызывает процедуру ExtendSysMenu два раза:

  • Однажды с параметром Application.Handle как handle окна для добавления пунктов меню в системное меню приложения.
  • Однажды с параметром Form1.Handle как handle окна для добавления пунктов меню в системное меню формы.

Замечания

  • Код предполагает, что компонент AddMenu является валидным объектом TMainMenu и содержит, по крайней мере, один элемент.
  • Процедура ExtendSysMenu может быть вызвана несколько раз с различными параметрами HNDL и AddMenu для добавления или удаления пунктов меню из системного меню.
  • Этот код-сниппет является специфичным для Delphi и может не работать с другими языками программирования или платформами.

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

В статье описывается процедура для добавления пользовательского меню в системное меню приложения Delphi, а также приведен пример ее использования на форме.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Меню ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 06:01:57/0.013411045074463/1