Touche "Entrer" dans un input : GUISetAccelerators ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Cengokill
Niveau 2
Niveau 2
Messages : 18
Enregistré le : ven. 07 août 2020 18:47
Status : Hors ligne

Touche "Entrer" dans un input : GUISetAccelerators ?

#1

Message par Cengokill »

Bonjour, j'aimerais pouvoir exécuter une action lorsque je clique sur la touche Entrer dans une InputBox, au lieu de demander à l'utilisateur de cliquer sur un bouton pour valider. J'ai vu qu'apparemment il faut utiliser la fonction GUISetAccelerators, mais je n'arrive pas à comprendre son fonctionnement.
$Form = GUICreate("",500,100,($DesktopWidth-500)/2,($DesktopHeight-300)/2)
$input = GUICtrlCreateInput("",10,35,480,20)
GUISetOnEvent(-1, "InputClick")
Local $aAccelKey[1][2]=[["{ENTER}",???]]
GUISetAccelerators($aAccelKey)
GUISetState(@SW_SHOW)

Merci d'avance !
_____ Cengokill ______
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: Touche "Entrer" dans un input : GUISetAccelerators ?  

#2

Message par walkson »

Bonjour,
ça serait bien de mettre un petit code complet (je ne demande pas non plus 2000 lignes :P ) parce que, ici, on devine que vous êtes en mode événementiel !
cela devrait le faire
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 480, 165, 623, 373)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
Global $Input1 = GUICtrlCreateInput("AZERTY", 80, 24, 177, 21)
Global $Button1 = GUICtrlCreateButton("OK", 320, 24, 81, 33)
GUICtrlSetOnEvent(-1, "Button1Click")
Global $Label1 = GUICtrlCreateLabel("", 80, 80, 174, 25)
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Local $aAccelKeys[1][2] = [["{ENTER}", $Button1]]
GUISetAccelerators($aAccelKeys)

While 1
 Sleep(100)
WEnd

Func Button1Click()
   $Data = GUICtrlRead($Input1)
   GUICtrlSetData($Label1,$Data)
EndFunc
Func Form1Close()
   Exit
EndFunc
 
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Cengokill
Niveau 2
Niveau 2
Messages : 18
Enregistré le : ven. 07 août 2020 18:47
Status : Hors ligne

Re: Touche "Entrer" dans un input : GUISetAccelerators ?

#3

Message par Cengokill »

Merci beaucoup !
_____ Cengokill ______
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: Touche "Entrer" dans un input : GUISetAccelerators ?

#4

Message par walkson »

En plus simple mais la fonction Input1Click() se déclenche quand l'input perd le focus
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 480, 165)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
Global $Input1 = GUICtrlCreateInput("AZERTY", 80, 24, 177, 21)
GUICtrlSetOnEvent(-1, "Input1Click")
Global $Label1 = GUICtrlCreateLabel("", 80, 80, 174, 25)
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Local $aAccelKeys[1][2] = [["{ENTER}", $Input1]]
GUISetAccelerators($aAccelKeys)

While 1
 Sleep(100)
WEnd

Func Input1Click()
   $Data = GUICtrlRead($Input1)
   GUICtrlSetData($Label1,$Data)
EndFunc
Func Form1Close()
   Exit
EndFunc
 
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Touche "Entrer" dans un input : GUISetAccelerators ?

#5

Message par mikell »

walkson a écrit : sam. 22 août 2020 18:07 mais la fonction Input1Click() se déclenche quand l'input perd le focus
alors c'est pas bon :P
Si tu veux te passer de bouton, remplace-le par un dummy dans ton 1er code
Global $Button1 = GUICtrlCreateDummy()
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: Touche "Entrer" dans un input : GUISetAccelerators ?

#6

Message par TommyDDR »

Il est plus propre d'écrire GUICtrlSetOnEvent(-1, Input1Click) plutôt que GUICtrlSetOnEvent(-1, "Input1Click") (mikell confirmera :p)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Touche "Entrer" dans un input : GUISetAccelerators ?

#7

Message par mikell »

Malin Image
Plus propre je sais pas, mais oui ça marche (c.f. discussion récente sur le sujet avec jchd ... quelque part)
L'éternel problème étant que cette syntaxe n'étant pas mentionnée dans le fichier d'aide, elle n'est pas utilisée Image
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
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: Touche "Entrer" dans un input : GUISetAccelerators ?

#8

Message par walkson »

D'autant que l'aide indique
GUICtrlSetOnEvent ( controlID, "function" )
mikell a écrit : sam. 22 août 2020 20:02 alors c'est pas bon :P
Si tu veux te passer de bouton, remplace-le par un dummy dans ton 1er code
Global $Button1 = GUICtrlCreateDummy()
Ben ! je répond à la question
j'aimerais pouvoir exécuter une action lorsque je clique sur la touche Entrer dans une InputBox
Certes, ce n'est pas terrible mais c'est une possibilité...
Et puis un dummy ne me semble pas simplifier le code à moins que quelque chose m'échappe (c'est vrai que j'utilise rarement les dummy)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Touche "Entrer" dans un input : GUISetAccelerators ?

#9

Message par mikell »

walkson a écrit : dim. 23 août 2020 14:03c'est vrai que j'utilise rarement les dummy
C'est pourtant très pratique les dummy :mrgreen:
Ici c'était juste histoire de montrer qu'on pouvait complètement se passer de bouton. Les 2 solutions sont utilisables en fonction de ce qu'on veut
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre