Cada campo de un formulario de texto tiene un código de datos modificados, que es un valor de estado que indica si se considera que el usuario ha cambiado el campo de formulario cuando el formulario se presentó por última vez.
Como se describe más adelante, el código de datos modificados de un campo es distinto de la propiedad modified del campo, que está establecida en el programa y que preestablece el valor del código de datos modificados.
if (field is modified) ; endPara obtener detalles, consulte el apartado Expresiones lógicas.
El usuario establece el código de datos modificados escribiendo un carácter en el campo o bien suprimiendo un carácter. El código de datos modificados permanece establecido, incluso si el usuario, antes de enviar el formulario, devuelve el contenido del campo al valor que se ha presentado.
Cuando vuelve a visualizarse un formulario debido a un error, el formulario sigue procesando la misma sentencia converse. Como resultado, los campos que se modificaron en converse tienen el código de datos modificado establecido en sí al volver a visualizarse el formulario. Por ejemplo, si se entran datos en un campo que tiene una función de validador, la función puede invocar a la función ConverseLib.validationFailed para establecer un mensaje de error y provocar que vuelva a visualizarse el formulario. En este caso, cuando se pulse una tecla de acción, la función de validador volverá a ejecutarse ya que el código de datos modificado del campo sigue establecido en sí.
if (field is modified) ; endSi intenta probar el código de datos modificados de un campo antes de que la lógica presente el formulario por primera vez, se produce un error durante la ejecución.
Se considera que el formulario en su conjunto está modificado si el código de datos modificados está establecido en sí para alguno de los campos variables de formulario. Si prueba el estado de modificación de un formulario que todavía no se ha presentado al usuario, el resultado de la prueba es FALSE.
La lógica siguiente muestra el resultado de varias pruebas:
// el resultado de la prueba es false porque no se ha // ejecutado una sentencia converse para el formulario if (form01 is modified) ; end // produce un error de entorno de ejecución porque no se ha // ejecutado una sentencia converse para el formulario if (field01 is modified) ; end // supongamos que el usuario modifica ambos campos converse form01; // el resultado de la prueba es true if (field01 is modified) ; end // el resultado de la prueba es true if (field02 is modified) ; end // establece la propiedad modified en no // en la siguiente sentencia converse para el formulario set field01 initialAttributes; // establece la propiedad modified en sí // en la siguiente sentencia converse para el formulario set field02 initialAttributes; // el resultado de la prueba es true // (la sentencia establecida anteriormente sólo se aplica // en la siguiente sentencia converse para el formulario if (field01 is modified) ; end // supongamos que el usuario no modifica ninguno de los dos campos converse form01; // el resultado de la prueba es false porque el programa ha establecido // el código de datos modificados en no y el usuario no ha introducido datos if (field01 is modified) ; end // el resultado de la prueba es true porque el programa ha establecido // el código de datos modificados en sí if (field02 is modified) ; end // supongamos que el usuario no modifica ninguno de los dos campos converse form01; // el resultado de la prueba es false if (field01 is modified) ; end // el resultado de la prueba es false porque la presentación // no era la primera y el programa no ha restablecido las // propiedades de campo en sus valores iniciales if (field02 is modified) ; end
Consulta relacionada
Expresiones lógicas