Як відловити подія згортання форми?
У додатку кілька форм - хочу щоб при згортанні будь-який з них згорталося все додаток. Але події OnMinimize у форми немає.
type
# XA0; TMyForm = class (TForm)
# XA0 ;.
# XA0; private
# XA0; # XA0; procedure WMSysCommand (var Message: TMessage); message WM_SYSCOMMAND;
# XA0 ;.
# XA0; end;
procedure TMyForm.WMSysCommand (var Message: TMessage);
begin
# XA0; if Message.WParam = SC_MINIMIZE then
# XA0; # XA0; PostMessage (Application.MainForm.Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
# XA0; inherited;
end;
І так в кожній формі :)
procedure TForm2.WMSysCommand (var Message: TMessage);
begin
if Message.WParam = SC_MINIMIZE then begin
// # XA0; PostMessage (Application.MainForm.Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
# XA0; Application.Minimize;
# XA0; exit;
end;
inherited;
end;
PS А як згорнути такий додаток клацанням мишки по його кнопці на панелі завдань?
> А як згорнути такий додаток клацанням мишки по його кнопці
> На панелі завдань
Той код, що написаний, всього лише доповнює до стандартних можливостей можливість згортати програму з неголовних форми. Стандартні можливості наведений код пі цьому не зачіпає, тому питання незрозуміле.
1) Коли запущено додаток і активна одна тільки головна форма - це додаток згортається клацанням мишки по його кнопці на панелі завдань.
2) Коли запущено додаток і активна # XA0, не головна форма, причому модальна - це додаток НЕ згортається клацанням мишки по його кнопці на панелі завдань. # XA0;
Питання: як згорнути програму в разі 2) # XA0; клацанням мишки по його кнопці на панелі завдань?
.
procedure MyWndProc (var Message: TMessage); message WM_ACTIVATEAPP;
.
procedure TForm2.MyWndProc (var Message: TMessage);
begin
# XA0; if Message.WParam = 0
# XA0; # XA0; then Application.Minimize
# XA0; # XA0; else Application.Restore;
end;
.
Додаток згортається, але тільки до тих пір, поки я тримаю кнопку мишки. Відпускаю мишку - додаток знову розгортається.