Páginas (2): 1 2   
tincho   17-08-2022, 21:14
#1
Hola a todos.
¿Es posible cambiar la tecla pulsada en el evento Key_Press a "siempre mayúscula"?
Los ejemplos que encuentro son para detener el evento si la tecla no es la que se espera.
Pero si por ejemplo quiero que en un textbox independientemente de si el lock de mayúsculas esta activad o no siempre se agreguen letras mayúsculas, en caso que sea una minúscula la pulsada, que esta se convierta en mayúscula.
Los ejemplos habituales son de este tipo
Código:
PUBLIC SUB TextBox1_KeyPress()

IF key.Text <> upper(key.Text)


STOP EVENT

ENDIF

END

¿Pero como hacer algo que cambie el key.code?

Código:
PUBLIC SUB TextBox1_KeyPress()

IF key.Text <> upper(key.Text)

' Ahora uso esto pero es posible modificar directamente el valor de la tecla
Last.Text = Last.Text & Upper(Key.Text)
Stop Event

'key.code = ? 'como conseguir el código de la mayúscula
' ¿Esto de aquí arriba se puede hacer ?

ENDIF

END
Última modificación: 18-08-2022, 20:57 por tincho.

1 Saludo.
jguardon   17-08-2022, 23:22
#2
Mayúsculas − A - Z  ASCII de 65 a 90
Minúsculas − a - z  ASCII de 97 a 122

Supongo que con unas pocas matemáticas puedes sumar y restar para obtener el código ascii correcto y convertirlo a keycode.

Saludos

Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
Shordi   18-08-2022, 09:42
#3
Haciendo algunas pruebas a raíz de este hilo observo, extrañado, que mi gambas no levanta el evento keypress para las teclas normales (letras y números) y sólo lo hace para todas las demás, mayúsculas, control, función, enter, etc.

¿Es algo nuevo que se me ha pasado o debo preocuparme?

[System]
Gambas=3.17.3
OperatingSystem=Linux
Kernel=5.15.0-46-generic
Architecture=x86_64
Distribution=Linux Mint 21 Vanessa
Desktop=CINNAMON
Font=Ubuntu,10
Scale=7
Theme=mint-y-dark-pink
Language=es_ES.UTF-8
Memory=15827M


Saludos

No podemos regresar
tincho   18-08-2022, 09:43
#4
(17-08-2022, 23:22)jguardon escribió: Supongo que con unas pocas matemáticas puedes sumar y restar para obtener el código ascii correcto y convertirlo a keycode.

Gracias Jesús, seguramente se pueda hacer algo de eso. De todas maneas lo que me interesa saber es si se puede alterar el valor de KEY dentro del mismo evento.

(18-08-2022, 09:42)Shordi escribió: observo, extrañado, que mi gambas no levanta el evento keypress para las teclas normales

Es raro eso.
Última modificación: 18-08-2022, 09:45 por tincho.

1 Saludo.
Shordi   18-08-2022, 09:49
#5
En raspberry pi con ubuntu budgie 21 y gambas 3.16.3, funciona como se esperaba.... Angry Angry

No podemos regresar
tincho   18-08-2022, 09:54
#6
Hice un sencillo ejemplo y en este en mi computadora levanta todas las teclas.
[System]
Gambas=3.17.3
OperatingSystem=Linux
Kernel=5.15.60-1-MANJARO
Architecture=x86_64
Distribution=Manjaro Linux
Desktop=XFCE
Font=Noto Sans,10
Scale=7
Theme=matcha-sea
Language=es_ES.utf8
Memory=7854M
Archivos adjuntos
.gz
events-keyboard-0.0.1.tar.gz (Tamaño: 11.64 KB Descargas: 3)

1 Saludo.
Shordi   18-08-2022, 10:27
#7
He averiguado el problema: El puto GTK3. Cambiando a QT5, todo perfecto... señor, señor...

Esto es lo que intentaba probar... aunque no sé si se ajusta a lo que quieres hacer.

Código:
Public Sub ComboBox1_KeyPress()
 
  Stop Event
  ComboBox1.Text &= Upper(key.text)
 
End

No creo que puedas cambiar el valor de key.code, aunque siempre puedes parar el evento y usar SendKey(), supongo...

Saludos
Última modificación: 18-08-2022, 10:31 por Shordi.

No podemos regresar
tincho   18-08-2022, 14:44
#8
(18-08-2022, 10:27)Shordi escribió: No creo que puedas cambiar el valor de key.code, aunque siempre puedes parar el evento y usar SendKey(), supongo...

El problema es que en los casos en que el usuario intenta poner un caracter en en otra parte diferente del final de la cadena el método que uso yo y el que propones tu, también pone el caracter "nuevo" al final de la cadena.

Como se usa SendKey()?
Última modificación: 18-08-2022, 14:49 por tincho.

1 Saludo.
vuott   18-08-2022, 15:34
#9
...para empezar_

https://gambaswiki.org/wiki/comp/gb.desk...p/sendkeys

Un esemplo practico: cómo ejecutar con código Gambas un programa externo (por ejemplo "Gedit") desde Terminal.
1) Activar el componente gb.desktop.
2) Abrir el terminal.
3) encontrar el número de identificación (ID) de la ventana del Terminal (por ejemplo usando desde Terminal el comando "wmctrl -l").
4) mantener abierto el Terminal.
5) Ejecutar el siguiente código Gambas:
Código:
Public Sub Button1_Click()

' Asigna el "Focus" a la ventana del Terminal:
  Desktop.ActiveWindow = número_de_identificación_de_la_ventana_del_Terminal
  
  Desktop.SendKeys("gedit\n")   ' ...o el nombre exacto de otro programa

End
Última modificación: 18-08-2022, 16:13 por vuott.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
Shordi   18-08-2022, 18:58
#10
Se me adelantó el Cónsul con lo de SendKeys()

Para las inserciones de texto el código sería
Código:
Public Sub ComboBox1_KeyPress()

  Stop Event
  ComboBox1.Insert(Upper(Key.Text))

End

Saludos

No podemos regresar
Páginas (2): 1 2   
  
Usuarios navegando en este tema: 4 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.