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

Исправление контекстного меню для VCL-приложений в Delphi 2006

Delphi , Рабочий стол , TaskBar

При разработке приложений на Delphi 2006 пользователи могут столкнуться с проблемой неполного контекстного меню для кнопки задачи (taskbar button). В стандартном VCL-приложении отсутствуют такие опции, как "Переместить" (Move), "Изменить размер" (Size) и "Развернуть" (Maximize) в контекстном меню кнопки задачи. В то же время, системное меню приложения, доступное при нажатии на иконку формы, содержит полный набор стандартных пунктов меню.

Проблема

При создании нового VCL-приложения в Delphi 2006 и его запуске без добавления собственного кода или ссылок на собственные модули, контекстное меню кнопки задачи в панели задач не отображает все ожидаемые пункты меню. Системное меню приложения, которое появляется при нажатии на иконку формы, содержит все стандартные пункты меню. На прилагаемых скриншотах видно, что пункты "Переместить", "Изменить размер" и "Развернуть" отсутствуют в контекстном меню кнопки задачи.

Решение

Для исправления данной проблемы необходимо использовать следующий подход:

  1. В файле Project.dpr включите использование модуля Windows и добавьте следующий код после запуска основного цикла приложения:

    ```pascal uses Windows, ...

    Application.CreateForm(TMainForm, MainForm); ShowWindow(Application.Handle, SW_HIDE); Application.Run; ```

  2. В файле FMain.pas добавьте процедуры CreateParams и WMSysCommand в класс TMainForm:

    ```pascal TMainForm = class(TForm) private procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; protected procedure CreateParams(var Params: TCreateParams); override; ...

    procedure TMainForm.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); with Params do begin ExStyle := ExStyle or WS_EX_APPWINDOW; WndParent := GetDesktopWindow; end; end;

    procedure TMainForm.WMSysCommand(var Message: TWMSysCommand); begin if Message.CmdType = SC_MINIMIZE then ShowWindow(Handle, SW_MINIMIZE) else inherited; end; ```

    Обратите внимание, что этот код должен быть добавлен, когда свойство MainForm.Visible установлено в True во время проектирования.

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

Объяснение

В Delphi 2006 задача окна принадлежит классу TApplication, из-за чего при клике по кнопке в панели задач отображается системное меню TApplication. В более новых версиях Delphi, начиная с Delphi 2007, используется свойство Application.MainFormOnTaskBar, которое позволяет владельцем окна стать главной форме, что ведет к отображению системного меню формы при клике по кнопке в панели задач. Это свойство автоматически устанавливается в значение True в более новых версиях Delphi.

Заключение

Приведенный выше код позволяет разработчикам Delphi 2006 исправить проблему с неполным контекстным меню для кнопки задачи, обеспечивая полный набор функций управления окном, доступных в стандартном системном меню.

Создано по материалам из источника по ссылке.

Исправление контекстного меню для кнопки задачи в панели задач для VCL-приложений, созданных в Delphi 2006, чтобы оно включало пункты 'Переместить', 'Изменить размер' и 'Развернуть'.


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

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




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


:: Главная :: TaskBar ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 12:37:56/0.004896879196167/1