Réduire au minimum Delphi application avec menu Live Popup
Question
Je tente d'exécuter ce dans une minuterie:
Application.Minimize;
ShowWindow( Application.handle, SW_HIDE );
Il a été dans le code pour toujours et nous vient de découvrir qu'il ne fonctionne pas lorsque vous avez un popupmenu actif, il ne minimise pas la fenêtre parent MDI.
Je suppose que si je peux fermer le menu contextuel avant d'exécuter ce code, alors je serai ok. Le problème est, ce code est dans un parent MDI et je ne sais pas où le menu contextuel actuel. Peu importe si elle fait partie de la barre d'outils d'une autre forme, cette forme barre d'outils, le produit d'un clic droit ou cette clé apparemment inutile à côté de la barre d'espace.
Alors, est-il un moyen de masquer le menu contextuel actif dans mon programme entier?
En outre, s'il y a un meilleur morceau code que ce que j'utilise pour minimiser ça va contourner cette question, ce serait génial d'info aussi.
La solution
Pour fermer un menu contextuel vous pouvez utiliser
if GetCapture <> 0 then
SendMessage(GetCapture, WM_CANCELMODE, 0, 0);
dans votre code avant d'essayer de minimiser la forme.