Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Controlador De Teclado En Gambas 2 [solucionado]
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Controlador De Teclado En Gambas 2 [solucionado] 
 
En gambas 2 no consigo capturar las teclas pulsadas, si exceptuamos las teclas de función "F1", ...,"F12" "Mayús" "Avance", "Retroceso", etc.
Estoy probando en gambas 3, y se comporta como cabría esperar.
Siguiendo el libro de Daniel Campos y José Luis Redrejo y el ManualBásico de gambas 2 de realizado por JsbSan, pense incluir un controlador de teclado para evitar errores en la introducción de datos.

Como el ejemplo de ambos libros no conseguí que funcionen, busque en la web alguna sugerencia sobre algún error cometido por mi parte.
Tambien he buscado en el libro "A Beginner's Guide to gambas" VERSIÓN 3 de John W. Rittinghouse y Jon Nicholson.

El resultado de todas las busquedas es que no puedo creer que los codigos de ejemplo no funcionen, así que pense en instalar gambas 3 y probar los mismos ejemplos.
El resultado es que funcionan todos en gambas 3.

Estoy sorprendido, y pienso que estos códigos no funcionan por algún error cometido por mí. Tal vez una libreria que no he instalado,o cualquier otro elemento. Tampoco no veo que se comente que no funcionen en gambas 2 dichos ejemplos.

Por todo ello si alguien tiene tiempo y puede darme una indicación al respecto os quedare muy agradecido.

Perdonar si he sido muy extenso.

                                                                   juancv

Os adjunto el código que estoy probando para limitar la entrada de teclado en unos textBox a números o letras según caso.





*****************************************************************************
Mi ordenador es un portatil Samsung R522 con las siguientes caracteristicas:

    Distribución        Ubuntu 10.04 lucid
    Entorno de escritorio    GNOME 2.30.2 (Ubuntu 2010-06-25)
    Núcleo            Linux 2.6.32-41-generic
    Plataforma        i686
    CPU            Intel(R) Core(TM)2 Duo CPU T6500 @ 2.10GHz
    Memoria            2.9 GB

    gambas 2.19
*****************************************************************************


=============================================================================
Os adjunto el código que estoy probando

Los componentes del proyecto son:
    gb        Clases nativas internas
    gb.form        Más controles para componentes gráficas
    gb.gui        QT/GTK + intercambio de componentes

============================================================================
' gambas class file

PUBLIC SUB _new()

END

PUBLIC SUB Form_Open()

END
-----------------------------------------------------------------------------
PUBLIC SUB TextBox1_KeyPress()
'Control de teclado introduciendo solo números
'*********************************************************
   'Este codigo que funciona en gambas 3 aquí no hace nada
  
'se escriben todas las teclas que se pulsan
  
'*********************************************************
          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 key.Enter                'Enter
            CASE ELSE
              STOP EVENT
        END SELECT

END
-----------------------------------------------------------------------------
PUBLIC SUB TextBox2_KeyPress()
'***********************************************************
   'Este código en gambas 3 funciona correctamente
  
   'Aquí solo funciona "CASE ELSE" como se comprueba con
   'Message ("Paso por Else"). Da igual que tecla pulses.

  SELECT CASE key.Code
      CASE 48 TO 57
      CASE key.BackSpace
      CASE key.Delete
      CASE key.Tab
      CASE ELSE
         Message("Paso por Else")
         STOP EVENT
  END SELECT

END
-----------------------------------------------------------------------------
PUBLIC SUB TextBox4_KeyPress()
'Este código en gambas 3 realiza lo que se espera
'*****************************************************************
   'La función Str(key.Code), cuando pulsas cualquier tecla "Letra" ,
   ' "Signo de puntuación" , o "número", nos retorna 0.
   'Pero cuando pulsamos cualquier tecla como Tab=65289,
   'Bloq May ús=65509 etc.nos devuelve un código
'*****************************************************************

  TextBox1.Text = "Has pulsado    " & Str(key.Code)

