Control del teclado con Gridview - Grandamakulo - 18-07-2023
Hola, Compañeros:
Estoy a vueltas con el Gridview —el Tableview lo tengo ya totalmente desechado—. Y tengo el problema de que no puedo controlar la intercepción de pulsaciones de teclas. Vamos, que con los eventos KeyPress o KeyRelease del Gridview no pasa nada. Por más que le doy a los dedos en cualquier celda, no logro que el programa entre en cualquiera de los dos eventos. ¿Alguien sabe por qué ocurre esto y cómo solucionarlo?
¡Muchas gracias!
RE: Control del teclado con Gridview - Shordi - 18-07-2023
Cita:¿Alguien sabe por qué ocurre esto y cómo solucionarlo?
Como el Gridview funciona correctamente, algo hay en tu código que lo impide. Pasa un proyectito donde te ocurra eso y te podremos ayudar. Así, en vacío, sólo puedo decir lo que decía el mecánico sin ver el coche: "Algo está mal".
Saludos
RE: Control del teclado con Gridview - cogier - 18-07-2023
Este código me funciona.
Código: ' Gambas class file
Gridview1 As Gridview
Label1 As Label
Public Sub Form_Open()
With Me
.Height = 500
.Width = 800
.Arrangement = Arrange.Vertical
.Padding = 5
.Text = "Pulsar algunas teclas"
End With
With Gridview1 = New GridView(Me) As "Gridview1"
.ScrollBar = Scroll.None
.Rows.Count = 24
.Columns.Count = 14
.Expand = True
End With
With Label1 = New Label(Me) As "Label1"
.H = 28
.W = 100
.Font.Bold = True
.Font.Size = 16
End With
End
Public Sub GridView1_KeyPress()
Label1.Text &= Key.Text
End
RE: Control del teclado con Gridview - Grandamakulo - 18-07-2023
Hola a ambos —y gracias por las respuestas —:
Éste código no me funciona
Código: Public Sub Form_Open()
Dim grdvPral As New GridView(Me)
Me.Arrangement = Arrange.Fill
With grdvPral
.Header = 3
.ShowCursor = True
.Tracking = True
.Mode = 2
.Padding = 2
.Columns.Count = 8
.Rows.Count = 15
End With
End
Public Sub grdvPral_KeyPress()
Me.Caption = "Ha pulsado una tecla."
End
Public Sub grdvPral_KeyRelease()
Me.Caption = "Has soltado una tecla."
End
Voy a probar el código de @Cogier y comento.
Reitero el agradecimiento.
Pues no, no me funciona, querido @Cogier. Ni idea de por qué no. Adjunto la información del sistema, por si es algo de eso.
Código:
[System]
Gambas=3.18.3
OperatingSystem=Linux
Distribution=Linux Mint 21.1 Vera
Kernel=5.15.0-76-generic
Architecture=x86_64
Cores=4
Memory=7849M
Language=es_ES.UTF-8
Desktop=CINNAMON
DesktopResolution=134
DesktopScale=10
WidgetTheme=oomox-propio
Font=Hack,10
[Programs]
gcc=gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0
git=git version 2.34.1
[Libraries]
Cairo=libcairo.so.2.11600.0
Curl=libcurl.so.4.7.0
DBus=libdbus-1.so.3.19.13
GDK2=libgdk-x11-2.0.so.0.2400.33
GDK3=libgdk-3.so.0.2404.29
GStreamer=libgstreamer-1.0.so.0.2003.0
GTK+2=libgtk-x11-2.0.so.0.2400.33
GTK+3=libgtk-3.so.0.2404.29
OpenGL=libGL.so.1.7.0
Poppler=libpoppler.so.118.0.0
QT5=libQt5Core.so.5.15.3
RSvg=librsvg-2.so.2.48.0
SDL=libSDL2-2.0.so.0.18.2
SQLite 3=libsqlite3.so.0.8.6
[Environment]
CINNAMON_VERSION=5.6.8
CLUTTER_IM_MODULE=ibus
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
DESKTOP_SESSION=cinnamon
DISPLAY=:0
GB_GUI=gb.gtk3
GDMSESSION=cinnamon
GDM_LANG=es_ES
GIO_LAUNCHED_DESKTOP_FILE=/usr/share/applications/gambas3.desktop
GIO_LAUNCHED_DESKTOP_FILE_PID=19322
GJS_DEBUG_OUTPUT=stderr
GJS_DEBUG_TOPICS=JS ERROR;JS LOG
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
GTK3_MODULES=xapp-gtk3-module
GTK_IM_MODULE=ibus
GTK_MODULES=gail:atk-bridge
GTK_OVERLAY_SCROLLING=0
HOME=<home>
LANG=es_ES.UTF-8
LANGUAGE=es_ES.UTF-8
LC_ALL=es_ES.UTF-8
LOGNAME=<user>
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
PWD=<home>
QT_ACCESSIBILITY=1
QT_IM_MODULE=ibus
QT_LOGGING_RULES=*.debug=false
QT_QPA_PLATFORMTHEME=qt5ct
SESSION_MANAGER=local/<hostname>:@/tmp/.ICE-unix/967,unix/<hostname>:/tmp/.ICE-unix/967
SHELL=/bin/bash
SHLVL=0
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
TZ=:/etc/localtime
USER=<user>
XAUTHORITY=<home>/.Xauthority
XDG_CONFIG_DIRS=/etc/xdg/xdg-cinnamon:/etc/xdg
XDG_CURRENT_DESKTOP=X-Cinnamon
XDG_DATA_DIRS=/usr/share/gnome:/usr/share/cinnamon:/usr/share/gnome:<home>/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/<user>
XDG_RUNTIME_DIR=/run/user/1000
XDG_SEAT=seat0
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_SESSION_CLASS=user
XDG_SESSION_DESKTOP=cinnamon
XDG_SESSION_ID=c1
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_SESSION_TYPE=x11
XDG_VTNR=7
XMODIFIERS=@im=ibus
RE: Control del teclado con Gridview - Shordi - 18-07-2023
Creas grdvPral pero no le asignas ningún observador. Prueba
Código: private grdvPral as gridview
grdvPral=new gridview as "grdvPral"
Decláralo private, de manera que tenga visibilidad desde todo el procedimiento y asignale un nombre de evento (as). Con eso responderá a los eventos grdvPral_evento.
Escribo con el TF, por lo que puede que salga un churro de respuesta.
RE: Control del teclado con Gridview - Grandamakulo - 19-07-2023
Nada, sigue sin funcionarme. Y seguro que es la mayor chorrada del universo universal, pero no doy con ello.
RE: Control del teclado con Gridview - Shordi - 19-07-2023
Frente al teclado, no al tf. te digo: Esto funciona.
Código: Private gr As GridView
Public Sub Form_Open()
gr = New GridView(Me) As "Tabla"
gr.Rows.Count = 10
gr.Columns.Count = 10
gr.X = 100
gr.Y = 100
gr.H = 300
gr.W = 300
gr.Header = 3
gr.Visible = True
End
Public Sub Tabla_KeyPress()
Print "Tecla"
End
RE: Control del teclado con Gridview - Shordi - 19-07-2023
Más aún, he modificado ésta línea en tu código original:
[code]
y sí funciona.
RE: Control del teclado con Gridview - Grandamakulo - 19-07-2023
Vale, me acaba de funcionar. ¿Por qué antes no?, ni idea —entre medias he actualizado Mint, todo hay que decirlo; probablemente no sea relevante, pero ahí queda—. Lo curioso es que en la aplicación que estoy montando no me funciona, aunque creo que es porque «dispara» antes el evento «Change». ¿Puede ser?
RE: Control del teclado con Gridview - vuott - 19-07-2023
(18-07-2023, 17:39)cogier escribió: Este código me funciona.
A mi no funciona.
(18-07-2023, 19:50)Grandamakulo escribió: Éste código no me funciona
Tambien a mi no funciona.
(19-07-2023, 09:49)Shordi escribió: Esto funciona.
A mi no funciona.
Bueno,
los codigos no funcionan con los recursos de QT, pero me funcionan si yo activo el Componente gb.gtk3.
|