Problème de réduction de fenêtre

cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013 - 6 juin 2012 à 18:19
cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013 - 7 juin 2012 à 23:29
Bonjour à tous,
J'ai une appli qui démarre en mode fenêtre agrandie (vbMaximize).
Je voudrais mettre en place un dispositif qui réorganise la feuille lorsqu'elle passe en mode réduit (vbNormal).
Pour cela, j'essaye d'intercepter le Form_Resize:
Private Sub Form_Resize()
If Me.WindowState = vbMaximized Then
Affi.height = Screen.height - Affi.Top - 1950
End If
If Me.WindowState vbNormal And iws 1 Then
Affi.height = Screen.height - Affi.Top - 5000
End If
End Sub
Malheureusement, au démarrage, VB considère dans tous les cas que le WindowState est en position normale!
Mon appli démarre donc en fenêtre agrandie avec une disposition des objets correspondant au mode réduit.
J'ai essayé un tas de pointeurs pour lui faire ignorer la position de démarrage; mais en vain.
Y aurait-il un autre dispositif que WindowState pour intercepter un clic sur le bouton "Agrandir"?
Merci pour votre aide.
Jacques13

32 réponses

cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013
7 juin 2012 à 00:25
Pas professionnel, mais "professoral", tu vois bien que tu ne lis même pas correctement ce qu'on t'écrit.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 juin 2012 à 00:31
kif kif !
Ce ton n'est par ailleurs venu qu'après ton insistance à vouloir à la fois :
- ne pas écouter
- ne pas tester
- continuer à affirmer n'importe quoi
- le tout en ne disant pas tout

Excuse, mais j'ai passé l'âge de jouer de cette manière. Quand on appelle à l'aide, on écoute attentivement celui qui vient aider. Ou on lui demande pas d'aide. Un point, c'est tout.
Tes remarques me donnent à penser que mon aide ne t'intéresse pas et que ce que je te dis est faux ou insensé. J'en prends bonne note. Tu comprends cela ?
Bonne nuit.



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 juin 2012 à 01:00
Mais quand même ! et avant d'aller dormir ! et pour être encore plus "professoral" (puisqu'il faut forcer un élève à écouter ! ===>>
Voilà le petit test complet et tout bête qui decvrait t'ouvrir les yeux :
Un projet vierge ==>> un seul Form avec sa propriété windowstate = vbmaximized et ce code :
Private Sub Form_Activate()
 MsgBox "lors de l'activate : mon windowstate est = " & Me.WindowState
End Sub

Private Sub Form_Initialize()
 MsgBox "lors de l'initialize : mon windowstate est = " & Me.WindowState
End Sub

Private Sub Form_Load()
 MsgBox "lors du load : mon windowstate est = " & Me.WindowState
End Sub

Private Sub Form_Paint()
   MsgBox "lors du paint : mon windowstate est = " & Me.WindowState
End Sub

Private Sub Form_Resize()
   MsgBox "lors du resize : mon windowstate est = " & Me.WindowState
End Sub


Fais-le donc, ce test à 4 sous et qui n'a besoin d'aucun commentaire, hein ...


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013
7 juin 2012 à 11:36
Ceci pour ceux qui veulent bien écouter ce que j'ai à dire:
Le test d'Ucfoutu apporte bien la preuve de la réalité de mon problème:
Bien que la propriété windowstate soit fixée à vbmaximized, au démarrage le test affiche vaillamment:
"lors du load : mon windowstate est = 0" (faux!)
puis, dans la foulée:
"lors de l'initialize : mon windowstate est = 0" (faux, encore!)
ce n'est qu'au 3e coup que l'on a:
"lors du resize : mon windowstate est = 2"...
C'est bien cette toute première valeur erronée de WindowState qui me pose problème.
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 juin 2012 à 12:01
Je vois que tu te réveilles !
Je n'ai cessé de te le répéter : c'est le seul évènement rezize, qu'il faut considérer (et là : pas d'erreur possible !)
Pour mémoire (encore une fois, donc) :
on ne parle pas de "dispositif", mais d'évènement declenché.
Sous VB6 il s'agit de l'évènement Resize du Form.
Pour savoir quelle est la modif resize apportée : on examine son nouvel WindowState. Si l'ancien a été mis en variable static ou en variable Générale : on compare avec le nouveau et on sait !
Où est donc le problème ?

Et ce que tu appelles une erreur, n'en est pas une du tout ! Au chargement (au Load) seul s'effectue le chargement et rien d'autre. Même si tu voulais "forcer", tu n'y modifierais pas le Windowstate :
Essaye donc et tu comprendras :
Private Sub Form_Load()
 Me.WindowState 2 'on essaye de le forcer>> ce sera forcément en vain =)== )> ne sera constaté qu'ensuite, au Resize, bien évidemment
 MsgBox Me.WindowState
End Sub

Ce que tu as besoin de comprendre (et c'est un point important), c'est le rôle de l'évènement Load. Il ne constate à son stade rien ! Il ne fait que charger les paramètres qui seront utilisés ensuite (et constatés ensuite, dans les évènement subséquents.)
Est-ce plus clair ainsi ?
_______________________

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013
7 juin 2012 à 16:54
Il est vrai que dans la routine test, le premier passage dans le resize donne bien un windowstate à 2.
Malheureusement dans mon appli ce passage est à 0!
Peut-être que ce dysfonctionnement provient du fait que j'utilise un skin?
Si seulement je pouvais intercepter le clic sur le bouton "agrandir" sans passer par l'évènement "Resize"...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 juin 2012 à 17:11
Peut-être que ce dysfonctionnement provient du fait que j'utilise un skin?

Tu vois ? Voilà encore une chose dont tu n'avais point parlé.
Ce n'est plus pareil que de partir d'un windowstate défini en mode création. Plus du tout !
Et tu l'utilises quand et comment ? Dans quel évènement ?

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013
7 juin 2012 à 17:19
Je n'en avais pas parlé parce que je ne pensais pas que cela pouvait avoir une incidence sur ce point particulier.
D'ailleurs sur un programme de plus de 8000 lignes, il y a beaucoup de choses dont je n'ai pas parlé...
Penses-tu qu'il soit possible d'intercepter le clic sur le bouton "agrandir" sans passer par l'évènement "Resize"?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 juin 2012 à 17:35
Ce n'est plus pareil que de partir d'un windowstate défini en mode création. Plus du tout !
Et tu l'utilises quand et comment ? Dans quel évènement ?

Et une question de plus (on ne sait jamais) ce skin est-il un ocx ou écrit en dur dans ton code ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013
7 juin 2012 à 17:43
C'est un OCX, il s'agit de VB2_SkinCtrl.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 juin 2012 à 21:25
Un ocx !
Ben alors et à moins que tu n'en possèdes le code source pour le modifier et le recompiler, tu le subis tel qu'il est. Et si, tel qu'il est conçu, il ouvre en vbnormal, tu ne peux que le subir en vbnormal à son ouverture
Je ne vois pas ce que tu pourrais faire d'autre.
Question donc : en possèdes-tu le source (en vue de modif puis recompilation) ? Si non : trace une croix dessus et subis-le tel quel !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013
7 juin 2012 à 23:29
OK.
Merci pour ton aide.
0
Rejoignez-nous