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


RE: Control del teclado con Gridview - Shordi - 19-07-2023

Cita:¿Por qué antes no?, ni idea
Vale, he aquí el por qué explicado de manera larga (la corta era esa de: "Creas grdvPral pero no le asignas ningún observador.")

Cuando instancias un formulario o cuando usas el instanciado oculto (no olvidemos que un formulario es una clase estática y se puede usar como un objeto creando una instancia oculta bajo demanda.) el formulario se erige en su propio observador, es decir "observa" los eventos de todos los controles contenidos en su interior. Para cuando llega el momento de "Abrir" el formulario, es decir, ejecutar el Form_open() ya todo ha sido pre-masticado.

Si entonces, como haces tú, creas un nuevo control asignándolo al form new Gridview(Me), este control no está bajo la inspección del observador del formulario y sus eventos no serán interceptados. Se hace necesario, pues, crear un observador que haga ese trabajo. Puedes hacer dos cosas:

a) crear un observador específico, si es que te gusta teclear:

Código:
Private $obs as observer
Public sub Form_Open()
$obs=new observer(grdvPral) as "grdvPral"

b) o la más infinitamente sencilla cuestión de añadir as "grdvPral" en el momento de la creación del control.

[code]

Como dato añadido puedes utilizar ese as "grdvPral" como manera de crear un grupo de controles igual que cuando usas la propiedad group del cuadro de propiedades del IDE. así si haces, digamos, un listbox y quieres coordinar los eventos con el gridview haríamos esto:
[code]
y al pulsar una tecla tanto en uno como en otro se dispararía el evento grdvPral_KeyPress(), siendo aquí grdvPral el nombre del observador, no del control. Para saber cuál de los dos controles observados ListBox1 o grdvPral es el "culpable" del disparo, usaremos la referencia Last

Perdón por el ladrillo.

Saludos


RE: Control del teclado con Gridview - Grandamakulo - 20-07-2023

Estimado Shordi, muy al revés, agradezco el «ladrillo».
En realidad, me refería a que el código primero me falló y al rato, al volver a casa, me funcionó en el mismo equipo. No sé, el Fantasma de los Bytes, el Horripilante Hombre del Güifi, la Niña del USB... algo raro, en definitiva  Big Grin

En cualquier caso, la explicación del ladrillo es para dejarlo en un post fijo, porque es superaclaratoria.
¡Muchas gracias!