В процессе апгрейда приложения обнаружилось неприятное свойство формы SysCompareForm: индикаторы (красный и синий прямоугольники около комбо-боксов) в форме отображаются с помощью ActiveX HTML Document, и после обновления до IE 10 они пропадают:
В общем-то, большой проблемы в этом нет, но доставляет некоторое неудобство - постоянно приходится вспоминать, что в редакторе подсвечено красным цветом, а что - синим.
Небольшое изменение меода init() формы SysCompareForm возвращает индикаторы обратно (код для AX 2009):
X++:
void init()
{
// <Fix for IE 10>
#localmacro.HTMLGradient
@'<html>
<body scroll="No" style="border: 0;
margin: 0;">
<table style="filter:progid:DXImageTransform.Microsoft.Gradient(
startColorstr=%1,
endColorstr=%2,
gradientType=1);
height: 100%;
width: 100%">
<td></td>
</table>
</body>
</html>'
#endmacro
// </Fix for IE 10>
super();
html.prefColumnSize(600,400);
combobox1.prefColumnSize(400,100);
//
// Set height of html controls to match height of comboBox controls
//
redHtmlGroup.height(comboBox1.heightValue());
blueHtmlGroup.height(comboBox2.heightValue());
//
// Create gradients for red and blue indicators
//
// <Fix for IE 10>
/*
SysHelp::showHTML(htmlRed, @'<html>
<body scroll="No" style="
filter:progid:DXImageTransform.Microsoft.Gradient(
startColorstr=#FF0000,
endColorstr=#FF9999,
gradientType=1);"
></body></html>');
*/
SysHelp::showHTML(htmlRed, #HTMLGradient(#FF0000, #FF9999));
// </Fix for IE 10>
// <Fix for IE 10>
/*
SysHelp::showHTML(htmlBlue, @'<html>
<body scroll="No" style="
filter:progid:DXImageTransform.Microsoft.Gradient(
startColorstr=#2222FF,
endColorstr=#9999FF,
gradientType=1);"
></body></html>');
*/
SysHelp::showHTML(htmlBlue, #HTMLGradient(#2222FF, #9999FF));
// </Fix for IE 10>
}
Аналогичная проблема присутствует в AX 2012. Решить её можно так же, но код нужно немного дополнить для поддержки новых возможностей формы (для зелёной подсветки).