Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Mejorar "solo_numeros" De Jguardon
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Mejorar "solo_numeros" De Jguardon 
 
Buenas!, hace tiempo me ajencié con el codigo de jguardon para evitar introducir letras y caracteres raros en un textbox y que permitiese usar tab, y algunas teclas mas... Intentando mejorarlo algo, que añadido que tambien pueda usar las flechas izquierda y derecha, y me gustaria poder poner control+c, control+v y control+x... pero como pondria los dos key.code a la vez en un case???

PUBLIC FUNCTION Solo_Numeros()
    'Message.Warning(Key.Code)
    SELECT CASE Key.Code
        CASE 48 TO 57
        CASE 46
        CASE 4129 & 67 'esta es la que corresponde a control+c para probar..... y no funciona :/ como deberia ser?
        CASE Key.Left
        CASE Key.Right
        CASE Key.BackSpace
        CASE Key.Delete
        CASE Key.Tab
        CASE ELSE
          STOP EVENT
    END SELECT
END

 



 
última edición por CanihoJR el Miercoles, 17 Agosto 2011, 17:52; editado 1 vez 
CanihoJR - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mejorar "solo_numeros" De Jguardon 
 
PRIVATE ctrl AS Boolean
PUBLIC SUB TextArea1_KeyPress()
IF Key.Code = 65507 OR ctrl THEN
  ctrl = TRUE
  IF Key.Code = 99 THEN
    PRINT "Has presionado ctrl C"
    ctrl = FALSE
  END IF
  
END IF

END
 


Problema: Si presionas ctrl y al rato C también funciona..
 



 
 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mejorar "solo_numeros" De Jguardon 
 
mmmmm a raiz de ver tu solucion, me planteo a probar... y meter un case dentro de otro? asi en el case de dentro, meto xcv voy a probar

Confirmado, no me vá xDDD

SELECT CASE Key.Code
        CASE 48 TO 57       '0123456789
        CASE 4129
          SELECT CASE Key.Code
            CASE 67
          CASE ELSE
            STOP EVENT
          END SELECT    'control+c
        CASE Key.Left       'izquierda
        CASE Key.Right      'derecha
        CASE Key.BackSpace  'borrar atras
        CASE Key.Delete     'borrar delante
        CASE Key.Tab        'tabulador
        CASE ELSE
          STOP EVENT
    END SELECT

 



 
última edición por CanihoJR el Miercoles, 17 Agosto 2011, 18:21; editado 1 vez 
CanihoJR - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mejorar "solo_numeros" De Jguardon 
 
Alfinal era mas fácil de lo que parecia, como siempre, y como mi primera busqueda me llevaba, pero no funcinaba porque tenia los CASE con numeros, ahora funciona perfectamente así:

'#------------------------------------------------------------------------------------------------
'El siguiente script evita que puedas introducir algun caracter que no sea un numero en un textbox.
'EJEMPLO USO:
'PUBLIC SUB TxtPuerto_KeyPress()
'  ModAcciones.Solo_Numeros()
'EN
'Funcion proporcionada por JGUARDON a GAMBAS-ES.org
'#------------------------------------------------------------------------------------------------
PUBLIC FUNCTION Solo_Numeros()
    'Message.Warning(Key.Code)
    SELECT CASE Key.Code
        CASE Key["0"] TO key["9"]     '0123456789
        CASE Key.Control AND Key["C"] 'control+C
        CASE Key.Control AND Key["X"] 'control+X
        CASE Key.Control AND Key["V"] 'control+V
        CASE Key.Left                 'izquierda
        CASE Key.Right                'derecha
        CASE Key.BackSpace            'borrar atras
        CASE Key.Delete               'borrar delante
        CASE Key.Tab                  'tabulador
        CASE ELSE
          STOP EVENT
    END SELECT
END


El problema viene por parte de mi novia, que como betatester no tiene desperdicio... llegó al primer textbox, y "pegó" lo que tenia en portapapeles, que eran letras, y las copió sin problemas >.< se me ocurre quitar el pegar, pero seria incompleto... como deberia controlar eso? dentro del mismo case?

Gracias a mi novia, acaba de encontrar otro "bug", si escribe cualquier letra con á ẃ é ŕ, las escribe sin problemas :/
 



 
última edición por CanihoJR el Miercoles, 17 Agosto 2011, 19:26; editado 2 veces 
CanihoJR - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mejorar "solo_numeros" De Jguardon 
 
en el otro lado tuve el mismo problema con copy paste

asi que uso el evento  texchange  

así que   cada ves que  cambia el texto  si la propiedad filtra = true recorro el texto con un for y elimino los caracteres indeseados

según lo otra propiedad que si es l es letras si es n es numero

para facilitar la programación los caracteres deseados los guardo en una cadena




todo esto en una nueva clase que hereda el texbox y le añade nueva funcionalidades
asi evito escribir mucho código cada ves que coloco un nuevo texbox


resumiendo la idea no es usar el KeyPress
 



 
codificador - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mejorar "solo_numeros" De Jguardon 
 
yo antes también lo hacia con _change, pero no me funcionaba tan bien como la función de jguardon, que hace que pueda borrar, hacia delante y detrás, poner el cursor en medio y escribir, vamos que se comporte como debería... por eso quiero terminar de mejorar los "fallitos" que me van surgiendo
 



 
CanihoJR - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mejorar "solo_numeros" De Jguardon 
 
CanihoJR escribió: [Ver mensaje]
yo antes también lo hacia con _change, pero no me funcionaba tan bien como la función de jguardon, que hace que pueda borrar, hacia delante y detrás, poner el cursor en medio y escribir, vamos que se comporte como debería... por eso quiero terminar de mejorar los "fallitos" que me van surgiendo



ups

se requiere código adicional para que se comporte como debería usando change

este código es .net en en texchange
cadenaok="1234567890" en el caso de que sea números

  
'elimina los espacios al principio
                    Me.Text = Me.Text.TrimStart
                    'limpia
                    Me.Text = limpiatexto(Me.Text, cadenaok)
                    'arregla el cursor
                    If Me.SelectionStart = 0 Then
                        Me.SelectionStart = Me.TextLength
                    End If

qyadccfv vv v v
 



 
codificador - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mejorar "solo_numeros" De Jguardon 
 
si, imagino que almenos temporalmente, tendré que complementarlo con change, para que si pego, o meto algo desde algun sitio que no sea integer no se meta, pero me gustaria poder integrar esto en una sola funcion, asi seria mas comodo tanto como para mi, como para todos

Alguien pasa otra idea?
 



 
CanihoJR - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mejorar "solo_numeros" De Jguardon 
 
usar keypres para cuando se teclea y change para cuando se copia y pega
 



 
codificador - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

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