Cita:
Empezado por aguml
...Ahora que he puesto esa linea aparece una excepcion al mostrar el menu del systrayicon. El problema es que no hay ningun form activo al ser el unico y estar oculto y el componente hace uso de este codigo:
Código PHP:
void __fastcall TSysTrayIcon::ShowMenu() { if(FPopupMenu == NULL) return;
TPoint point; GetCursorPos((tagPOINT*)&point);
try { if (Screen->ActiveForm->Handle != NULL) SetForegroundWindow(Screen->ActiveForm->Handle); } catch (...) { }
FPopupMenu->Popup(point.x, point.y); }
El caso es que ActiveForm vale NULL y da una excepcion y no la pasa ni con el catch correctamente.
He hecho un chapú para solucionarlo que es hacer en el evento OnCreate del form Form1->Show() y Form1->Hide() y con eso ya hay un form activo y no falla pero durande unas decimas aparece y desaparece el form y no quiero que pase eso.
|
Efectivamente la función falla cuando
Application->ShowMainForm = false porque en ese caso
Screen->ActiveForm == NULL
He aprovechado para corregir eso y ampliar esa funcionalidad de forma sencilla
.
Código PHP:
// Esto hará que la App arranque escondida, no visible en la barra de tareas y si en el SysTray
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Application->ShowMainForm = false;
SysTrayIcon1->Hide = true;
SysTrayIcon1->Visible = true;
}
El enlace del componente actualizado lo tienes
aquí
Saludos