Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Varios Texbox Con El Mismo Evento!!
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Varios Texbox Con El Mismo Evento!! 
 
Estoy realizando un formularion con varios textbox, el cual con keypress voy saltando con la tecla ENTER, eso funciona de maravilla, pero quiero tambien hacer que en cada textbox pueda validar si agunos textbox pueda escribir LETRAS y en otras NUMEROS. Aqui le dejo parte del codigo:
PUBLIC SUB gEnter_KeyPress() 'Para hacer solo LETRAS
IF Key.code = Key.enter OR Key.code = Key.return THEN
    SELECT CASE LAST.tag
      CASE 1
        Label1.Text = TextBox_codigoPostgrado.Tag
        TextBox_codigoPostgrado.setfocus
        
      CASE 2
        TextBox_lapsoInscribir.setfocus
      
      CASE 3
        TextBox_Apellidos.setfocus
        
      CASE 4
      
        TextBox_Nombres.SetFocus
        
      CASE 5
        TextBox_cedula.SetFocus
        
      CASE 6
        TextBox_pasaporte.SetFocus
        
      CASE 7
       TextBox_email.SetFocus
      
      CASE 8
        TextBox_telefono.SetFocus
      
      CASE 9
        TextBox_dirHabitacion.SetFocus
        
    END SELECT
  END IF

END

Gracias por su ayuda soy nuevo en gambas y necesito ayuda.
 



 
m_padron - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Varios Texbox Con El Mismo Evento!! 
 
Para que usen todos el mismo evento, símplemente agrúpalos todos en el mismo grupo (propiedad group del control)
Lo de números y letras... busca por este mismo foro, que recuerdo varios hilos donde se tocaba ese tema.

Bienvenido, pasa al fondo y págate una cerveza.

Saludos.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Varios Texbox Con El Mismo Evento!! 
 
Gracias, shordi, yo se q aqui hay bastane topico sobre el tema de validacion de texbox, lo q pasa es que si lo coloco dentro del evento keypress no funciona ejemplo......
PUBLIC SUB gEnter_KeyPress() 'Para hacer solo LETRAS
IF Key.code = Key.enter OR Key.code = Key.return THEN
    SELECT CASE LAST.tag
      CASE 1
      IF IsNumber(Val(Key.Text)) = FALSE THEN
    ELSE
      Message.Info("Solo letra")
    STOP EVENT
    END IF
      TextBox_codigoPostgrado.setfocus
      
        
      CASE 2.................................

Sencillamente no me funciona, y se lo colo asi, tambien no funciona:
PUBLIC SUB TextBox_codigoPostgrado_KeyPress()
IF IsNumber(Val(Key.Text)) = FALSE THEN
ELSE
  Message.Info("Solo letra")
STOP EVENT
END IF

END
Esto tratando de hacer el evento aparte, solo el objeto textbox solo.
 



 
m_padron - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Varios Texbox Con El Mismo Evento!! 
 
