Prueba a interceptar el mensaje WM_SYSCOMMAND
Código Delphi
[-]
TForm1 = class(TForm)
private
procedure WMSYSCOMMAND(var Msg: TMessage); message WM_SYSCOMMAND;
public
end;
....
procedure TForm1.WMSYSCOMMAND(var Msg: TMessage);
begin
if Msg.wParam = SC_MINIMIZE then
begin
Hide
end else
Inherited;
end;