{ **** UBPFD *********** by kladovka.net.ru ****
>> Сворачивает все приложение при сворачивании неглавного окна.
Обработчик сообщении. При попытке свернуть окно - сворачивает все приложение. Предназначен для неглавных немодальных окон.
Зависимости: Как у стандартной формы...
Автор: Vemer, Vemer@mail.ru, Петрозаводск
Copyright: создано на основе примеров на www.delphimaster.ru
Дата: 17 марта 2004 г.
********************************************** }
//Пишем в Private формы(неглавной);
Procedure WMSysCommand(var message: TWMSysCommand); message WM_SysCommand;
//Пишем в тексте программы:
Procedure TF_Shop.WMSysCommand(var message: TWMSysCommand);
begin
If message.CmdType = SC_MINIMIZE then Application.Minimize
Else Inherited;
End;
Программное приложение на Delphi, которое обрабатывает сообщение WM_СYSCOMMAND для минимальзации всех окон приложения, когда неосновное окно (например, модальное-less форма) минимальизируется.
Вот разбивка кода:
Первая секция - комментарий с метаданными о авторе, правах и дате.
Вторая секция определяет процедуру WMSysCommand, которая будет вызвана при получении приложением сообщения WM_СYSCOMMAND.
Внутри этой процедуры проверяется тип команды - SC_MINIMIZE, что означает, что окно минимальизируется. Если это так, то вызывается Application.Minimize для минимальзации всех окон приложения.
Последняя секция определяет процедуру TF_Shop.WMSysCommand, которая переопределяет поведение по умолчанию обрабатывания сообщений WM_СYSCOMMAND для конкретной формы (TF_Shop). Эта процедура вызывает реализацию родительского класса с помощью Inherited, но только если тип команды не равен SC_MINIMIZE. Если это так, то минимальизируются все окна, как описано в шаге 3.
Идея за этим кодом - обеспечить, чтобы когда неосновное окно (например, модальное-less форма) минимальизировалось, все другие окна приложения также минимальизировались. Это поведение может быть полезно в определенных сценариях, где приложению нужно поддерживать единообразие внешнего вида своих окон.
Альтернативное решение:
Если вы хотите достичь аналогичного функционала без использования Application.Minimize, можно использовать следующий подход:
Сохраните ссылку на каждое окно, которое должно быть минимальизировано, когда неосновное окно минимальизируется.
Когда неосновное окно получает сообщение WM_СYSCOMMAND с типом SC_MINIMIZE, переберите хранящиеся ссылки и вызовите Minimize для каждого из них.
Этот подход дает вам больше гибкости в отношении окон, которые влияются на минимальизацию, но требует больше кода для управления ссылками на окна и их перебора.
Эта статья описывает код на языке Delphi, который сворачивает все приложение при сворачивании не главного окна.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.