END
-----------------------------------------------------------------------------
PUBLIC SUB TextBox5_KeyPress()
   'Este código en gambas 3 realiza lo que se espera
   '**********************************************************
   'Aquí es como si no se hubiera escritoo nada
   '**********************************************************
     SELECT CASE Key.Code
            CASE Key["A"] TO key["Z"]     '0123456789
            CASE key["ñ"]
            CASE 209
            CASE 241
            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.Space
            CASE Key.Delete               'borrar delante
            CASE Key.Tab                  'tabulador
            CASE ELSE
              STOP EVENT
        END SELECT


END

PUBLIC SUB TextBox6_KeyPress()

  IF key.Code >= 65 AND key.Code <90>= 48 AND key.Code <= 57 THEN
    ELSE IF key.Code = key.BackSpace THEN
    ELSE IF key.Code = key.Delete THEN
    ELSE
      STOP EVENT
  ENDIF

END
 



 
juancv - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Controlador De Teclado En Gambas 2 
 
Hola juancv:

Estoy buscando un programa que hace algo parecido a lo que quieres, pero no lo encuentro.

Encontré este.

Necesitaras dos textlabel, uno para mostrar "pulsa una tecla" y el otro para que te diga que pulsaste.
Puedes probarlo en gambas2.

PUBLIC SUB _new()

END

'Comprobamos que el envento de la tecla liberada para ver que hace
PUBLIC SUB form_KeyRelease()
  'Cuando una tecla sea liberada, comprueba el codigo
 SELECT CASE Key.Code
    CASE Key.Tab  'Si es la tecla tab
      TextLabel1.Text = "Código de la tecla: " & Key.Code & ", TAB."
    CASE Key.BackSpace  'Si es la barra de retroceso
      TextLabel1.Text = "Código de la tecla: " & Key.Code & " ,Backspace."
    CASE Key.CapsLock 'Si es la tecla de fija mayusculas
      TextLabel1.Text = "Código de la tecla: " & Key.Code & " ,BloqMayus."
    CASE Key.F1 'o una tecla de función
      TextLabel1.Text = "Código de la tecla: " & Key.Code & " ,tecla F1."
    CASE Key.F2 'o una tecla de función
      TextLabel1.Text = "Código de la tecla: " & Key.Code & " ,tecla F2."
    CASE Key.F3 'o una tecla de función
      TextLabel1.Text = "Código de la tecla: " & Key.Code & " ,tecla F3."
    CASE Key.F4 'o una tecla de función
      TextLabel1.Text = "Código de la tecla: " & Key.Code & " ,tecla F4."
    CASE Key.F5 'o una tecla de función
      TextLabel1.Text = "Código de la tecla: " & Key.Code & " ,tecla F5."
    CASE Key.F6 'o una tecla de función
      TextLabel1.Text = "Código de la tecla: " & Key.Code & " ,tecla F6."
    CASE Key.F7 'o una tecla de función
      TextLabel1.Text = "Código de la tecla: " & Key.Code & " ,tecla F7."
    CASE Key.F8 'o una tecla de función
      TextLabel1.Text = "Código de la tecla: " & Key.Code & " ,tecla F8."
    'Si ninguna de las de arriba son imprimibles?.Mostrar el codigo y el valor
    CASE ELSE
      IF Key.Code > 32 AND Key.Code < 128 THEN
        TextLabel1.Text = "Código de la tecla: " & Key.Code & " " & Chr(Key.Code)
      ELSE 'En otro caso solo el codigo
        TextLabel1.Text = "Código de la tecla: " & Key.Code
      ENDIF
    END SELECT
END

'Comprobamos en el evento de la tecla presiona un filtro para shift,control,alt,etc
PUBLIC SUB form_KeyPress()  
  IF Key.Shift THEN
    TextLabel1.Text = "Código de la tecla es: " & Key.Code & ", Mayusculas"
  ELSE IF Key.Alt THEN
    TextLabel1.Text = "Código de la tecla es: " & Key.Code & ", Alt"
  ELSE IF Key.Control THEN
    TextLabel1.Text = "Código de la tecla es: " & Key.Code & ", Control"
  ELSE IF Key.Code > 32 AND Key.Code < 128 THEN
    TextLabel1.Text = "Código de la tecla: " & Key.Code & " " & Chr(Key.Code)
  ELSE IF Key.Esc THEN
    TextLabel1.Text = "Código de la tecla es: " & Key.Code & ", Escape"
  ELSE 'En otro caso solo el codigo
    TextLabel1.Text = "Código de la tecla: " & Key.Code
  ENDIF
