Comment obtenir une form non modale sur form modale ?
casnic
Messages postés11Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention 3 janvier 2012
-
9 janv. 2009 à 12:00
casnic
Messages postés11Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention 3 janvier 2012
-
31 janv. 2009 à 12:47
Bonjour à tous,
J'ai du développer un clavier virtuel pour une application de ma boîte.
Il s'agit d'une form non modale connaissant le contrôle actif de la dernière form activée. S'il s'agit d'une textbox, alors la clavier virtuel fait son travail.
Mais je me retrouve avec un problème dont je ne vois toujours pas de solution.
Lorsque la dernière form active est modale, il est impossible d'utiliser la form contenant le clavier virtuel. Ce qui est somme toute logique.
Quelqu'un aurait-il une solution m'évitant de revoir la quasi-totalité de la gestion que j'ai mise en place (en fait, il ne me reste que très peu de temps).
Et la solution d'utiliser le clavier virtuel de Windows ne convient pas au client (il doit être différent).
cs_fauve
Messages postés661Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention23 mars 20118 14 janv. 2009 à 21:24
Salut,
Si j'ai bien compris, tu affiches ta form en tant que modale pour quelle reste au dessus de ton clavier virtuel mais qui du coup t'empêche d'utiliser ton clavier sur l'autre form. C'est bien çà ?
casnic
Messages postés11Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention 3 janvier 2012 25 janv. 2009 à 19:28
C'est exactement le problème. En attendant le client veut bien utiliser clavier visuel de Windows mais il aimerait une autre solution assez rapidement. Et pour le moment je ne vois pas comment faire.
cs_fauve
Messages postés661Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention23 mars 20118 26 janv. 2009 à 15:16
Salut,
Pour ta form ne la fait plus apparaitre en tant que form modale mais plutôt non modale et dans ce cas, tu mets sa propriété TopMost à True.
Ainsi, elle restera au premier plan et ne t'empêchera pas d'utiliser ton clavier virtuel.
Cependant, si l'utilisateur jongle avec plusieurs logiciels différents (par exemple, word et excel), en passant sur Word, la form avec la propriété TopMost à True restera au premier plan donc cela cachera une partie de Word, ce qui peut être génant pour l'utilisateur.
La solution serait d'utiliser les évènements Activated et Deactivate de la form avec le clavier virtuel.
Dés que tu affiches l'autre fenêtre, tu mets sa propriété TopMost à True. Puis dans l'évènement Activated de la Form du clavier, tu mets :
Form2.TopMost = True
et dans l'évènement Deactivate, tu mets :
Form2.TopMost = False
Note : Form2 >>> c'est la fenêtre que tu voulais afficher en tant que form modale mais avec TopMost, n'utilises plus ShowModal() mais Show()
casnic
Messages postés11Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention 3 janvier 2012 31 janv. 2009 à 12:47
Salut,
Merci pour ta réponse. J'ai oublié de dire que le code n'est pas en VB6 mais en VB.Net 2003. Ce qui ne change pas vraiment el problème.
J'ai déjà pensé à "jouer" avec la propriété TopMost mais malheureusement certaines de mes fenêtres doivent s'afficher en modal (ShowDialog de VB.Net) afin que l'utilisateur ne puisse accéder aux autres forms déjà ouvertes dans l'application.
J'ai bien l'impression de ne pas avoir d'autre solution que de déplacer le clavier virtuel dans une autre application que récupèrera le handle de la fenêtre active de mon apllication principale. De cette manière, peu importe que la fenêtre active soit modale ou non.