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