Mitra Global Services

Navimania – Color en campos de página en NAV/BC

Buenas!! Esta semana os traigo algo un poquito más colorido 🤩

Estoy seguro de que alguna vez os han pedido añadir color a una página, o mas complicado aún, que el color sólo se añada si hay una condición.

Pues hoy os traemos la manera de aplicarles color a las líneas de una página o a un campo concreto.

Lo que os voy a enseñar sirve tanto para C/AL como para AL.

Hay dos maneras de hacer que un campo cambie de color y las dos se basan en unas propiedades que tiene el campo de la página.

La primera propiedad “Style” lo que hace es pintar siempre el campo de un color en concreto, o mejor dicho de un estilo en concreto.

Los estilos que hay actualmente en Navision son los siguientes:

En la imagen de arriba podemos ver un ejemplo de los tipos que hay para escoger.

Por tanto, tendremos 11 posibles estilos para aplicar a nuestros campos.

La otra propiedad “StyleExpr” es un poquito más compleja, ya que con ella podemos escoger cuándo aplicamos o no un estilo.

Vamos a mostrar un ejemplo, he escogido la tabla de producto como tabla de la página y le he añadido 4 campos.

En este ejemplo haremos que si el producto está bloqueado se muestren todos los campos de color rojo.

Ahora lo que haremos es crear una variable que será donde almacenaremos nuestro estilo.

Creamos un TextConstant que es donde pondremos el nombre de nuestro estilo.

Vamos al trigger “OnAfterGetRecord” para que cada vez que recorra la línea, verifique si está bloqueado el producto o no y rellene la variable “StyleExpresion”.

Como vemos, lo primero que hacemos es inicializar la variable, después si el producto esta bloqueado lo que haremos es añadirle a la variable el texto del estilo «Attention” que si recordamos es el de color rojo sin negrita.

Ahora os preguntaréis: ¿Y qué hacemos con esta variable? Pues es muy fácil, vamos a la propiedad “StyleExpr” de cada campo y añadimos el nombre de la variable.

Con esto ya tendremos coloreadas nuestras líneas.

Ahora podemos complicarlo un poquito más. Como veis hemos mostrado el campo «inventario» en la página. También podríamos indicar que si el inventario es menor de 10, lo pinte con el estilo “AttentionAccent”.

Para ello creamos otra Textconstant.

Y nos vamos otra vez al trigger “OnAfterGetRecord” para añadir el código que requerimos.

Como podéis ver lo que hemos hecho es priorizar el color del «bloqueado» por encima del de «inventario», porque queremos que sí o sí el del «bloqueado» salga de color.

El resultado sería el siguiente:

Pues ya estaríamos por hoy! Como siempre os dejo el ejemplo entero en este link de GitHub.

Esperamos que la explicación os haya resultado de utilidad y os emplazamos a nuestra próxima publicación.

ES