Page 1 sur 1

[R] Activer ou désactiver un bouton si un champs est vide

Posté : mar. 16 mars 2010 15:58
par lerin57
Bonjour, à tous.

En poursuivant mon petit bonhomme de chemin sur autoit, je me suis heurté à un petit soucis.

Voici un exemple qu'un des membres du forum m'avait fournie il y a un petit moment.
► Afficher le texte
Le but ici est d'activer le champ combo2 lorsque le champ combo1 contient une valeur différente de "(aucune)", représentée par la variable $nNot, de même pour le champs input $Complement1

Maintenant si je retire le commentaire sur les lignes

Code : Tout sélectionner

GUICtrlSetState($Continue, $GUI_DISABLE)
et

Code : Tout sélectionner

        Case $nMsg[0] = $Complement1 And $nMsg[1] = $GuiIntro
            If GUICtrlRead($Complement1) = "" Then
                GUICtrlSetState($Continue, $GUI_DISABLE)
            ElseIf GUICtrlRead($Complement1) <> "" Then
                GUICtrlSetState($Continue, $GUI_ENABLE)
            EndIf
Je tente d'activer le bouton représenté par la variable $Continue lorsque le champs input $Complement1 n'est pas vide, et là ... :mrgreen: ... Cela ne fonctionne pas.

J'ai effectué quelque recherche dans l'aide afin de savoir si je doit utiliser plutot une fonction comme GUICtrlGetState ou bien un interpréteur de champ vide, sans succès.

Si quelqu'un a une idée ?

Re: [..]Activer ou desactiver un bouton si un champs est vide

Posté : mar. 16 mars 2010 16:38
par Narmeke
Si tu enlèves les commentaires d'ici :

Code : Tout sélectionner

;~      Case $nMsg[0] = $Complement1 And $nMsg[1] = $GuiIntro
;~          If GUICtrlRead($Complement1) = "" Then
;~              GUICtrlSetState($Continue, $GUI_DISABLE)
;~          ElseIf GUICtrlRead($Complement1) <> "" Then
;~              GUICtrlSetState($Continue, $GUI_ENABLE)
;~          EndIf
 
Alors tu dois les rajoutez ou enlever ces lignes :

Code : Tout sélectionner

        Case $nMsg[0] = $Combo2 And $nMsg[1] = $GuiIntro
            If GUICtrlRead($Combo2) = $nNot Then
                GUICtrlSetState($Complement1, $GUI_DISABLE)
            ElseIf GUICtrlRead($Combo2) <> $nNot Then
                GUICtrlSetState($Complement1, $GUI_ENABLE)
            EndIf
 
Cordialement Narmeke

Re: [..]Activer ou desactiver un bouton si un champs est vide

Posté : mar. 16 mars 2010 17:57
par lerin57
Je craint ne pas saisir la nuance.

J'ai ajouté ces commentaire juste pour montrer ce qui fonctionne, et ce qui ne fonctionne pas.

Si je relie votre suggestion, cela ne fait pas avancer mon probleme.

En vous remerciant

Re: [..] Activer ou désactiver un bouton si un champs est vide

Posté : mar. 16 mars 2010 19:23
par Tlem
Il faut utiliser GUIRegisterMsg() afin de lire la saisie dans l'InputBox car la boucle de message ne suffit pas.

Je sent poindre la grande question : Mais comment faire. :mrgreen:

Et bien tout récemment, Yogui a proposer un code utilisant cette fonction afin de faire de 'l'Auto-Suggestion' dans un combo ...

En adaptant le code, cela donne quelque chose comme ceci :
► Afficher le texte

Re: [..] Activer ou désactiver un bouton si un champs est vide

Posté : mar. 16 mars 2010 20:20
par lerin57
Bonsoir,

Que puis-je dire ... Whaou !!!

je suppose que tout réside dans la partie

Code : Tout sélectionner

    Local $nNotifyCode = BitShift($wParam, 16)
    Local $nID = BitAND($wParam, 0xFFFF)
Je vais l'étudier en profondeur.

Dans l'immédiat, et comme j'ai un timing relativement serré, je vais me contenter d'un simple condition avec une msgbox (j'ai vu que cela marchait).

Merci tout de même Tlem.

Je clos le sujet.

Re: [r] Activer ou désactiver un bouton si un champs est vide

Posté : mar. 16 mars 2010 21:16
par Tlem
Tout réside dans cette fonction : GUIRegisterMsg()

Lisez la doc et vous verrez tout ce qu'il est possible de faire ...
J'aurais pu me contenter de capturer la saisie du texte, mais je trouve le fait de gérer les événement comme je l'ai fait, tout aussi bien. ;)