Actualizar casillero en formulario

vForum público de la plataforma de desarrollo Velneo

Moderador: vCoaches

jose.cebrian
vMate
vMate
Mensajes: 80
Registrado: 04 Jul 2007, 13:08
Ubicación: Albacete

Actualizar casillero en formulario

Mensaje por jose.cebrian »

Buenas a todos,
Tengo un formulario con casilleros y al hacer click cojo unos datos y cambio de color el casillero con un campo booleano que controla la visibilidad. Mi problema es que para que se actulice el casillero (cambie de color) tengo que refrescar el formulario (saliendo, entrando).
¿Existe alguna manera de que se refresque al hacer el click?
Gracias de antemano
Adjuntos
casillero.JPG
(52.44 KiB) Descargado 400 veces
Jose David Cebrián
Almansa (Albacete)
josecebri@gmail.com
Avatar de Usuario
Fran
vCoach
vCoach
Mensajes: 6599
Registrado: 21 Sep 2005, 08:23
Ubicación: Madrid (España)
Contactar:

Mensaje por Fran »

Buenos dias:

En un menú formulario refrescaría sin problemas utilizando la sincronización de controles.

Si necesitas que sea en un formulario obligatoriamente también podría conseguirse, por lo menos con rejillas funciona y debería también en los casilleros, de la siguiente manera:

1.- Declarar la dll User32 en el mapa incluyendo la función keybd_event. Esto está colgado en un mapa en el hilo de ejemplos y puedes copiarlo de ahí.

2.- Copiar la función SEND-KEYS() del mapa anterior para enviar pulsaciones de teclas por proceso.

3.- Añadir un botón con condición visible = 0 y activa = 1 en el formulario, justo antes del casillero en el orden tab. Este botón tendrá marcados los check Auto tab, Refrescar cambios ficha y Refrescar cambios históricos.

Por último, asignar a este botón una tecla aceleradora, p. ej., F7.

Este botón ejecutará un proceso vacío, para que no realice operaciones.

4.- En el proceso de click del casillero, añades una llamada a la función que genera pulsaciones de teclado pasándole el código necesario para que se genere un F7.

La lista de códigos válidos para esta dll está disponible aqui:

http://www.powerbuilder.org/modules.php ... page&pid=4

Con esto conseguirás que, al hacer click, se genere la pulsación de un F7. Esto dispara el botón que ejecuta el proceso que no hace nada y refresca el formulario.
Como tiene marcado Auto Tab y está antes del casillero en el orden Tab, el foco vuelve al casillero.

Algo parecido a esto, pero refrescando una rejilla, lo publiqué en el mapa que simula un agendizador en un formulario:

http://forum.velneo.com/es/viewtopic.php?p=20854#20854

No es lo mismo, pero puede servir de idea.
Un saludo,

Francisco Javier Pérez Novo
EfeUno Consultores de Gestión y Software, S.L.
fjpnovo@efeuno.org
http://www.efeuno.org
(+34) 91 519 44 86
Skype: Fran-EfeUno

Google Maps:
40.447943147972445, -3.6719655990600586
jose.cebrian
vMate
vMate
Mensajes: 80
Registrado: 04 Jul 2007, 13:08
Ubicación: Albacete

Mensaje por jose.cebrian »

Muchas gracias Fran, he conseguido lo que quería, me has sido de gran ayuda y creo que no será el único sitio donde lo use.
Jose David Cebrián
Almansa (Albacete)
josecebri@gmail.com
Avatar de Usuario
Fran
vCoach
vCoach
Mensajes: 6599
Registrado: 21 Sep 2005, 08:23
Ubicación: Madrid (España)
Contactar:

Mensaje por Fran »

Buenas tardes:

Pues si, la verdad es que los botones ocultos de refresco dan mucho juego.

Estos días estoy trabajando en un mega formulario que contiene 144 checboxes (6 pestañas con 24 checkboxes cada una) sincronizados con una rejilla de histórico.

