Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 3
Ir a la página 1, 2, 3  Siguiente
 
Uso De Enter Para Moverse Entre Campos De Un Formulario
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Uso De Enter Para Moverse Entre Campos De Un Formulario 
 
Hola a todos!

Quisiera poder usar en mis programas algo que me resulta mas natural para avanzar o retroceder entre campos, por defecto se usa TAB, pero quisiera usar ENTER en su lugar. Existe algo que no sea codificado para lograr eso ?

Quisiera usar Escape para salir de la aplicación, si es que el usuario lo pulsa.

Sé que puedo programar algo similar pero me gustaría saber si existe algo mas fácil. Pero tengo la sensación de que no existe algo tan simple como eso.  

Pensaba que una opción podría ser algo como el observer, pero tampoco observer me da buena espina.

Acepto ideas ...
 



 
viejito - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Uso De Enter Para Moverse Entre Campos De Un Formulario 
 
Hola.

Puedes usar el evento KeyRelease del componente TextBox, por ejemplo:

Public Sub txtCantidad_KeyRelease()

  If (Key.Code = Key.Enter Or Key.Code = Key.Return) Then...

End
 


Puedes usar Select Case dentro del evento, según la tecla pulsada que haga una acción.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Uso De Enter Para Moverse Entre Campos De Un Formulario 
 
Citar:

Puedes usar el evento KeyRelease del componente TextBox, por ejemplo:


Eso, aún siendo correcto, es un peñazo hacerlo por cada uno de los controles en cada uno de los formularios. gambas nos ofrece algo más sencillo y guay: La propagación de eventos. Así, los eventos de teclado del formulario Main se propagan a todos sus hijos. En otras palabras, el evento KeyRelease del formulario Main se propaga a todos los demás.

En el formulario Main:
 
Public Sub Form_KeyRelease()

dim c as Control

c=last() 'para saber cuál es control que disparó el evento.
if c is textbox or if c is valuebox then 'puedes ampliar las condiciones a los tipos de control que desees.
   c.next.setfocus
endif

end
 

Saludos.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Uso De Enter Para Moverse Entre Campos De Un Formulario 
 
Shordi:

Ok, se desplaza pero llega un momento que se acaba el siguiente control y da objeto nulo.
Si tienes un formulario con tres botones, tienes que saber cual es el ultimo para que empiece
por el primero de nuevo.  

Imagina que pertenecen a un grupo de botones.

Por cierto si lo hago con el evento KeyRelease del Formulario no me cambia el foco de los botones.
Tengo que hacerlo con el del grupo de botones.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Sabado, 17 Enero 2015, 14:24; editado 2 veces 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Uso De Enter Para Moverse Entre Campos De Un Formulario 
 
Una posible solución en el caso del grupo de tres botones. Puede que una solución "exclusiva"
He usado el nombre del ultimo botón.

Public Sub Botones_KeyPress()
  
  Dim c As Control
  
  c = Last
  
  If c Is Button And c.Name <> "Button3" Then
    c.Next.SetFocus
  Else
    Button1.SetFocus()  
  Endif
  
End
 


Pero el control se podría haber llamado cualquier nombre.  
Probare con Tag

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Uso De Enter Para Moverse Entre Campos De Un Formulario 
 
Shell escribió: [Ver mensaje]

Imagina que pertenecen a un grupo de botones.


...una posible solución también podría ser ésta:
Private b As Byte


Public Sub Form_KeyRelease()
  
  Inc b
  
  If b > Me.Children.Count - 1 Then b = 0
  
  Me.Children[b].SetFocus
  
End
    

lipsrsealed


Saludos
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Uso De Enter Para Moverse Entre Campos De Un Formulario 
 
Lo siento, no cambia de control.

Pero seguro encontrare la razón.  Debe ser algo muy obvio.

Tengo un tabstrip con 9 pestañas, en una de ellas había puesto un evento keypress, había hecho otra mas de esas mias, así que algo de eso debe ser.
 



 
viejito - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Uso De Enter Para Moverse Entre Campos De Un Formulario 
 
Citar:
Ok, se desplaza pero llega un momento que se acaba el siguiente control y da objeto nulo.


Ok. Sólo era una demo para ilustrar la idea. Si quieres un control mayor tienes que controlar más cosas.
En el caso del último, pues, controla que next no es nulo.


Public Sub Form_KeyRelease()

dim c as Control

c=last() 'para saber cuál es control que disparó el evento.
if c is textbox or if c is valuebox then 'puedes ampliar las condiciones a los tipos de control que desees.
if not isnull(c.next) then c.next.setfocus

end

 

 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Uso De Enter Para Moverse Entre Campos De Un Formulario 
 
viejito escribió: [Ver mensaje]
Lo siento, no cambia de control.


A cual codigo te refieres ?
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Uso De Enter Para Moverse Entre Campos De Un Formulario 
 
Viejito:

¿ Entonces quieres cambiar de pestaña al TabStrip al pulsar la tecla Enter ?.

¿ Algo como esto ?.

Public Sub Form_Open()
  
End

Public Sub TabStrip1_KeyRelease()
  
  If TabStrip1.Index < (TabStrip1.Count - 1) Then    
    Inc TabStrip1.Index    
  Else  
    TabStrip1.Index = 0  
  Endif
 
  
End
 


Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Sabado, 17 Enero 2015, 20:48; editado 2 veces 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Como Hago Para Validar Dos Campos En Una M... jousseph General 12 Martes, 06 Julio 2010, 19:24 Ver último mensaje
jguardon
No hay nuevos mensajes Problemas Para Detectar Tipo De Campos En ... jsbsan Bases de Datos 1 Miercoles, 30 Noviembre 2011, 20:58 Ver último mensaje
jguardon
No hay nuevos mensajes Como Hago Para Tener 2 Campos Primarios En... metalgearxd Bases de Datos 4 Martes, 05 Marzo 2013, 20:43 Ver último mensaje
shordi
No hay nuevos mensajes Mensajes Entre Modulo Y Formulario [Soluci... tincho General 6 Jueves, 02 Junio 2016, 10:47 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 3
Ir a la página 1, 2, 3  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron