He visto lo que dices y he dado unas vueltas al control TSysTrayIcon tenía un bug en la última actualización.
Descarga la última versión.
Debes cambiar tu código de la siguiente forma:
En Main.h añade:
Código PHP:
private:
bool SyStrayCanClose;
En el código Main.cpp eliminas OnWMSysCommand y su declaración, además modificas lo siguiente:
Código PHP:
void __fastcall TForm1::SysTrayIcon1Restore(TObject *Sender)
{
SysTrayIcon1->Visible = false;
SysTrayIcon1->Hide = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SysTrayIcon1Minimize(TObject *Sender)
{
bool SysTray = CheckBoxMinToSysTray->Checked && ComboBox1->ItemIndex >= 1;
SysTray |= !SyStrayCanClose;
SyStrayCanClose = true;
SysTrayIcon1->Visible = SysTray;
SysTrayIcon1->Hide = SysTray;
if(SysTrayIcon1->Animate == true)
SysTrayIcon1->ShowBalloon("Buscando el serial","Estoy buscando el serial, por favor espere a que termine.");
else
SysTrayIcon1->ShowBalloon("Sin actividad","Ahora mismo no estoy realizando ninguna busqueda.\nPermanezco aquí esperando a que me pongas a currar.");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
if(CloseApp){
CanClose = CloseApp;
}else{
CanClose = !(CheckBoxMinToSysTray->Checked && ComboBox1->ItemIndex != 1);
SyStrayCanClose = CanClose;
SysTrayIcon1->Minimize();
}
}
Saludos.