tincho   14-04-2022, 11:00
#1
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?

1 Saludo.
tincho   14-04-2022, 12:38
#2
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

1 Saludo.
Shordi   15-04-2022, 12:38
#3
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

No podemos regresar
cogier   15-04-2022, 13:23
#4
Echa un vistazo a este código. Puede ayudarte.
Archivos adjuntos
.gz
KeyTest-0.0.1.tar.gz (Tamaño: 22.77 KB Descargas: 1)
tincho   18-04-2022, 15:29
#5
(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.
Última modificación: 18-04-2022, 15:30 por tincho.

1 Saludo.
tincho   19-04-2022, 21:22
#6
(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

1 Saludo.
  
Usuarios navegando en este tema: 3 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.