Como puedo desplazarme a través de los registros Empleando las teclas direccionales.
1 Respuesta
Respuesta de Antonio Garcia
1
1
Antonio Garcia, clipper todas sus versiones (manejo total) power builder todas...
En principio el datawindow utiliza las teclas direccionales para poder navegar dentro de ella, existen restricciones como permitir que el objeto se encuentre habilitado o no, sin embargo si todas sus propiedades se encuentran sin restricción, la navegación es posible por medio de flechas, y todas las teclas que permiten la navegación standard conocida. Sin embargo si aun tienes problemas con respecto a esta navegación, por una u otra razón, puedes añadir a el datawindow control, un evento llamado key, este evento es añadido tal cual lo haces con un evento de usuario, la diferencia es que en la parte donde pone EVENT_ID, deberás seleccionar el key o keydown, pues este es propio del objeto, y comunica las acciones del teclado con el evento, o dicho en otras palabras, cuando presionas una tecla dispara dicho evento. Una vez tienes declarado el evento, en el encontraras algunas variables de referencia como por ejemplo la variable key esta variable contiene el valor de la tecla presionada, aquí es donde puedes descubrir que tecla presiono el usuario, y como ya habrás concluido, simplemente con la ayuda de una instrucción case, podrías asociar una tecla a una función propia del datawindow, por ejemplo cuando presione la tecla flecha hacia abajo, podrías ejecutar un evento de usuario que salte de linea dentro del datawindow. Seguramente te preguntaras porque un evento de usuario, la respuesta es muy simple, lo que sucede es que con un evento puedes utilizar la función POSTEVENT(), esta función ejecuta un evento hasta que el apuntador del curso del programa, sale del evento que hizo dicha invocación. Por lo que en tu caso esto tiene un valor añadido, pues no va a efectura la instrucción hasta que el proceso finalice en el procedimiento key, Dentro del evento de usuario que servirá para saltar de linea podrías colocar por ejemplo integer liRow liRow = this.getrow() liRow = liRow + 1 if (liRow > this.rowcount()) then liRow = this.rowcount() end if this.selectrow(0, false) this.setrow(liRow) this.scrolltorow(liRow) this.selectrow(liRow, true) Esto dará el efecto de salto de linea en el datawindow, Para el efecto de linea anterior, en lugar de sumar restas a la variable que contendrá el numero de la fila actual, y la consideración que si el valor es menor a uno, este tome el valor uno. Ten en cuenta que todo esto funcionara si y solo si el datawindow contiene el foco, de lo contrario tendrás que programar el movimiento en todos los eventos y redireccionarlo a el datawindow.