Page 1 sur 1

[R] Gui et subtilité

Posté : jeu. 12 juin 2014 20:28
par Ks10
Bonsoir à tous !

Ce soir j'essaye de travailler sur une GUI composé d'élément image qui représente des boutons.
Donc voila ma problématique :

-> On peut cliqué sur les boutons (Sur ce point pas de soucis)
-> Lorsqu'on clique sur un bouton, celui-ci fait appel à une fonction qui construit une interface (La aussi pas de soucis)
-> Lorsque l'interface est appelé, si je met une boucle while pour pouvoir agir sur cette interface, l'autre bouton qui permet d'appeler l'autre fonction pour construire une autre interface n'est plus cliquable. (premier problème)
-> Si je ne met pas de boucle je ne peux pas agir sur cette interface mais le bouton est cliquable. Cependant lorsque je clique sur ce bouton. Comment détecté tous les contrôles appelé récemment pour pouvoir les détruires pour pouvoir construire ma nouvelle interface ?

Et comme un code parle mieux qu'un texte le voici :

Code : Tout sélectionner

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 615, 437, 192, 124)
Global $Pic1 = GUICtrlCreatePic("", 24, 24, 204, 84)
Global $Pic2 = GUICtrlCreatePic("", 24, 128, 204, 76)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg

  Case $pic1
       Call("_MapremiereInterface")

  Case $pic2
      Call("_MaSecondeInterface")

; SI JE CLIQUE SUR CETTE IMAGE JE CONSTRUIT LAUTRE INTERFACE MAIS JE NARRIVE PAS A DETRUIRE LAUTRE.

  Case $GUI_EVENT_CLOSE
   Exit

 EndSwitch
WEnd


Func _MaPremiereInterface()

Local $Input1 = GUICtrlCreateInput("Input1", 416, 40, 121, 21)
Local $Input2 = GUICtrlCreateInput("Input2", 416, 88, 121, 21)

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg

  Case $GUI_EVENT_CLOSE
   Exit

EndSwitch
WEnd

; SI JE LAISSE CETTE BOUCLE JE NE PEUX PLUS CLIQUER SUR LAUTRE IMAGE SI JE LENLEVE CEST BON
EndFunc


Func _MaSecondeInterface()


Local $Input3 = GUICtrlCreateInput("Input3", 416, 144, 121, 21)
Local $Input4 = GUICtrlCreateInput("Input4", 416, 176, 121, 21)


EndFunc
 
Evidemment chaque interface doit pouvoir être appelée et détruire autant de fois que possible un peu comme des onglets quoi.

Merci d'avance !

Re: [..] Gui et subtilité

Posté : jeu. 12 juin 2014 20:48
par jguinch
Euh, j'ai pas tout à fait saisi le principe de ta GUI...
Plutôt que de détruire les contrôles, tu aurais plutôt intérêt de les masquer : GUICtrlSetState($ID, $GUI_HIDE)

Je ne comprends pas pourquoi tu mets un boucle While dans _MaPremiereInterface()
Tu veux une seul ou plusieurs fenêtres ?

Re: [..] Gui et subtilité

Posté : ven. 13 juin 2014 06:57
par Ks10
Le soucis c'est que pour masquer il faut avoir accès a la variable...
Si elle est dans la fonction je ne peux pas avoir accès a la variable, on me dit que la variable n'a pas été déclaré avant.

J'ai mit une boucle while pour pouvoir agir sur les contrôles de cette interface. Il n'y aura pas que des inputs mais des boutons aussi.
Je veux une seul GUI justement.

Dans ma gui il y a 2 boutons principales, chaque bouton crée une interface dans lequel on peut intéragir mais les deux boutons doit être accessibles lorsqu'une interface est généré et l'interface généré doit pouvoir être "détruit" ou masquer pour pouvoir laisser place à la nouvelle interface.

J'ai fait le code sous cette forme mais si vous avez une autre solution avec des explications je suis preneur ^^

Re: [..] Gui et subtilité

Posté : ven. 13 juin 2014 20:06
par Ks10
Problème toujours d'actualité, je poursuit mes recherches mais aucune piste...

Re: [..] Gui et subtilité

Posté : ven. 13 juin 2014 20:31
par julie
un truc du genre ?

Code : Tout sélectionner

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 615, 437, 192, 124)
Global $Pic1 = GUICtrlCreatePic("", 24, 24, 204, 84)
Global $Pic2 = GUICtrlCreatePic("", 24, 128, 204, 76)
 $Input1 = GUICtrlCreateInput("Input1", 416, 40, 121, 21)
 $Input2 = GUICtrlCreateInput("Input2", 416, 88, 121, 21)
 $Input3 = GUICtrlCreateInput("Input3", 416, 144, 121, 21)
 $Input4 = GUICtrlCreateInput("Input4", 416, 176, 121, 21)

GUICtrlSetState($Input1,$GUI_HIDE)
GUICtrlSetState($Input2,$GUI_HIDE)
GUICtrlSetState($Input3,$GUI_HIDE)
GUICtrlSetState($Input4,$GUI_HIDE)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg

  Case $pic1
      _MaPremiereInterface()
  Case $pic2
      _MaSecondeInterface()

  Case $GUI_EVENT_CLOSE
   Exit

 EndSwitch
WEnd


Func _MaPremiereInterface()
GUICtrlSetState($Input1,$GUI_SHOW)
GUICtrlSetState($Input2,$GUI_SHOW)
GUICtrlSetState($Input3,$GUI_HIDE)
GUICtrlSetState($Input4,$GUI_HIDE)

EndFunc


Func _MaSecondeInterface()
GUICtrlSetState($Input3,$GUI_SHOW)
GUICtrlSetState($Input4,$GUI_SHOW)
GUICtrlSetState($Input1,$GUI_HIDE)
GUICtrlSetState($Input2,$GUI_HIDE)

EndFunc
 
dans l'exemple ci dessus les controle ne sont pas detruit mais juste caché pourquoi veut tu les detruire absolument ?

Re: [..] Gui et subtilité

Posté : ven. 13 juin 2014 22:32
par jguinch
Ks10 a écrit :Si elle est dans la fonction je ne peux pas avoir accès a la variable
D'où la nécessité de déclarer la variable en début de script en Global :roll:

Re: [..] Gui et subtilité

Posté : sam. 14 juin 2014 14:34
par Ks10
@Julie
Je te remercie cela correspond tout a fait à mon besoin. C'était pas compliquer mais bon je ne sait pas pourquoi j'y est pas pensé.

@jguinch
Effectivement, en me confrontant à ce problème j'ai comprit la nécessité de déclarer les variables au début. :)

Merci à tous.