Comunidad Gambas-es
Control del teclado con Gridview - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: Controles/Librerías/Componentes (https://gambas-es.org/forum-7.html)
+--- Tema: Control del teclado con Gridview (/thread-1453.html)

Páginas: 1 2


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 Smile —:
É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

Big Grin Big Grin


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. Sad




Bueno,
los codigos no funcionan con los recursos de QT, pero me funcionan si yo activo el Componente gb.gtk3.