AX7 - 3/5 La clase EventHandlerResult

En el siguiente ejemplo, el delegate recibe por parámetros una tabla y como esperamos que devuelva algo, le pasaremos por parámetros la clase EvendHandlerResult.
Ésta es la encargada de recuperar los valores del método ejecutado por el delegate; la clase deberá ser inicializada antes de llamar al delegate.
Si os fijáis, en esta ocasión, el método que hemos creado para validar los registros devolverá si el registro es válido. Con ret.result() recuperaremos lo que nos devuelva el delegate.

class Test
{
    delegate void getValidateCommon(Common   _common, EventHandlerResult  _ret){}

    public static void main(Args _args)
    {
        test                             test = new test();
        EventHandlerResult  ret = new EventHandlerResult();


        CustTable                  custTable;

        boolean                      ok = true;

        select firstonly custTable;

        test.getValidateCommon(custTable, ret);

        if (ret.result() != null)
        {
            ok = ret.result();
       
            if (!ok)
            {
                info("No válido");
            }
        }
    }

    [SubscribesTo(classstr(Test), delegatestr(Test, getValidateCommon))]
    public static void getValidateCommonHandler(Common _common, EventHandlerResult   _ret)
    {
        if (!_common.validateWrite())
            _ret.result(checkFailed("Registro no válido."));
    }
}

Observar que en el método getValidateCommonHandler el valor que debe devolver será guardado en la clase EventHandlerResult mediante _ret.result.

Comentarios