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

Как сворачивать все приложение при сворачивании не главного окна?

Delphi , Программа и Интерфейс , Приложение своё

Как сворачивать все приложение при сворачивании не главного окна?

Code:

   procedure WMActivateApp(var Msg: TWMActivateApp); message WM_ACTIVATEAPP;
   procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
 
...
procedure Form2.WMActivateApp(var Msg: TWMActivateApp);
begin
if IsIconic(Application.Handle) then begin
   ShowWindow(Application.Handle, SW_RESTORE);
   SetActiveWindow(Handle);
end;
inherited;
end;
 
procedure Form2.WMSysCommand(var Msg: TWMSysCommand);
begin
if (Msg.CmdType = SC_Minimize) then
   ShowWindow(Application.Handle, SW_MINIMIZE)
else
   inherited;
end;

 

Теперь при сворачивании формы сворачивается все приложение.

Автор Alex

Взято с Vingrad.ru http://forum.vingrad.ru

Проблема заключается в том, что когда вы минимальизируете Form2, он вызывает ShowWindow(Application.Handle, SW_MINIMIZE), что минимальизирует всю приложение.

Чтобы решить это, можно изменить процедуру WMSysCommand для Form2, чтобы она только минимальизировала Form2 саму по себе, а не всю приложение. Вот обновленный код:

procedure Form2.WMSysCommand(var Msg: TWMSysCommand);
begin
  if (Msg.CmdType = SC_Minimize) then
    ShowWindow(Handle, SW_MINIMIZE)
  else
    inherited;
end;

Вызов ShowWindow(Handle, SW_MINIMIZE) вместо ShowWindow(Application.Handle, SW_MINIMIZE) обеспечивает минимальизацию только Form2, оставляя остальное приложение в рабочем состоянии.

Обратите внимание, что если вы хотите сохранить тот же поведение при минимальизации основного окна (Form1), можно добавить проверку, чтобы увидеть, какой форм является минимальизированным:

procedure Form2.WMSysCommand(var Msg: TWMSysCommand);
begin
  if (Msg.CmdType = SC_Minimize) then
    if not IsMainFormActive then
      ShowWindow(Handle, SW_MINIMIZE)
    else
      ShowWindow(Application.Handle, SW_MINIMIZE)
  else
    inherited;
end;

В этом коде IsMainFormActive - это свойство, возвращающее true, если Form1 является активным формой. Если это не так, то минимальизируйте только Form2; иначе минимальизируйте всю приложение.

При сворачивании не главного окна в приложении можно использовать обработчики событий WM_ACTIVATEAPP и WM_SYSCOMMAND, чтобы изменить поведение приложения.


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

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




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


:: Главная :: Приложение своё ::


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:18:45/0.0053980350494385/1