Comment obtenir une form non modale sur form modale ?

casnic Messages postés 11 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 3 janvier 2012 - 9 janv. 2009 à 12:00
casnic Messages postés 11 Date d'inscription mardi 12 octobre 2004 Statut Membre Derniè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).


Merci d'avance pour votre aide
Casnic

4 réponses

cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
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 çà ?

++

Fauve

<hr size="2" width="100%" />
Pensez : Réponse Acceptée 
0
casnic Messages postés 11 Date d'inscription mardi 12 octobre 2004 Statut Membre Derniè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.

Casnic
0
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
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()

++

Fauve

<hr size="2" width="100%" />
Pensez : Réponse Acceptée 
0
casnic Messages postés 11 Date d'inscription mardi 12 octobre 2004 Statut Membre Derniè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.

Quoiqu'il en soit, merci beaucoup pour ton aide.

@+



Casnic
0
Rejoignez-nous