La visibilidad y el nombre de las pestañas y de los checkboxes es configurable por el usuario final (sin tocar el mapa, claro), así como lo registros que se han de grabar / borrar en la rejilla al marcar / desmarcar los checkboxes.

Al marcar / desmarcar los 144 checkboxes, utilizo 144 botones ocultos que llaman a 144 procesos en primer que ejecutan otros 144 en tercer plano.

De esta forma, el contenido de la rejilla se actualiza a base de marcar / desmarcar checkboxes (cada checkbox puede añadir o eliminar n registros en la rejilla), refrescando en tiempo real y con un muy buen rendimiento.

Da trabajo, pero el resultado es muy bueno. Life is soft!!!
Un saludo,

Francisco Javier Pérez Novo
EfeUno Consultores de Gestión y Software, S.L.
fjpnovo@efeuno.org
http://www.efeuno.org
(+34) 91 519 44 86
Skype: Fran-EfeUno

Google Maps:
40.447943147972445, -3.6719655990600586
Francisco Hoyos
vLeader
vLeader
Mensajes: 2712
Registrado: 22 Sep 2005, 17:56
Ubicación: Gijón (Asturias) España GMaps: 43.538740, -5.661970

Mensaje por Francisco Hoyos »

Otra utilidad muy interesante es la de poder lanzar menús desde procesos lanzados desde otro menú, poniendo aceleradores en las opciones a disparar y generando pulsaciones en función de los resultados del proceso.

Un truco muy práctico.
Francisco Hoyos
frhoydon@gmail.com
Avatar de Usuario
Pablo Navarrete
vAdviser
vAdviser
Mensajes: 437
Registrado: 03 Feb 2008, 20:19
Ubicación: Guadalajara, Jalisco. Mexico.
Contactar:

Mensaje por Pablo Navarrete »

Hola Fran oye abusando de tu confianza, fijate que estoy haciendo tal cual el procedimiento que comentas en este post, ya baje el ejemplo que subiste, solo que no puedo ingresar al hilo que pones:
http://www.powerbuilder.org/modules.php ... page&pid=4
para ver la lista de códigos válidos para esta dll en mi caso y como sigo tus instrucciones al pie de la letra pues seria para generar un F7.

Este procedimiento como lo comentan agrega muchisimas posibilidades a nuestras aplicaciones.

Te mando un coordial Saludo y agradesco de antemano cualquier comentario.
@PabloNavarrete (Twitter)
Skype: pabloefrenns (Pablo Navarrete)

" Los Imperios del Futuro, son los Imperios de la Mente" <Winston Churchill>
Avatar de Usuario
Pablo Navarrete
vAdviser
vAdviser
Mensajes: 437
Registrado: 03 Feb 2008, 20:19
Ubicación: Guadalajara, Jalisco. Mexico.
Contactar:

Mensaje por Pablo Navarrete »

Mmm, pues no me funciona, ni el boton que refresca la rejilla, expongo mi caso esperando me puedan ayudar. De antemano agradesco cualquier comentario.

Tengo un formulario donde cargo un Casillero alimentado por proceso de una tabla diferente a la tabla del Form, luego tengo una rejilla con el mismo origen de tabla del Form, tengo un Boton llamado Refrescar no lo he ocultado aun, donde tengo seleccionados los check:
Selec. con Tab.
Auto Tab
Refrescar cambios ficha
Refrescar cambios historicos

En la funcion a disparar del boton tengo Ejecutar proceso de Ficha actual.
Aqui ejecuto un proceso con Origen de Ficha igual a la del Form, y este proceso esta vacio.

Pues bien cuando entro al formulario selecciono una Casilla presiono el boton refrescar no hace nada. se refresca solo si doy un click en la rejilla.

sobre la funcion que dispara un pulso de tecla pues lo intente implementar en otra parte de la aplicacion pero no tuve exito.

