AX TIP: Mostrar label con saltos de línea mediante X++

Una característica bastante molesta que te encuentras programando para Microsoft Dynamics AX es la manera en la que se tratan los saltos de líneas al presentar texto en formularios utilizando etiquetas. Por ejemplo, la siguiente línea:

Box::yesNo("Línea 1 \n Línea 2", DialogButton::Yes, "Prueba multi línea!");

Presenta un diálogo normal con un texto en varias líneas (hace caso del carácter \n para poner un salto de línea):

strFmtLB 1 | Bien

Sin embargo al convertir el mismo texto en una etiqueta, el resultado es distinto:

// @TST001: Línea 1 \n Línea 2
Box::yesNo("@TST001", DialogButton::Yes, "Prueba multi línea!");

strFmtLB 2 | Mal

Y ocurre lo mismo si se utiliza una etiqueta con comodines (%1, %2, …) y la función strFmt de esta manera:

// @TST001: Línea 1 \n Línea 2
Box::yesNo(strFmt("@TST001"), DialogButton::Yes, "Prueba multi línea!");

Para que la etiqueta haga caso del salto de línea hay que utilizar la función strFmtLB:

// @TST001: Línea 1 \n Línea 2
Box::yesNo(strFmtLB("@TST001"), DialogButton::Yes, "Prueba multi línea!");

Y así si funcionará:

strFmtLB 3 | Bien

Pero esta función no sustituye a la anterior. Esto es, en caso de tener comodines y saltos de página habrá que incluir las dos funciones. Esto es bastante molesto cuando modificas una etiqueta y pones un salto de línea. Da la impresión de haberse roto algo que antes sí funcionaba, y es que esta función no esta incluida nunca en el código si no es necesaria de forma explícita.