END

PUBLIC SUB Form_Open()
  ME.Caption = " Operaciones de teclado "
END
 


Si no me equivoco lo saque del libro de "A Beginner's Guide to gambas".

Seguiré mirando otros ejemplos.

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: Controlador De Teclado En Gambas 2 
 
Algo similar:

Otro ejemplo en gambas2.

PUBLIC SUB _new()

END

PUBLIC SUB Form_Open()
DIM mitextb AS TextBox

mitextb = NEW TextBox(ME) AS "cajadetexto"

WITH mitextb
   .Height = 25
   .Width = 168
   .x = 84
   .y = 28    
END WITH

END


PUBLIC SUB cajadetexto_keypress()
  
  SELECT CASE Key.Code  
    CASE Key["0"] TO Key["9"]      
    CASE ELSE
      STOP EVENT
  END SELECT

END
 


Aunque el libro cubre hasta la 3. Los ejemplos se han quedado "casi" igual que otra versión del libro (A Beginner's Guide to gambas)
Es recomendable que uses la versión 3 de Gambas.Pero puedes tener la 2 sin problema a la vez.Uso mas gambas2 que la 3.
Aunque no dudo en usar gambas3 si lo necesito.Convierto el código de una versión a otra.(mientras sea posible).

Gambas3 es el hoy y el futuro cercano.La versión con soporte y la ideal si no quieres quedarte atrás.
Gambas2 esta obsoleta.La ultima versión es la 2.24 y sera la ultima.

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: Controlador De Teclado En Gambas 2 
 
Hola juancv y bienvenido

En principio no veo fallos en el código, aunque puedes ojear algún hilo dentro de estos foros en el que recuerdo se trató este tema hace ya bastante tiempo. Yo tengo código similar en una antigua aplicación de Gambas2 y funciona correctamente. Tiene que haber algo raro en tu proyecto, por ejemplo prueba usando gb.qt en lugar de gb.gui o gb.gtk. Si así funciona, entonces es un bug en la implementación del gb.gtk en la versión de gambas2 que estés usando (que por cierto, no nos has indicado).

Ahora la pregunta del millón: ¿por qué preocuparse por Gambas2 cuando Gambas3 ya está disponible y lo reemplaza (y supera) completamente?

En poco tiempo Gambas2 irá desapareciendo de los repositorios, esto es una realidad. Lo que no entiendo es por qué nos empeñamos en seguir con un cadáver a nuestro lado y no migrar de una vez a Gambas3... Por otra parte, mientras que no se haga un uso masivo de Gambas3, será muy complicado descubrir posibles fallos para que se vayan solucionando cuanto antes.

En fin, otra vez pensando en voz alta...

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Controlador De Teclado En Gambas 2 (Solucionado) 
 
Hola. Gracias  Shell y jguardon por la pronta respuesta.

Debería haberme decidido antes a escribir.

Despuesde probar vuestras sugerencias he podido comprobar que el problema esta en el componente gb.gui,ya que al cambiarla por gb.qt todas las pruebas que realice anteriormente han funcionado correctamente.

Por tanto, colocar un solucionado en la cabecera

Estoy usando las dos veriones, gambas 2.19 y gambas 3.1.1 ya que siguiendo algunos ejemplos en gambas 3 dan error.
Como podeis intuir soy novato en cuanto a programación.
Gracias de nuevo
 



 
juancv - 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 Compilar En Gambas 3 (solucionado) sasogu General 4 Miercoles, 25 Abril 2012, 02:53 Ver último mensaje
sasogu
No hay nuevos mensajes Gambas 3 Me Flipa El Teclado shordi General 6 Jueves, 10 Enero 2013, 15:35 Ver último mensaje
Dani26
No hay nuevos mensajes Textarea: Controlar Su Scrollbar Con El Te... jsbsan General 11 Lunes, 02 Octobre 2017, 20:23 Ver último mensaje
jsbsan
No hay nuevos mensajes Duda Sobre El Controlador Intel-microcode Shell Mundo Linux 5 Sabado, 09 Diciembre 2017, 19:50 Ver último mensaje
Shell
 

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