Controlar Insert y Suprimir en las rejillas


([N4] Ramon Denuc) #1

Hola Foro,

Estoy intentando controlar las teclas “Insert” y “Suprimir” a través de una rejilla, pero solo las puedo controlar si quito de los Formularios de alta y de baja sus respectivos formularios relacionados.

Lo quiero porque quiero obligar al usuario a pulsar los botones de Alta y Baja, y no las teclas, de “Insert” y “Suprimir” (caso especial).

¿Existe la posibilidad de que las teclas “Insert” y “Suprimir” no se ejecuten, aunque estén relacionados sus respectivos formularios?

¿Alguna idea adicional, sobre este tema?

Saludos


([N4] gontorre) #2

Buenos días

Puedes intentar adaptar la solución que me dió Paco en su día para controlar la tecla INS en rejillas editables. El hilo es https://velneo.es/foros/topic/tecla-ins-en-rejilla-editable/

Un saludo


([N4] Ramon Denuc) #3

Gracias Gonzalo,

La solución que me ofreces no funciona exactamente como yo quisiera que fuera.

Saludos


([N4] Paco Satué) #4

Hola Ramon.

La solución que comenta Gonzalo solo funciona para Rejillas editables que no es tu caso.

Lo de las teclas Supr e Insert es otra de las muchas aberraciones que tiene el framework de Velneo. Cuando has asociado los formularios de Alta y Eliminación las teclas Insert y Supr estarán secuestradas por la Rejilla sin posibilidad de personalizarlo por parte del programador. Como digo, una aberración, consecuencia de la alta Asistencia en el diseño y muchas veces mal entendido “Life is Soft”.

Como otras muchas veces, tendrás que recurrir a las chapuzas para saltarte estas absurdas limitaciones en el Diseño de tu Aplicación.

Te propongo algo para que hagas pruebas

  • Tu formulario principal con la Rejilla tendrá un botón <Añadir> que llama a un Manejador de evento con el siguiente código:
Rem (Establecemos un marcador que indique al formulario de Edición que se ha pulsado el Botón
Set (LBOTON, 1)
Interfaz: Formulario de alta ( GRD_REJILLA, LOK)
Rem (Una vez ejecutado el PRE_INI del formulario de edición reseteamos el marcador LBOTON
Set (LBOTON, 0)
  • En el formulario de Edición del registro tendrás que leer en el evento PRE_INI el valor de la variable local LBOTON y actuar en consecuencia
If (#ID=0)
   Rem (Comprobamos el marcador LBOTON que valdrá 1 solo cuando se ha pulsado el botón <Añadir>
   Interfaz: Ejecutar manejador de evento (VER_SI_BOTON_JS, LOK)
   If (LBOTON = 0)
      Set retorno proceso = NO
      Finalizar proceso
  • El manejador de evento de javascript que comprueba el valor de la variable local LBOTON puede ser de la siguiente manera:
var oVista = theMainWindow.currentView();
var oForm = oVista.centralWidget();
// Comprobamos que oForm es realmente un Formulario (type = 18)
if (oForm.objectInfo().type() == 18) {
   theRoot.setVar("LBOTON", oForm.root().varToBool("LBOTON"))
}

Pruébalo
Saludos
Paco Satué


([N4] Ramon Denuc) #5

Impresionante Paco, con tu ayuda he podido controlar las teclas de Añadir, Suprimir y ademas el doble Click que se hace cuando un usuario quiere modificar un formulario.

Para ello solo he tenido que adaptar tu código al formulario que deseaba controlar:

Interfaz: Formulario de alta …
Interfaz: Formulario de modificación …
Interfaz: Formulario de baja …

Y luego en el PRE_INIT solo hace falta controlar si es una Alta, Modificación o Suprimir.

Quedo a tus pies, Paco, muchas gracias por tu estimable ayuda, a ver cuando puedo coincidir para pagar unas rondas, vamos es lo mínimo.

PD: Como ahora ya no se hacen los encuentros “Life is soft” que antes Velneo organizaba para sus Usuarios, sera un poco más difical.


([N4] Ramon Denuc) #6

Impresionante Paco, con tu ayuda he podido controlar las teclas de Añadir, Suprimir y ademas el doble Click que se hace cuando un usuario quiere modificar un formulario.

Para ello solo he tenido que adaptar tu código al formulario que deseaba controlar:

Interfaz: Formulario de alta …
Interfaz: Formulario de modificación …
Interfaz: Formulario de baja …

Y luego en el PRE_INIT solo hace falta controlar si es una Alta, Modificación o Suprimir.

Quedo a tus pies, Paco, muchas gracias por tu estimable ayuda, a ver cuando puedo coincidir para pagar unas rondas, vamos es lo mínimo.

PD: Como ahora ya no se hacen los encuentros “Life is soft” que antes Velneo organizaba para sus Usuarios, sera un poco más difícil.