[R] Gui et subtilité

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

[R] Gui et subtilité

#1

Message 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 !
Modifié en dernier par Ks10 le sam. 14 juin 2014 14:36, modifié 1 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Gui et subtilité

#2

Message 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 ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Gui et subtilité

#3

Message 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 ^^
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Gui et subtilité

#4

Message par Ks10 »

Problème toujours d'actualité, je poursuit mes recherches mais aucune piste...
Avatar du membre
julie
Niveau 5
Niveau 5
Messages : 128
Enregistré le : sam. 28 janv. 2012 17:28
Status : Hors ligne

Re: [..] Gui et subtilité

#5

Message 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 ?
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Gui et subtilité

#6

Message 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:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Gui et subtilité

#7

Message 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.
Répondre