[R] Boucle avec inputs clignotants

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
benzo
Niveau 4
Niveau 4
Messages : 60
Enregistré le : mar. 07 août 2007 07:45
Status : Hors ligne

[R] Boucle avec inputs clignotants

#1

Message par benzo »

Bonjour,
J'ai deux boutons radios dans ma GUI.
Je coche un des deux et cela a pour effet de griser les "inputs".
Problème, ils clignotent très vite et c'est un peux dégueux visuellement. :roll:
Merci d'avance pour vos propositions.
Opt("GuiOnEventMode", 1)
$Form1 = GUICreate(" Check 11.08.2016", 436, 273, 192, 114)
$Button1 = GUICtrlCreateButton("Appliquer", 256, 40, 131, 169, $WS_GROUP)
GUICtrlSetOnEvent($Button1, "_appliquer")
$Label1 = GUICtrlCreateLabel("@iP", 64, 40, 24, 17)
$ButtonAdresseIP = GUICtrlCreateInput(@IPAddress1, 96, 40, 121, 21)

;GUICtrlSetState($AdresseIP, $GUI_ENABLE)
$ButtonMask = GUICtrlCreateInput("", 96, 72, 121, 21)
$ButtonPasserelle = GUICtrlCreateInput("", 96, 104, 121, 21)
$ButtonDns = GUICtrlCreateInput("", 96, 136, 121, 21)
$AdresseIP = GUICtrlRead($ButtonAdresseIP)
$Mask = GUICtrlRead($ButtonMask)
$Passerelle = GUICtrlRead($ButtonPasserelle)
$Dns = GUICtrlRead($ButtonDns)

$Label2 = GUICtrlCreateLabel("Masque", 48, 72, 42, 17)
$Label3 = GUICtrlCreateLabel("Passerelle", 40, 104, 52, 17)
$Label4 = GUICtrlCreateLabel("Dns", 64, 136, 23, 17)
$CheckboxDhcp = GUICtrlCreateRadio("Dhcp", 96, 168, 97, 17)
;GUICtrlSetState($CheckboxDhcp, $GUI_UNCHECKED)

$CheckboxTest = GUICtrlCreateRadio("Test", 96, 192, 97, 17)
GUICtrlSetState($CheckboxTest, $GUI_CHECKED)
GUISetState(@SW_SHOW)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

While 1
   $idMsg = GUIGetMsg()
   Switch $idMsg
      Case $GUI_EVENT_CLOSE
         Exit
      Case $idMsg = $CheckboxDhcp
         sleep(200)
         If GUICtrlRead($CheckboxDhcp) = $GUI_CHECKED Then
            GUICtrlSetState($ButtonAdresseIP, $GUI_DISABLE)
            GUICtrlSetState($ButtonMask, $GUI_DISABLE)
            GUICtrlSetState($ButtonPasserelle, $GUI_DISABLE)
            GUICtrlSetState($ButtonDns, $GUI_DISABLE)
            else
            GUICtrlSetState($ButtonAdresseIP, $GUI_ENABLE)
            GUICtrlSetState($ButtonMask, $GUI_ENABLE)
            GUICtrlSetState($ButtonPasserelle, $GUI_ENABLE)
            GUICtrlSetState($ButtonDns, $GUI_ENABLE)
         EndIf
      Case $idMsg = $CheckboxTest
         sleep(200)
         If GUICtrlRead($CheckboxTest) = $GUI_CHECKED Then
            GUICtrlSetState($ButtonAdresseIP, $GUI_ENABLE)
            GUICtrlSetState($ButtonMask, $GUI_ENABLE)
            GUICtrlSetState($ButtonPasserelle, $GUI_ENABLE)
            GUICtrlSetState($ButtonDns, $GUI_ENABLE)
         Else
            GUICtrlSetState($ButtonAdresseIP, $GUI_DISABLE)
            GUICtrlSetState($ButtonMask, $GUI_DISABLE)
            GUICtrlSetState($ButtonPasserelle, $GUI_DISABLE)
            GUICtrlSetState($ButtonDns, $GUI_DISABLE)
         EndIf
   EndSwitch
WEnd
Modifié en dernier par benzo le mer. 24 août 2016 11:24, modifié 1 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [...] Boucle avec inputs clignotants

#2

Message par jguinch »

A première vue, il y a un problème : tu utilises le mode Onevent (GuiOnEventMode = 1) et GUIGetMsg, ce qui, me semble t-il, n'est pas compatible
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [...] Boucle avec inputs clignotants

#3

Message par orax »

Et il y a une mauvaise utilisation de Switch...Case.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [...] Boucle avec inputs clignotants

#4

Message par walkson »

