Veamos un ejemplo. Tenemos un formulario para pago de gastos. La forma de pago más usada es en efectivo, pero además se puede pagar con cheques, conformes, o compensar contra un rubro de la contabilidad donde ya se hizo la previsión del gasto. Tenemos un control para seleccionar "Efectivo" u "Otros" como forma de pago que en el momento de abrir el formulario lo cargamos como "Efectivo". Tenemos además otro control en donde se selecciona la forma de compensación cuando la forma de pago no sea "Efectivo". Allí se puede seleccionar "Cheque", "Conforme" o "Rubro". Este control se inicializa como DISABLED y se pasará a ENABLED cuando en la forma de pago se seleccione "Otros".
Como además de "Efectivo" la forma de pago más habitual es con cheque, la intención es que cuando el usuario seleccione "Otros" en la forma de pago automáticamente se tome "Cheques" como la forma de compensación. Por lo tanto en el EVENT:Accepted del control para la forma de pago escribimos el siguiente código:
Código: Seleccionar todo
IF FormaPago = FormaPago:Efectivo
CLEAR(TipoCompensacion)
ELSE
ENABLE(?TipoCompensacion)
TipoCompensacion = TipoCompensacion:Cheque
END
Así que nuestro código correcto para el EVENT:Accepted de la forma de pago deberá ser:
Código: Seleccionar todo
IF FormaPago = FormaPago:Efectivo
CLEAR(TipoCompensacion)
ELSE
IF NOT 0{PROP:AcceptAll}
ENABLE(?TipoCompensacion)
TipoCompensacion = TipoCompensacion:Cheque
END
END
Dejo planteado un debate para la comunidad: ¿En qué otra situación corresponde utilizar la propiedad AcceptAll de la ventana?