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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top