Tengo una grilla, y selecciono con doble click el datos donde estoy parado y con ese dato busco en otra DW para mostrar. El programa se cae cuando hago doble click sobre otro objeto, ¿cómo hago para que acepte el doble click solo dentro de la grilla y no sobre cualquier botón?
1 respuesta
Respuesta de Antonio Garcia
1
1
Antonio Garcia, clipper todas sus versiones (manejo total) power builder todas...
Cuando imprimes un doble click en el grid del datawindow, este ejecuta un evento llamado DOUBLECLICKED, (el cual imagino que estas utilizando). Este evento es disparado cada vez que imprimes un doble click en cualquier parte del datawindow, o en otras palabras este no reconoce que hiciste doble click en el detalle o la cabecera, o el pie. Es posible que tu problema este al rededor de estos conceptos. Para evitar estos precances puedes validar los siguientes datos. El evento devuelve como parámetros o argumentos, varios valores. Por ejemplo. xpos = posicion X del puntero o apuntador ypos = posicion Y del puntero o apuntador row = fila que recibio el doble click dwo = objeto que fue afectado con el doble click. Con lo anterior expuesto, la solución es muy simple. Primero: deberás preguntar por el valor de ROW, este deberá ser mayor a 0, pues de lo contrario estas haciendo click en cualquier lugar que no es el detalle. Segundo: el objeto DWO, contiene el objeto que recibió el doble click por lo que si te interesa que funciones en un objeto determinado simplemente preguntas por el nombre. DWO.NAME --> esto devuelve el nombre del objeto que tiene el foco O bien el nombre evaluado sera el descriminado, o sea, si el nombre del objeto es 'cuenta' por ejemplo, ejecuto la ventana de consulta, if dwo.name = 'cuenta' then "consulta" O si lo ves desde otro punto de vista, si el nombre del objeto es cuenta entonces no ejecuto la ventana de consulta. if dwo.name <> 'cuenta' then "consulta"
Ignora la ultima pregunta, lo hice de la siguiente manera : String ls_codigo // Para evitar que este fuera de foco if row<=0 THEN MessageBox("ATENCION","PARA SELECCIONAR HAGA DOBLE CLICK SOBRE UNA FILA") else ls_codigo=this.GetItemString(row,"codigo") dw_1.retrieve(ls_codigo) dw_1.setfocus() end if === Muchas gracias, realmente me ayudaste mucho.