Página 1 de 1

Reacción formulario al pulsar Enter

Publicado: 24 Ene 2011, 13:46
por chechu
Buenas!! :smt003

El código que adjunto, es un formulario que tiene un input y un botón.

#include <GuiConstantsEx.au3>

GUICreate("GUI input", 200, 200)
$input = GUICtrlCreateInput("", 20, 50, 160)
$Boton = GUICtrlCreateButton("Seguir", 50, 140, 100)
GUISetState(@SW_SHOW)

$msg = 0
While $msg <> $GUI_EVENT_CLOSE
$msg = GUIGetMsg()
Select
Case $msg = $Boton
ExitLoop
EndSelect
WEnd

MsgBox(4096, "Información del input", GUICtrlRead($input))

Con el botón "Seguir" cerramos el formulario y muestra el valor $input.
Lo que quiero es que además de con el botón "Seguir" haga lo mismo al pulsar Enter.

Es decir, que al teclear un valor en el input y pulsar Enter, se comporte igual que si pulsáramos el botón "seguir".

No sé si me explico..

:smt005
Muchas Gracias!! :smt002

Re: Reacción formulario al pulsar Enter

Publicado: 24 Ene 2011, 14:05
por Ximorro
Una manera es hacer el botón el control por defecto en el formulario, para ello después de crearlo con GUICtrlCreateButton pon esta línea:
GUICtrlSetState(-1, $GUI_DEFBUTTON)

Una sugerencia, puedes incluir la comprobación de $GUI_EVENT_CLOSE dentro del mismo Select donde miras el botón. O bien, ya que sólo miras el botón dentro del Select puedes cambiarlo por un IF y simplificas código.
Es mejor la primera opción, así si creas más controles (o quieres mirar otros eventos de sistema como @SW_MINIMIZE) sólo tienes que añadir más casos Case.

En este tutorial se crea un GUI que maneja un esquema similar, hago un bucle "infinito" y miro todos los eventos dentro del Select (en realidad uso un Switch, creo que para esto es más compacto). Puede que sea cuestión de gustos pero creo que es mejor tratar todos los eventos de manera homogénea, en vez de unos en el While y otros en el Select.
http://www.emesn.com/autoitforum/viewto ... f=2&t=2246

Saludos

Re: Reacción formulario al pulsar Enter

Publicado: 24 Ene 2011, 17:19
por chechu
Gracias Ximorro!!

Estoy aprendiendo Koda y todavía me pierdo en lo básico.

Respecto a lo que comentas, efectivamente es mejor solución. De hecho creo que es así como viene en los examples de funcion.

Gracias por pasarme el link, lo voy a mirar detalladamente.

Un saludo! :smt023