06 octubre 2011

Propiedad Editable de los campos mostrados en una página

El cliente RTC de Microsoft Dynamics NAV salió hace ya unos cuantos años. Seguramente muchos técnicos de Navision enseguida se pusieron a trabajar con él y dominan ya a la perfección cómo programar páginas, cómo cambian las páginas respecto a los formularios y todo este tipo de cosas.
Por desgracia, no es mi caso. Intento estar siempre al día, pero en el caso del RTC, no lo he estado demasiado. He mirado documentación, por supuesto, pero hasta ahora aún he trabajado para clientes que estaban en versiones anteriores de Microsoft Dynamics NAV. 
Ahora me pongo a programar para el RTC, que es un mundo completamente nuevo para mi, y empiezo a descubrir cómo hacerlo, los pequeños trucos, etc.
Estará desfasado, sí, pero voy a hacer unos cuantos posts explicando aquellos pequeños trucos y cosas varias que vaya encontrando.




Accede al curso de Dynamics NAV



Dicho esto, empiezo con el primer truco, el que da nombre al título de este post:

Propiedad Editable de los campos mostrados en una página

En un formulario, la propiedad Editable de un control (TextBox, CheckBox, etc.) mostrado en el formulario es un valor fijo que acepta los valores Sí y No.

La propiedad, pero, puede cambiarse en tiempo de ejecución asignando un nuevo valor a la propiedad con una sentencia como la siguiente:
CurrForm."Nombre del Control".EDITABLE(NuevoValorDeLaPropiedad);

En las páginas, este comportamiento es distinto. La propiedad Editable de los controles acepta una expresión booleana. Pero no existe una función para cambiar la propiedad en tiempo de ejecución, es decir, no se puede escribir una sentencia como la siguiente:

CurrPage."Nombre del control".EDITABLE(NuevoValorDeLaPropiedad);

Cómo podemos entonces reproducir el comportamiento de hacer un campo Editable/No Editable en tiempo de ejecución?

La herramienta de transformación de formularios a páginas hace lo siguiente:
* Declara una variable global, de tipo boolean, a la que llama NombreDelControlEditable
* Cambia la sentencia
CurrForm."Nombre del Control".EDITABLE(NuevoValorDeLaPropiedad);
   por
NombreDelControlEditable := NuevoValorDeLaPropiedad;
* Asigna la variable global creada a la propiedad Editable del control

Podéis ver un ejemplo de lo comentado en la ficha del cliente (Form 21 y Página 21). En la ficha del cliente, el estándar de Microsoft Dynamics NAV hace editable el campo Contacto en función de si hay o no un Nº contacto. 


Cristina Nicolàs

No hay comentarios:

Publicar un comentario