1.2 Añadiendo campos al diálogo

Bien tenemos un diálogo, vamos a insertarle algunos campos.

Antes de empezar a modificar el diálogo, quiero comentar que en la clase existen una serie de métodos que pueden sobrescribirse como el método run que vimos en el anterior post, en éste sobrescribiremos algunos más para conseguir nuestro objetivo.



Empezaremos sobrescribiendo el método Description con el que modificaremos el texto que aparece en el diálogo.

public static ClassDescription description()
{
    return 'Ejemplo RunBaseBatch';
}

En el ClassDeclaration insertaremos dos variables: una de tipo DialogField que como su nombre indica será un campo del diálogo y una variable que guardará el valor que asignemos en el diálogo a la de tipo dialogField.

class TestRunBaseBatch extends RunBaseBatch
{
    DialogField         dlgCustAccount;

    CustAccount         custAccount;
}

Claro, ¿No? La variable dlgCustAccount será nuestro campo del diálogo y el valor que obtengamos de dicho campo lo asignaremos posteriormente a la variable custAccount.

El siguiente paso será agregar nuestro nuevo campo al diálogo, para eso sobrescribiremos el método dialog para añadir nuestros campos.

Como podéis ver el método devuelve un Object; quiero que entendáis una cosa muy simple y es que el objeto dialogRunBase es un objeto(Object), por eso podemos devolver cualquiera de los dos.
De la misma manera que hemos declarado una variable de tipo DialgoRunBase, pero podría haber sido de tipo Object, el único problema es que si declaramos una variable de tipo Object no tendremos los métodos típicos del diálogo aunque si que lo podremos utilizar, esto es debido a que al ser de tipo Object no sabe de que tipo es objecto hasta que está en ejecución por eso no nos daría error.

Como veis en el Dialog le añadimos un campo de tipo CustAccount.
Esto lo haremos mediante el método addFieldValue; existe también el método addField. La diferencia entre ambos es que en el primero podemos inicializar el campo del diálogo con algún valor.

protected Object dialog()
{
    DialogRunbase dialog = super();

    dlgCustAccount = dialog.addFieldValue(IdentifierStr(CustAccount), custAccount, 'Cliente', 'Texto ayuda!!!!!!!');

    return dialog;
}

El siguiente método se llama una vez se cierra el diálogo y lo que haremos en éste es recuperar el valor asignado en el campo del diálogo a nuestra variable de tipo custAccount.

public boolean getFromDialog()
{
    custAccount = dlgCustAccount.value();

    return super();
}

 Éste método lo utilizaremos para asignar o devolver la variable custAccount.

public CustAccount parmCustAccount(custAccount  _custAccount = custAccount)
{
    custAccount = custAccount;

    return custAccount;
}

Para el que no entienda el método, es un simple get y set de toda la vida.

Si hemos hecho todo lo indicado tendremos un diálogo como el siguiente:



Al final del método run insertaremos el siguiente código en el que mostraremos por pantalla el cliente introducido en el diálogo.

info(strFmt('Cliente: %1', this.parmCustAccount()));

Para descargar el fichero xpo sólo tenéis que presionar en el siguiente enlace:

Descargar fichero xpo

Comentarios