Et ça ne clignote pas.
Vous pouvez utiliser TimerInit ( ) ou AdlibRegister () pour le faire à l'allure souhaitée
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
benzo
Niveau 4
Niveau 4
Messages : 60
Enregistré le : mar. 07 août 2007 07:45
Status : Hors ligne

Re: [...] Boucle avec inputs clignotants

#5

Message par benzo »

@jguinch, effectivement ce n'est pas très logique d'utiliser GuiOnEventMode = 1 et GUIGetMsg
J'ai vu dans la doc que si GuiOnEventMode = 1alors tout ce qui est retourné par GuiGetMsg sera à 0

Du coup j'ai opté pour créer 2 fonctions déclenchées grâce au GuiOnEventMode (voir code à la fin du post)

@orax ok je ne testais pas bien les différentes valeurs de l'expression $idMsg mais du coup je n'ai plus ce contrôle de conditions à tester dans la boucle puisque j'opte pour le GuiOnEventMode

@walkson ,sisi ca clignote je te jure :P
mettre une temporisation n'est pas adaptée dans mon cas puisque je souhaite une action immédiate et un rafraichissement immédiat de l'interface
en fonction du choix de l'utilisateur

En tout cas merci à tous pour votre aide.
Opt("GuiOnEventMode", 1)
$Form1 = GUICreate(" Check", 436, 273, 192, 114)
$Button1 = GUICtrlCreateButton("Appliquer", 256, 40, 131, 169, $WS_GROUP)
GUICtrlSetOnEvent($Button1, "_appliquer")
$Label1 = GUICtrlCreateLabel("@iP", 64, 40, 24, 17)
$ButtonAdresseIP = GUICtrlCreateInput(@IPAddress1, 96, 40, 121, 21)

;GUICtrlSetState($AdresseIP, $GUI_ENABLE)
$ButtonMask = GUICtrlCreateInput("", 96, 72, 121, 21)
$ButtonPasserelle = GUICtrlCreateInput("", 96, 104, 121, 21)
$ButtonDns = GUICtrlCreateInput("", 96, 136, 121, 21)
$AdresseIP = GUICtrlRead($ButtonAdresseIP)
$Mask = GUICtrlRead($ButtonMask)
$Passerelle = GUICtrlRead($ButtonPasserelle)
$Dns = GUICtrlRead($ButtonDns)

$Label2 = GUICtrlCreateLabel("Masque", 48, 72, 42, 17)
$Label3 = GUICtrlCreateLabel("Passerelle", 40, 104, 52, 17)
$Label4 = GUICtrlCreateLabel("Dns", 64, 136, 23, 17)
$CheckboxDhcp = GUICtrlCreateRadio("Dhcp", 96, 168, 97, 17)
GUICtrlSetOnEvent($CheckboxDhcp, "checkboxDhcpClic")
$CheckboxTest = GUICtrlCreateRadio("Test", 96, 192, 97, 17)
GUICtrlSetState($CheckboxTest, $GUI_CHECKED)
GUICtrlSetOnEvent($CheckboxTest, "checkboxTestClic")
GUISetState(@SW_SHOW)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

While 1
   sleep(100)
WEnd

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; F O N C T I O N S ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func checkboxDhcpClic()
   If GUICtrlRead($CheckboxDhcp) = $GUI_CHECKED Then
      GUICtrlSetState($ButtonAdresseIP, $GUI_DISABLE)
      GUICtrlSetState($ButtonMask, $GUI_DISABLE)
      GUICtrlSetState($ButtonPasserelle, $GUI_DISABLE)
      GUICtrlSetState($ButtonDns, $GUI_DISABLE)

   Else

      GUICtrlSetState($ButtonAdresseIP, $GUI_ENABLE)
      GUICtrlSetState($ButtonMask, $GUI_ENABLE)
      GUICtrlSetState($ButtonPasserelle, $GUI_ENABLE)
      GUICtrlSetState($ButtonDns, $GUI_ENABLE)
   EndIf
endfunc

Func checkboxTestClic()
   If GUICtrlRead($CheckboxTest) = $GUI_CHECKED Then
      GUICtrlSetState($ButtonAdresseIP, $GUI_ENABLE)
      GUICtrlSetState($ButtonMask, $GUI_ENABLE)
      GUICtrlSetState($ButtonPasserelle, $GUI_ENABLE)
      GUICtrlSetState($ButtonDns, $GUI_ENABLE)

   Else
      GUICtrlSetState($ButtonAdresseIP, $GUI_DISABLE)
      GUICtrlSetState($ButtonMask, $GUI_DISABLE)
      GUICtrlSetState($ButtonPasserelle, $GUI_DISABLE)
      GUICtrlSetState($ButtonDns, $GUI_DISABLE)

   EndIf
EndFunc   ;
Répondre