Comunidad Gambas-es
Key Release y control por defecto. - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forum-8.html)
+--- Tema: Key Release y control por defecto. (/thread-874.html)



Key Release y control por defecto. - tincho - 14-04-2022

Hola a todos.
[Imagen: d0z7UTt.png]
En un programa en el que doy ordenes por teclado uso el evento "Form_KeyRelease()" para interceptar la teclas pulsadas y actuar en consecuencia con algo así:
Código:
If Key.Code = Key.Enter Or Key.Code = Key.Return Then
  ' Orden a ejecutar.
End
El caso es que al pulsar "Enter" ademas de hacer lo que esta estipulado en el código también se "activa" un botón del formulario y se produce un evento click en este, cosa que no deseo que ocurra.
El botón en cuestión es el primer botón del primer contenedor del formulario (un panel) que esta creado por código.
¿Existe una forma de evitar el que al pulsar enter se active el botón?


RE: Key Release y control por defecto. - tincho - 14-04-2022

Estoy probando con esto a ver si logro evadir el evento
Código:
Private sText As String

Public Sub Form_KeyPress()

  If Key.Code = Key.Enter Or Key.Code = Key.Return Then
    sText &= "Enter\n"
    TextArea1.Text = sText
    Stop Event
  Endif

End

Public Sub Form_KeyRelease()

  If Key.Code <> Key.Enter And Key.Code <> Key.Return And Key.Code <> Key.Backspace Then
    sText &= Chr(Key.Code) & "\n"
  Endif

End



RE: Key Release y control por defecto. - Shordi - 15-04-2022

Puedes también probar a bloquear el botón en cuestión durante el evento.
Código:
Public Sub Form_KeyPress()
 
  If Key.Code = Key.Enter Or Key.Code = Key.Return Then
    object.lock(button1)
    sText &= "Enter\n"
    TextArea1.Text = sText
    Stop Event
    object.unlock(button1)
  Endif
 
End

No lo he probado, pero es una idea.

Saludos


RE: Key Release y control por defecto. - cogier - 15-04-2022

Echa un vistazo a este código. Puede ayudarte.


RE: Key Release y control por defecto. - tincho - 18-04-2022

(15-04-2022, 12:38)Shordi escribió: Puedes también probar a bloquear el botón en cuestión durante el evento.

Si, podría ser, lo probare.
Existe una dificultad mas ya que el control es creado en tiempo de ejecución, así que tendria que recorrer el contenedor para bloquear el primer botón, o también (tal vez mejor) bloquear directamente el contenedor.
Gracias.

(15-04-2022, 13:23)cogier escribió: Echa un vistazo a este código. Puede ayudarte.

Gracias.


RE: Key Release y control por defecto. - tincho - 19-04-2022

(15-04-2022, 12:38)Shordi escribió: No lo he probado, pero es una idea.

Finalmente, lo solucione pasando "teclas" de Form_KeyRelease a Form_KeyPress y allí pongo "Stop Event" si es necesario, gracias a los ejemplos de Cogier y Shordi, he podido ver que, salvo casos especiales, es mejor usar el evento Form_KeyPress
Luego, como siempre sucede con estas cosas, lo de bloquear el botón me sirvió para solucionar otro problema nuevo relacionado con unos ToolButtons que asignan verdadero o falso a unas variables y tambien usaba teclas de funcion para lo mismo pero cuando asignaba el valor al boton se volvia a disparar el evento así que Lock y Unlock llegaron justo a la fiesta. Big Grin