Cada elemento 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 elemento de formulario cuando el formulario se presentó por última vez.
Como se describe más adelante, el código de datos modificados de un elemento es distinto de la propiedad modified, que está establecida en el programa y que preestablece el valor del código de datos modificados.
El usuario establece el código de datos modificados escribiendo un carácter en el elemento 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í.
Las sentencias set afectan al valor de la propiedad modified, no al valor actual del código de datos modificados. Una prueba del tipo if item modified se basa en el valor del código de datos modificados que estaba en vigor cuando los datos de formulario se devolvieron por última vez al programa. Si intenta probar el código de datos modificados de un elemento 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 elementos 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 (item01 is modified) ; end // supongamos que el usuario modifica ambos elementos converse form01; // el resultado de la prueba es true if (item01 is modified) ; end // el resultado de la prueba es true if (item02 is modified) ; end // establece la propiedad modified en no // en la siguiente sentencia converse para el formulario set item01 initialAttributes; // establece la propiedad modified en sí // en la siguiente sentencia converse para el formulario set item02 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 (item01 is modified) ; end // supongamos que el usuario no modifica ninguno de los dos elementos 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 (item01 is modified) ; end // el resultado de la prueba es true porque el programa ha establecido // el código de datos modificados en sí if (item02 is modified) ; end // supongamos que el usuario no modifica ninguno de los dos elementos converse form01; // el resultado de la prueba es false if (item01 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 elemento en sus valores iniciales if (item02 is modified) ; end