En mi dw tipo freeform tengo un campo tipo dropdown que recibe un argumento para su retrieve, por supuesto inicialmente no tiene nada por lo que he prog. Para que al perder el foco, un campo le envíe su contenido al campo con drop, el problema es que actúa con cualquier campo que pierde el foco, como identifico al que realmente me interesa
1 Respuesta
Respuesta de Antonio Garcia
1
1
Antonio Garcia, clipper todas sus versiones (manejo total) power builder todas...
Hay algunas cosas que no me quedan muy claras pero intentare resolver de una u otra manera. Los eventos del datawindow, en general, incluyen los parámetros dwo y row, estos son clave para resolver el problema que me comentas *- row es la fila en la que se encuentra ubicado actualmente el puntero o indicador del datawindow, independiente del tipo de esta *- dwo es un objeto tipo datawindow object, el cual tiene varias propiedades (recomiendo ver ayuda en pb), una de las cuales es el nombre entonces para conocer que objeto del datawindow posee o pierde el foco puedes preguntar por dwo.name esto te devuelve el nombre del objeto del dataobject. Sin embargo si lo que necesitas es que cada vez que cambie el valor en un campo cualquiera el cual designa el parámetro del dropdowndw entonces te recomiendo que lo hagas en el evento ITEMCHANGED, este se dispara en el momento en que el valor de un campo va a cambiar, este valor lo puedes obtener en la variable data, esta es tipo alfanumérico y todos los valores son integrados en esta. compongamos un ejemplo: En un datawindow tengo dos campos, familia y subfamilia los cuales uno depende del otro, cada vez que cambio el valor de familia este deberá reconfigurar subfamilia, esto lo hago por medio del ITEMCHANGED. Quedaría una cosa más o menos así: DATAWINDOWCHILD ldwc_child CHOOSE CASE LOWER(dwo.name) CASE 'familia' IF (THIS.GetChild('subfamilia', ldwc_child) = 1) THEN ldwc_child.SetTransOBject(SQLCA) ldwc_child.Retrieve(data) END IF CASE 'subfamilia' . . END CHOOSE En este simple ejemplo, demuestro como antes que el valor de familia cambie, determina el valor interno del dropdowndw por medio del parámetro data, el cual contiene el valor que en ese momento ingrese en la casilla familia pero aun no esta definido en el campo correspondiente. Notas adicionales: El evento ITEMCHANGED es el que determina las validaciones de los ingresos y este retorna un valor numérico el cual puede ser 0, 1, 2 0 = todo ok 1 = impide cambiar el foco y rechaza el valor ingresado 2 = rechaza el valor ingresado y permite cambiar el foco. Para más información recomiendo que le eches un vistazo al itemchanged, y itemerror.
En realidad agradezco mucho que te tomes la molestia de ayudarnos, hacen un gran trabajo, y me anima saber que en la red siempre hay alguien dispuesto a ayudarte, sigan con esos ánimos expertos, son lo máximo, Gino Arequipa-perú