Ecrire dans un Input à condition

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Narcisse69
Niveau 1
Niveau 1
Messages : 7
Enregistré le : ven. 19 mai 2017 13:47
Status : Hors ligne

Ecrire dans un Input à condition

#1

Message par Narcisse69 » ven. 19 mai 2017 14:15

Bonjour à tous,


Voici le but de mon programme :
- Lorsque mon input1 est vide dans ma GUI => l'input2 écrit "Vide".
- Lorsque j'écris dans l'input 1 (donc plus vide) => l'input2 écrit "Pas vide".

Voici le code :
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=C:\Users\RGFR1773\Desktop\AutoIt\Essai.kxf
$Form2 = GUICreate("Form2", 368, 309, 410, 183)
$Input1 = GUICtrlCreateInput("Input1", 112, 56, 145, 21)
;$Input2 = GUICtrlCreateInput("Input2", 112, 104, 145, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

                Case $Form2
                Case $Form2
                Case $Form2
                Case $Form2
                Case $Input1
                Case $Input2

                Case GUICtrlRead($Input1) <> ""
                        $Input2 = GUICtrlCreateInput("Pas vide", 112, 104, 145, 21)
                Case GUICtrlRead($Input1) = ""
                        $Input2 = GUICtrlCreateInput("Vide", 112, 104, 145, 21)

        EndSwitch
WEnd
Et la tête du GUI :
Image

J'avais pensé utiliser :
If GUICtrlRead($Input1) <> "" Then
        $Input2 = GUICtrlCreateInput("Pas vide", 112, 104, 145, 21)
Else
        $Input2 = GUICtrlCreateInput("Vide", 112, 104, 145, 21)
EndIf
Au lieu de :
                Case GUICtrlRead($Input1) <> ""
                        $Input2 = GUICtrlCreateInput("Pas vide", 112, 104, 145, 21)
                Case GUICtrlRead($Input1) = ""
                        $Input2 = GUICtrlCreateInput("Vide", 112, 104, 145, 21)
Mais c'est pas mieux...


Le problème :
Forcément le problème est que les deux textes "Pas vide" et "Vide" se superposent et ça clignote... bref, ce n'est pas optimal. :(
J'ai lu les docs et plusieurs tuto, Google a été mon ami, mais jusqu'à un certains point...
Pouvez-vous m'apporter une aide salutaire ? :)

Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 308
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Contact :
Status : Hors ligne

Re: Ecrire dans un Input à condition  

#2

Message par parazitenew » ven. 19 mai 2017 15:37

Bonjour:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>


$Form2 = GUICreate("Form2", 368, 309, 410, 183)
$Input1 = GUICtrlCreateInput("Input1", 112, 56, 145, 21)
$Input2 = GUICtrlCreateInput("Input2", 112, 104, 145, 21)
GUISetState(@SW_SHOW)

GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

While 1
        $msg = GUIGetMsg()
    Select
         Case $msg = $GUI_EVENT_CLOSE
                Exit
    EndSelect
WEnd

Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
  If BitAND($wParam, 0x0000FFFF) = $Input1 AND BitShift($wParam, 16) = $EN_UPDATE Then

                If GUICtrlRead($Input1) <> "" Then
                        GUICtrlSetData($Input2, "Pas vide")
                Else
                        GUICtrlSetData($Input2, "Vide")
                EndIf
  EndIf


   Return 'GUI_RUNDEFMSG'
EndFunc

Avatar du membre
orax
Modérateur
Modérateur
Messages : 1407
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Contact :
Status : Hors ligne

Re: Ecrire dans un Input à condition

#3

Message par orax » ven. 19 mai 2017 15:44

Pourquoi créer un input à chaque fois ? GUICtrlCreateInput va créer un input. Un nouvel input est recréé au même endroit, c'est pour cette raison qu'il y a un clignotement.
Le code GUICtrlSetData($Input2, "blabla") va écrire le texte "blabla" dans $Input2.

Parazitenew a été plus rapide ! :mrgreen:
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)

Avatar du membre
walkson
Membre émérite
Membre émérite
Messages : 477
Enregistré le : ven. 12 août 2011 18:49
Localisation : Essonne
Status : Hors ligne

Re: Ecrire dans un Input à condition

#4

Message par walkson » ven. 19 mai 2017 17:55

Si je peux me permettre un petit conseil, la fonction Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam) utilise la surveillance de Windows et ne doit pas être bloqué par des Msgbox ou des _Arraydisplay() par exemple sinon grosse BUG
Cordialement,
Walkson

Narcisse69
Niveau 1
Niveau 1
Messages : 7
Enregistré le : ven. 19 mai 2017 13:47
Status : Hors ligne

Re: Ecrire dans un Input à condition

#5

Message par Narcisse69 » lun. 22 mai 2017 09:38

Merci beaucoup !!! :D

Ça fonctionne comme sur des supers roulettes. \o/

Narcisse69
Niveau 1
Niveau 1
Messages : 7
Enregistré le : ven. 19 mai 2017 13:47
Status : Hors ligne

Re: Ecrire dans un Input à condition

#6

Message par Narcisse69 » lun. 22 mai 2017 10:18

Juste une petite question.

Si je voulais de la même manière faire apparaitre / disparaitre un bouton.
C'est-à-dire :
- quand le label1 est vide => le bouton n'est pas visible
- quand le label1 n'est pas vide => le bouton est visible

Je devrais pouvoir écrire cela, non ?
(je cherche la solution en même temps)

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>


$Form2 = GUICreate("Form2", 368, 309, 410, 183)
$Input1 = GUICtrlCreateInput("Input1", 112, 56, 145, 21)
$Button1 = GUICtrlCreateButton("Bonjour", 112, 124, 145, 21)
GUISetState(@SW_SHOW)

GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

While 1
        $msg = GUIGetMsg()
    Select
         Case $msg = $GUI_EVENT_CLOSE
                Exit
    EndSelect
WEnd

Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
  If BitAND($wParam, 0x0000FFFF) = $Input1 AND BitShift($wParam, 16) = $EN_UPDATE Then

                If GUICtrlRead($Input1) <> "" Then
                        _GUICtrlButton_Show($Button1, True)
                Else
                        _GUICtrlButton_Show($Button1, False)
                                EndIf

  EndIf


   Return 'GUI_RUNDEFMSG'
EndFunc

Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 1714
Enregistré le : mar. 22 juil. 2008 20:55
Localisation : Nantes
Status : Hors ligne

Re: Ecrire dans un Input à condition

#7

Message par TommyDDR » lun. 22 mai 2017 10:49

GUICtrlSetState($Button1, $GUI_DISABLE)
GUICtrlSetState($Button1, $GUI_ENABLE)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679

Narcisse69
Niveau 1
Niveau 1
Messages : 7
Enregistré le : ven. 19 mai 2017 13:47
Status : Hors ligne

Re: Ecrire dans un Input à condition

#8

Message par Narcisse69 » lun. 22 mai 2017 10:49

C'est bon, j'ai trouvé. :)

Merci Tommy, j'avais trouvé ça :
                If GUICtrlRead($Input1) <> ""  Then
                        GUICtrlSetState($Button1,$GUI_SHOW)
                Else
                        GUICtrlSetState($Button1, $GUI_HIDE)
                EndIf

Répondre

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités