Bonjour,
J'aimerai savoir si c'est possible de détecter le changement d'une valeur dans un input.
Je m'explique, j'ai une GUI avec un label et un input. Et lorsque j'y insère une nouvelle valeur, j'aimerai appliquer une fonction pour faire un calcul.
Du style, si je tape "2" dans l'input, je veux qu'automatiquement le label m'affiche le résultat retourné par une fonction appelée.
Je veux que la fonction soit appelé automatiquement sans devoir cliquer sur un bouton ou autre, je veux qu'elle soit appelée à chaque fois que je tape une valeur dans l'input.
Est ce possible ?
merci
Cordialement.
Changement d'une valeur dans un input
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
- Niveau 3
- Messages : 47
- Enregistré le : lun. 07 mars 2016 07:20
- Status : Hors ligne
Re: Changement d'une valeur dans un input
Bonsoir,
je te dirai que OUI, simplement il faut faire lire la valeur dans le while 1 :
je te dirai que OUI, simplement il faut faire lire la valeur dans le while 1 :
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Exemple", 344, 174, 315, 180)
$Label1 = GUICtrlCreateLabel("Entrez une valeur", 40, 24, 87, 17)
$Label2 = GUICtrlCreateLabel("valeur x 10", 40, 60, 87, 17)
$input2 = GUICtrlCreateInput("", 144, 60 , 87, 17)
$Input1 = GUICtrlCreateInput("", 144, 24, 129, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$var=GUICtrlRead($Input1)
guictrlsetdata($input2, $var * 10)
sleep(100) ; moins de conso processeur !
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Exemple", 344, 174, 315, 180)
$Label1 = GUICtrlCreateLabel("Entrez une valeur", 40, 24, 87, 17)
$Label2 = GUICtrlCreateLabel("valeur x 10", 40, 60, 87, 17)
$input2 = GUICtrlCreateInput("", 144, 60 , 87, 17)
$Input1 = GUICtrlCreateInput("", 144, 24, 129, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$var=GUICtrlRead($Input1)
guictrlsetdata($input2, $var * 10)
sleep(100) ; moins de conso processeur !
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Re: Changement d'une valeur dans un input
Ah super merci !
Après j'aimerai l'amélioré un peu en pouvant détecter le click dans l'input de telle sorte que dans le switch je puisse mettre un Case $input
Comment je peux faire ?
merci beaucoup !
Après j'aimerai l'amélioré un peu en pouvant détecter le click dans l'input de telle sorte que dans le switch je puisse mettre un Case $input
Comment je peux faire ?
merci beaucoup !
- walkson
- Modérateur
- Messages : 1020
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: Changement d'une valeur dans un input
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $Form1 = GUICreate("Form1", 214, 190, 192, 124)
Global $Label1 = GUICtrlCreateLabel("", 24, 16, 164, 17)
Global $Input1 = GUICtrlCreateInput("", 16, 48, 177, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
Global $Input2 = GUICtrlCreateInput("", 16, 88, 177, 21)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Input1
GUICtrlSetData($Input2, GUICtrlRead($Label1)^2)
GUICtrlSetState($Input1,256);renvoi le focus
EndSwitch
WEnd
Func Requete()
GUICtrlSetData($Label1,GUICtrlRead($Input1) * 10/2)
EndFunc
Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
Local $nID = BitAND($wParam, 0x0000FFFF) ; _WinAPI_LoWord
Local $nNotifyCode = BitShift($wParam, 16) ; _WinAPI_HiWord
Switch $lParam
Case GUICtrlGetHandle($Input1)
Requete()
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $Form1 = GUICreate("Form1", 214, 190, 192, 124)
Global $Label1 = GUICtrlCreateLabel("", 24, 16, 164, 17)
Global $Input1 = GUICtrlCreateInput("", 16, 48, 177, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
Global $Input2 = GUICtrlCreateInput("", 16, 88, 177, 21)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Input1
GUICtrlSetData($Input2, GUICtrlRead($Label1)^2)
GUICtrlSetState($Input1,256);renvoi le focus
EndSwitch
WEnd
Func Requete()
GUICtrlSetData($Label1,GUICtrlRead($Input1) * 10/2)
EndFunc
Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
Local $nID = BitAND($wParam, 0x0000FFFF) ; _WinAPI_LoWord
Local $nNotifyCode = BitShift($wParam, 16) ; _WinAPI_HiWord
Switch $lParam
Case GUICtrlGetHandle($Input1)
Requete()
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: Changement d'une valeur dans un input
@walkson
On peut faire une détection temps réel du clic sur l'input avec $EN_SETFOCUS (bien que je n'en voie pas vraiment l'intérêt)
On peut faire une détection temps réel du clic sur l'input avec $EN_SETFOCUS (bien que je n'en voie pas vraiment l'intérêt)
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
$Form1 = GUICreate("Exemple", 344, 174, 315, 180)
$Label1 = GUICtrlCreateLabel("Entrez une valeur", 40, 24, 87, 17)
$Label2 = GUICtrlCreateLabel("valeur x 10", 40, 60, 87, 17)
$Label3 = GUICtrlCreateLabel("", 40, 90, 87, 17)
$input2 = GUICtrlCreateInput("", 144, 60 , 87, 17)
$Input1 = GUICtrlCreateInput("", 144, 24, 129, 21)
GUISetState()
Global $n
GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg
Local $hWndFrom, $iIDFrom, $iCode, $hInput1
$hInput1 = GUICtrlGetHandle($input1)
$hWndFrom = $lParam
$iIDFrom = _WinAPI_LoWord($wParam)
$iCode = _WinAPI_HiWord($wParam)
Switch $hWndFrom
Case $hInput1
Switch $iCode
Case $EN_SETFOCUS
$n += 1
GUICtrlSetData($Label3, "clic " & $n)
Case $EN_CHANGE
GUICtrlSetData($input2, GUICtrlRead($Input1)*10)
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>_WM_COMMAND
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
$Form1 = GUICreate("Exemple", 344, 174, 315, 180)
$Label1 = GUICtrlCreateLabel("Entrez une valeur", 40, 24, 87, 17)
$Label2 = GUICtrlCreateLabel("valeur x 10", 40, 60, 87, 17)
$Label3 = GUICtrlCreateLabel("", 40, 90, 87, 17)
$input2 = GUICtrlCreateInput("", 144, 60 , 87, 17)
$Input1 = GUICtrlCreateInput("", 144, 24, 129, 21)
GUISetState()
Global $n
GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg
Local $hWndFrom, $iIDFrom, $iCode, $hInput1
$hInput1 = GUICtrlGetHandle($input1)
$hWndFrom = $lParam
$iIDFrom = _WinAPI_LoWord($wParam)
$iCode = _WinAPI_HiWord($wParam)
Switch $hWndFrom
Case $hInput1
Switch $iCode
Case $EN_SETFOCUS
$n += 1
GUICtrlSetData($Label3, "clic " & $n)
Case $EN_CHANGE
GUICtrlSetData($input2, GUICtrlRead($Input1)*10)
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>_WM_COMMAND
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: Changement d'une valeur dans un input
Bonjour,
C'est parfait, ça fonctionne à merveille !
J'ai plusieurs input et suivant celui dans lequel j'insère une valeur, j'appelle une fonction différente ou la même fonction mais avec un paramètre différent. Du coup dans mon cas ça m'est très utile de savoir quel input a le focus
Merci beaucoup pour votre aide !
Cordialement.
C'est parfait, ça fonctionne à merveille !
Pour l'explication je n'ai pris qu'un seul input pour ne pas embrouiller tout le monde.(bien que je n'en voie pas vraiment l'intérêt)
J'ai plusieurs input et suivant celui dans lequel j'insère une valeur, j'appelle une fonction différente ou la même fonction mais avec un paramètre différent. Du coup dans mon cas ça m'est très utile de savoir quel input a le focus
Merci beaucoup pour votre aide !
Cordialement.