Controlador De Teclado En Gambas 2 [solucionado]


Objetivo: 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

Perfil MP  
Objetivo: 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.

Objetivo: 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.

Objetivo: 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

Perfil MP  
Objetivo: 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

Perfil MP  

Página 1 de 1


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4523s (PHP: -66% SQL: 166%)
Consultas SQL: 45 - Debug off - GZIP Activado