Hola
Tu pones todos los textboxes en el mismo grupo.
A cada uno le pones un tag según el tipo de teclas válidas que deba admitir.
Por ejemplo
textboxes de nombres, direcciones tag 1
textboxes de cifras tag 2
textboxse para valores matemáticos (cifras, signo -,, signo coma, signo punto) tag 3
textboxes de teléfonos (númeos mas espacios) tag 4
textboxes para fechas (cifras, y caracteres separadores /.: tag 5

Una vez hecho eso tu haces el keypress tal como sigue
private sub grupo_keypress()
   select case last.tag
      case 1:
         ...
         ...
     case 2:
         ...
         ...
     case 3:
         ...
         ...
     case else
         ... aquí consideras flechas, AvPag, RePag, enter, backspace, tab, sup, insert, inicio, fin
end select


Un saludo
 
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Varios Texbox Con El Mismo Evento!! 
 
Gracias SOPLO, cre entender tu sugerencia, pero me sale una duda, si viste el codigo q coloque como inicio de este tema, es para controlar q desde la tecla ENTER o TAB yo pueda saltar de caja en caja (textboxes), COMO HAGO ESO??, segun tu sugerencia, estoy armando un codigo pero con keyrelease() y hasta el meomento me va, es algo asi:

PUBLIC SUB gEnter_KeyRelease()
Label1.Text = TextBox_denominacionPostgrado.Text
  IF IsNumber(Val(TextBox_denominacionPostgrado.Text)) = FALSE AND IsNumber(Val(TextBox_Apellidos.Text)) = FALSE THEN
    ELSE
      Message.Info("Solo LETRA")
    STOP EVENT
    END IF

END

Funciona, pero laidea de la PROGRAMACION es asi el codigo mas eficiente,y se puedo hacerlo en un SOLO BLOQUE mejor.

QUE ME SUGIERES????
 



 
m_padron - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Varios Texbox Con El Mismo Evento!! 
 
Veo ahí algunas cosas raras:

La función val siempre devuelve un número (bueno, a veces un booleano, pero isNumber siempre te devolverá cierto).
luego  
isnumber(val(

 siempre te dará cierto.

Por otra parte me parece muy raro eso de
IF IsNumber(Val(Key.Text)) = FALSE THEN
    ELSE
¿Por qué no preguntas por TRUE y te ahorras el else?

Si el estándar del GUI es que el paso de campo a campo es con TAB ¿por qué ese empeño del Enter que todo te lo complica?

Y por último: si preguntas si key.code es enter y ya lo sabes... ¿para qué preguntas si es número?
 




===================
No podemos regresar
 
última edición por shordi el Miercoles, 24 Noviembre 2010, 20:50; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Varios Texbox Con El Mismo Evento!! 
 
mi respuesta de arriba es al código de la segunda respuesta... que nos hemos cruzado.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Varios Texbox Con El Mismo Evento!! 
 
Suele pasarno shordi je je je

Citar:
PUBLIC SUB gEnter_KeyRelease()
Label1.Text = TextBox_denominacionPostgrado.Text
  IF IsNumber(Val(TextBox_denominacionPostgrado.Text)) = FALSE AND IsNumber(Val(TextBox_Apellidos.Text)) = FALSE THEN
    ELSE
      Message.Info("Solo LETRA")
    STOP EVENT
    END IF

END

Este código está mal. Te pongo lo que creo que quieres hacer correctamente
public sub gEnter_keyrelease()
if isnumber(key.text) then
   ...
else
   ...
endif
end


yo hago lo de los tag que te dije. De hecho tengo hecha una clase para control del teclado que me soluciona estos problemas corrientes y si quieres te la pongo para que la tomes como ejemplo. Un keypress corriente suele ser
dim valido as boolean=false
select case last.tag
   case 1
      valido = TEC.EsLetra(key.text) 'y esto me devuelve true o false
   case 2
      valido = TEC.Esfecha(key.text) ' esto me devuelve true o false
   case ...
end select
if not valido then
   stop event
endif
 


Ahora bien tu quieres hacer como en VB el setfocus. Quieres que al pulsar Enter se pase el foco al siguiente control. Eso tengo que probarlo (ahora no tengo tiempo, mas tarde quizá) pero en principio podrías usar el método next que te pasa al siguiente control
case key.code=key.REturn
   last.next

algo así.
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Varios Texbox Con El Mismo Evento!! 
 
Pero que lío me he 'montao' leyendo.

Espero responder a lo que pretendes.

(* Una cosa que igual no sabes. Al pulsar enter en un textbox, se produce el evento activate)
(Pero no se produce al pulsar Return, que son distintos)

Tenemos varios textbox y su propiedad Tag que nos dice si son solo números. Además al pulsar enter quiero que
se mueva el foco.

¡Cuidado con textbox.next.setfocus! Si lo siguiente que tienes es un label, por ejemplo, CRASH. Tienes que fijarte en la pestaña jerarquía que hay al lado de propiedades que van uno tras otro en el orden que quieres que tomen el foco.

Para muestra te propongo lo siguiente. Una función en un módulo que controle que la tecla pulsada es numérica y/o con decimales y otra que me diga si se ha pulsado Enter/Return:

PUBLIC FUNCTION onlynum(OPTIONAL ndec AS Integer = 0) AS Boolean
  
  DIM respuesta AS Boolean
  DIM txt AS TextBox

  txt = Application.ActiveControl  
  respuesta = FALSE
  
  SELECT CASE Key.Code

    CASE 48 TO 57 'Codigos ASCII de los numeros
      IF ndec > 0 THEN
        IF InStr(txt.Text, ".") > 0
          IF Len(Right(txt.Text, - (InStr(txt.Text, ".")))) > ndec - 1 THEN
            respuesta = TRUE
          ENDIF
        ENDIF
      ENDIF
      IF txt.Selected THEN respuesta = FALSE
    CASE Key.BackSpace    'Retroceso
    CASE Key.Delete       'Borrado
    CASE Key.Tab          'Tabulador
    CASE Key.BackTab      'Tabulador hacia atras
    CASE Key.Return OR Key.Enter  
    CASE Key.Home
    CASE Key.End
    CASE Asc(".")
      IF ndec = 0 THEN respuesta = TRUE
      IF InStr(txt.Text, ".") > 0 THEN respuesta = TRUE
      IF respuesta = FALSE AND Len(txt.Text) = 0 THEN
        txt.Text = "0"
      ENDIF
      IF txt.selected THEN
        txt.Text = "0"
        respuesta = FALSE
      ENDIF
    CASE ELSE
      respuesta = TRUE    'Si se ha pulsado otra tecla
      
  END SELECT
  
  RETURN respuesta
  
END

PUBLIC FUNCTION kEnter() AS Boolean

  RETURN (Key.Code = Key.Enter OR Key.Code = Key.Return)
  
END

PUBLIC SUB amayusculas(txt AS TextBox)
  
  DIM nPosicion AS Integer

  nPosicion = txt.Pos         'Guardamos la posicion del cursor
  txt.Text = Upper(txt.Text)  'Convertimos el texto a mayusculas
  txt.Pos = nPosicion         'Restauramos la posicion del cursor
 
END

 


En el evento _keypress del/os textbox que lo requieran (buena la idea de agruparlos).
PUBLIC SUB grupoText_KeyPress()

    IF mUtils.kEnter() THEN '--------------------- Se ha pulsado enter
          LAST.Next.SetFocus
    ELSE
        SELECT CASE LAST.tag
           CASE 1                    ' Solo admite números
                    IF mUtils.onlynum() THEN STOP EVENT  
           CASE 2                    ' Admite solo numeros pero con 2 decimales
                    IF mUtils.onlynum(2) THEN STOP EVENT
           CASE 3                    ' Pasa todo a Mayúsculas
                    mUtils.amayusculas(LAST)       ' YO ESTO LO PONDRIA EN EL EVENTO CHANGE
       ' Y TODOS LO CASE QUE SE TE OCURRAN Y SEAN LOGICOS POR SUPUESTO
    END SELECT
  END IF

END



Conste que yo por no enrevesar con lo del grupo de textbox, lo tengo así:
PUBLIC SUB txtpvp_KeyPress()

  IF mUtils.kEnter() THEN
    txtpvp.Next.SetFocus
    RETURN
  ENDIF
  IF mUtils.onlynum(4) THEN STOP EVENT  

END
 


y para cada control manejo el evento KeyPress, Change, LostFocus(este con cuidado), GotFocus..........

Como verás aquí no existe la propiedad de VBA tabOrder ni nada parecido.

Espero te sirva de algo la explicación o por lo menos te aporte alguna idea.

Antonio
 



 
última edición por ahtonio el Miercoles, 24 Noviembre 2010, 22:43; editado 1 vez 
ahtonio - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Varios Texbox Con El Mismo Evento!! 
 
Gracias SOPLO, lo probare y te aviso, mañana en esto momento salgo de la oficina. Saludos y mil gracias
 



 
m_padron - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Rellenar Varios Combos De Varios Formulari... CanihoJR General 9 Martes, 12 Junio 2012, 21:44 Ver último mensaje
luisrel
No hay nuevos mensajes Cargar Un Dato De La BD A Un "Evento ... OneErick Bases de Datos 7 Miercoles, 20 Marzo 2013, 23:29 Ver último mensaje
OneErick
No hay nuevos mensajes TurboPDF: Visiona Varios Pdf O El Mismo Pd... jsbsan Aplicaciones/Fragmentos de Código 2 Lunes, 28 Abril 2014, 01:38 Ver último mensaje
portaro
No hay nuevos mensajes Un Mismo Tooltip Para Varios Botones Hay O... v3ctor General 10 Miercoles, 05 Noviembre 2014, 15:16 Ver último mensaje
v3ctor
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  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