In mijn applicatie heb ik nu een TrayIcon aangemaakt.
Zodra de user op close ('x') drukt wil ik dat de app naar
de tray gaat. Dat ziet er dus zo uit:
private
(* intercept the minimize/close commands from the window
procedure WM_OnMinimize(var Msg : TWMSysCommand ); message WM_SYSCOMMAND;
procedure TForm1.WM_OnMinimize(var Msg: TWMSysCommand);
if (Msg.CmdType = SC_MINIMIZE) or
(Msg.CmdType = SC_CLOSE ) then
begin
Hide;
end;
Dit gaf als probleem dat de app zich nooit meer 'goed' afsloot
omdat dat altijd 'intercept' werd.
Nou heb ik het volgende:
procedure TForm1.WM_OnMinimize(var Msg: TWMSysCommand);
begin
if chk = false then
begin
if (Msg.CmdType = SC_MINIMIZE) or
(Msg.CmdType = SC_CLOSE ) then
begin
Hide;
end
end else
Form1.Close;
end;
Wanneer ik de applicatie echt wil laten sluiten zet ik de
variabele 'chk' op 'True'
Dit werkt wel prima, maar eigenlijk heb ik het idee dat
ie nou toch een loop maakt?
Hij voert de regel 'Form1.Close' uit, die word ondervangen, etc.
Of is een 'SC_CLOSE' iets anders dan een form.close?
Zodra de user op close ('x') drukt wil ik dat de app naar
de tray gaat. Dat ziet er dus zo uit:
private
(* intercept the minimize/close commands from the window
procedure WM_OnMinimize(var Msg : TWMSysCommand ); message WM_SYSCOMMAND;
procedure TForm1.WM_OnMinimize(var Msg: TWMSysCommand);
if (Msg.CmdType = SC_MINIMIZE) or
(Msg.CmdType = SC_CLOSE ) then
begin
Hide;
end;
Dit gaf als probleem dat de app zich nooit meer 'goed' afsloot
omdat dat altijd 'intercept' werd.
Nou heb ik het volgende:
procedure TForm1.WM_OnMinimize(var Msg: TWMSysCommand);
begin
if chk = false then
begin
if (Msg.CmdType = SC_MINIMIZE) or
(Msg.CmdType = SC_CLOSE ) then
begin
Hide;
end
end else
Form1.Close;
end;
Wanneer ik de applicatie echt wil laten sluiten zet ik de
variabele 'chk' op 'True'
Dit werkt wel prima, maar eigenlijk heb ik het idee dat
ie nou toch een loop maakt?
Hij voert de regel 'Form1.Close' uit, die word ondervangen, etc.
Of is een 'SC_CLOSE' iets anders dan een form.close?