Ordre des fenetres

Résolu
promethee2003 Messages postés 38 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 10 décembre 2006 - 29 juil. 2006 à 19:51
promethee2003 Messages postés 38 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 10 décembre 2006 - 31 juil. 2006 à 15:43
J'ai un petit soucis au sujet de l'ordre des fenetres d'un de mes projet...

J'ai une feuille principales... celle peut ouvrir une feuille modal (liste de fichiers)... cette feuille modal doit pouvoir ouvrir une feuille non modal avec des infos diverse.

VB refuse l'ouverture d'une feuille non modale si une autre fenetre modale est deja ouverte.

A noter que si la feuille modale est fermer, la feuille non modale doit absolument rester ouverte, ... et que si la feuille modal est afficher en même temps que la feuille non modale, celle ci doit etre accessible...

J'avoue que j'ai beaucoup de mal à resoudre ce probléme...

Si quelqu'un peut m'aider je le remercie...

10 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
30 juil. 2006 à 15:25
salut,

première form ouverte.
appel de la 2e qui ne doit pas être accessible tant qua la 2e est ouverte :

me.enabled=false
frm_secondaire_details.show

tu règles ainsi le problème de modal/non-modal.
pour le simple zorder des form, voir l'API setwindowpos

tous -> euh... vos conseils sont exemplés en dotnet? le fil n'est-il pas en VB6?....

++
PCPT   [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
29 juil. 2006 à 20:28
Ben déjà commence par regarder les définitions de "modal" et "non modal", tu comprendra ton problème tel que tu le pose, à peu de chance de trouver une solution.

Sevyc64  (alias Casy)<hr align="center" size="2" width="100%" /><stron></stron># LE PARTAGE EST NOTRE FORCE #
0
promethee2003 Messages postés 38 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 10 décembre 2006
29 juil. 2006 à 21:37
je sais,... mais il doit bien y en avoir une de solution...
0
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
29 juil. 2006 à 23:45
Salut j'ai un peu de mal a comprendre exactement ton pb ,
mais je peux te donner pas mal d'astuces qui devraient t'aiaider a le resoudre ..

tu as 2 sortes de forms
- les non-modales : ouvertes grace a showdialog (la premiere form chargée dune application windows form est non -modale, si tu fermes cette premiere form automatiquement cela fermera l'application)
un formulaire non-modal doit obligatoirement etre fermé pour avoir acces aux autres forms en cours de l'application
- les modales : ouvertes par show() , on peut facilement passer d'une form a une autre

on peut avoir quelques informations sur la collection de forms ouvertes grage a


My.Application.OpenForms
par exemple :
le nombre de forms ouverte  > My.Application.OpenForms.count
avoir acces a une form en partculier > My
.Application.OpenForms(i)
ainsi tu peux faire des tests de ce style  pour voir si la form est la premiere chargée du projet>  If

Me
Is
My.Application.OpenForms(0)
Then ...

tu peux egalement faire en sorte quune form modale soit toujours affichée au-dessus dune autre formtout en ayant acces aux deux forms


Dim frmrecherche As FRechercher
frmrecherche =
New FRechercher


frmrecherche.Owner = Me
frmrecherche.TopLevel =
True
Form_Frecherche.m_Forms_recherche_crees += 1
frmrecherche.Show()

et tu peux mm faire des tests de ce style



For
i = 0

To



My
.Application.OpenForms.Count - 1


If



Me



Is



My
.Application.OpenForms(i)

Then



occurence_recherche._mfenetre_demande = i







End



If

Next

a la rigueur au lieu de fermer une form si elle est non-modale , tu la cache (Hide()) en ayant prealablement effectuer les operations comme si elle ete vraiment fermée

tu peux également definir des classes Forms contenant des membres partagés (shared) qui permettent de créer les forms au fur et a mesure et qui gere la fin de l'application

voila ++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 juil. 2006 à 09:31
Dsl de te contredire romagny mais tu as inversé modal et non-modal sur ce coup.

La définition que tu donne pour modal est en fait celle de non-modal et réciproquement.

Sevyc64  (alias Casy)<hr align="center" size="2" width="100%" /><stron></stron># LE PARTAGE EST NOTRE FORCE #
0
promethee2003 Messages postés 38 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 10 décembre 2006
30 juil. 2006 à 10:35
je suis d'accord,... sauf qu'effectivement tu as un peut inversé les deux...
Mais cela ne regle pas mon probléme.

je vais essayé de le reexpliqué.

J'ai une form princiale qui contient un listview, lorsqu'on choisi un element on peut ouvrir une form secondaire qui contient des details.

cette deuxieme form s'ouvre en modal pour qu'on ne puisse pas touché à la form principale tant que la deuxieme est affiché.

jusque la tout fonctionne parfaitement. Cependant la form secondaire permet d'ouvrir une troisiéme form. Celle-ci doit s'affiché devant la principale et derriére la seconde. tout en restant accessible aussi bien par la form principale que par la secondaire. lorsque l'on ferme la form secondaire la troisieme ne doit pas être fermé. En fait la troisieme form doit etre autonome.

c'est assez compliqué je vous l'accorde.
0
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
30 juil. 2006 à 12:30
oOps pardon


wai jai tendance tout le temps a confondre comme cest tellement peu parlant modal et non-modal


 


par contre tu peux essayer  ainsi mais il faut que tu oubli l'idée de faire ta form secondaire avec showdialog
ainsi tu pourras passer tres f acilement dune fenetre a autre


...
frm_secondaire_details.Owner = Me
frm_secondaire_details
.TopLevel = True
frm_secondaire_details.show

frm3.Owner = Me
frm3
.TopLevel = True
frm3.show

enfin par contre si je puis me permettre ce genre d'idee avec tout un tas de fenetres qui se chevauchent je les avait au tout debut de mes etudes, il vaut mieux trouver une autre solution avec des panels par exemple que tu cachent ou rend visible puis localisent a endroit desire ou un autre moyen
+
0
promethee2003 Messages postés 38 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 10 décembre 2006
30 juil. 2006 à 13:20
je vais reflechir a tout ca...

encore merci...
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
31 juil. 2006 à 11:47
Salut,


Tu pourrais aussi vérifier si la 2e Form (celle que tu voulais Modal)
est ouverte avec une petite fonction que tu places dans le code la Form
principale. Il ne serait donc plus nécessaire d'ouvrir en Modal. Tu
peux alors te promener de Form2 à Form3 et inverse sans problème.


Code dans Form1

Private Sub Form_Activate()

    If IsForm2Open Then Form2.Show

End Sub


Function IsForm2Open() As Boolean

    Dim Frm As Form

   

    For Each Frm In Forms

        If Frm.Name = "Form2" Then

            IsForm2Open = True

            Exit Function

        End If

    Next

End Function

MPi
0
promethee2003 Messages postés 38 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 10 décembre 2006
31 juil. 2006 à 15:43
je comprend pas trop ton resonement... le solution la plus simple fut effectivement de reduire le nombre de form en utilisant des frames...
0
Rejoignez-nous