Espero puedan ayudarme, y nuevamente gracias por cualquier comentario al respecto.

Saludos!
@PabloNavarrete (Twitter)
Skype: pabloefrenns (Pablo Navarrete)

" Los Imperios del Futuro, son los Imperios de la Mente" <Winston Churchill>
Avatar de Usuario
Pablo Navarrete
vAdviser
vAdviser
Mensajes: 437
Registrado: 03 Feb 2008, 20:19
Ubicación: Guadalajara, Jalisco. Mexico.
Contactar:

Mensaje por Pablo Navarrete »

Hola pues termine cambiando la rejilla por un objeto texto en donde muestro una concatenacion de datos segun la seleccion de los casilleros, despues para el refresco utilice un truco que lei en otro post, peero tengo una duda, si ejecuto la aplicacion en monopuesto al parecer no me funciona bien el refresco ni la funcion SEND-KEY pues solo me refresca una vez, y al seleccionar otro casillero ya no me hace el refresco, si me salgo y entro ya me muestra todo.

Lo que me parece intersante es que en Cliente/SErvidor me funciona perfectamente, alguien sabe porque ocurre esto?

Saludos!
@PabloNavarrete (Twitter)
Skype: pabloefrenns (Pablo Navarrete)

" Los Imperios del Futuro, son los Imperios de la Mente" <Winston Churchill>
Avatar de Usuario
Fran
vCoach
vCoach
Mensajes: 6599
Registrado: 21 Sep 2005, 08:23
Ubicación: Madrid (España)
Contactar:

Mensaje por Fran »

Buenos dias:

En este hilo del subforo de ejemplos:

http://forum.velneo.com/es/viewtopic.php?p=20854#20854

Colgué un mapa que simula un Agendizador en un formulario. Aqui puedes ver un ejemplo de refresco de rejilla alimentada por proceso en un formulario funcionando... a ver si te ayuda a detectar el problema.
Un saludo,

Francisco Javier Pérez Novo
EfeUno Consultores de Gestión y Software, S.L.
fjpnovo@efeuno.org
http://www.efeuno.org
(+34) 91 519 44 86
Skype: Fran-EfeUno

Google Maps:
40.447943147972445, -3.6719655990600586
Avatar de Usuario
carlosfi
vAdviser
vAdviser
Mensajes: 431
Registrado: 02 May 2008, 20:39

Re: Actualizar casillero en formulario

Mensaje por carlosfi »

Buenas tardes.
Tengo el siguiente problema con auto pulsar - Send Key

Ya hice lo siguiente

1.- Declarar la dll User32 en el mapa incluyendo la función keybd_event. Esto está colgado en un mapa en el hilo de ejemplos y puedes copiarlo de ahí.

2.- Copiar la función SEND-KEYS() del mapa anterior para enviar pulsaciones de teclas por proceso.

3.- Añadir un botón con condición visible = 0 y activa = 1 en el formulario, justo antes del casillero en el orden tab. Este botón tendrá marcados los check Auto tab, Refrescar cambios ficha y Refrescar cambios históricos.

Por último, asignar a este botón una tecla aceleradora, p. ej., F7.

Este botón ejecutará un proceso vacío, para que no realice operaciones.



4.- En el proceso de click del casillero, añades una llamada a la función que genera pulsaciones de teclado pasándole el código necesario para que se genere un F7.

Este ultimo proceso no entiendo, desde donde se debe de ejecutar, ya que tengo un formulario, que llama a un casillero con origen en producto, y para que se ejecute el F7, se deberia de ejecutar desde Ventas, cuando mi proceso de click tiene origen producto. Como se ejecutaria entonces el F7? O que significa Añades una llamada a la funcion que genera pulsaciones de teclado?, como es el proceso de llamado.
Desde ya muchas Gracias.

Carlos Figari
Luque-Paraguay
Responder