2010-10-04 3 views

Répondre

1

Je ne pense pas que vous ayez besoin de modalité ... alors vous pouvez prendre l'option de siride de le fermer sur l'événement Deactivate. La raison pour laquelle vous n'avez pas besoin de le rendre modal: La première fois que vous l'affichez, il aura le focus et sera le plus haut possible. Modal vous empêche de cliquer ailleurs, mais vous voulez pouvoir cliquer ailleurs ... et quand vous le faites, le formulaire disparaît, il n'y a donc pas de besoins modaux.

+0

Que faire si le programmeur ne peut pas changer la nature modale? Supposons que c'est par conception? Néanmoins, si nécessaire, il existe d'autres moyens. Je ne vous rejetterai pas, bien que je pense que vous n'avez pas compris les possibilités. – Nayan

+0

En outre, Guamez a déclaré, l'utilisateur peut cliquer sur "Desktop". Même alors, le code devrait fonctionner. Vous pouvez toujours cliquer sur le bureau même si vos formulaires sont modaux .. sauf quelques scénarios spéciaux. – Nayan

+0

En supposant que le code suffise pour répondre aux clics de l'utilisateur, il peut probablement décider de l'affichage du formulaire. Quelles autres idées pensez-vous? –

2

Vous devez accrocher la souris (et le clavier si nécessaire) et capturer leurs événements. Ensuite, vérifiez si le clic est arrivé en dehors du formulaire (et de la zone). Si oui, marquer un signe qui peut être lu par le formulaire de modèle qu'il peut fermer.

Algo:

  1. Crochet événement click de souris.

  2. Lorsque la fonction de rappel est appelée, vérifiez la position de clic - si elle est à l'intérieur de votre forme ou non (vous pourriez avoir besoin de traduire les emplacements aux emplacements de bureau - J'espère que vous savez comment!)

  3. Si le point est en dehors du formulaire, définissez un drapeau (booléen ou tout ce qui vous rend heureux). Assurez-vous que le formulaire peut lire le drapeau en quelque sorte. Déclencher un événement pour que le formulaire soit capturé.

  4. Dans son gestionnaire, lisez le statut du drapeau. Si vrai, fermez/déchargez le formulaire.

This page will tell you technical details and functions.

+0

C'est beaucoup de travail pour ce qui pourrait être une réponse simple. Si le PO a absolument besoin que ce soit une forme modale (et je ne vois pas pourquoi il le ferait), alors ce que vous dites fonctionnera (c'est encore beaucoup d'efforts).Je préfère des solutions simples, cependant, autant que possible –

+0

Laissez OP décider que :) – Nayan

Questions connexes