Показать сообщение отдельно
Старый 11.06.2013, 18:02   #1  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Индикаторы в SysCompareForm и IE10 (AX 2009 & AX 2012)
В процессе апгрейда приложения обнаружилось неприятное свойство формы 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. Решить её можно так же, но код нужно немного дополнить для поддержки новых возможностей формы (для зелёной подсветки).
Изображения
 
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me

Последний раз редактировалось Maxim Gorbunov; 11.06.2013 в 21:06. Причина: Поменял макрос #HTMLGradient
За это сообщение автора поблагодарили: Vadik (1), kashperuk (5), Logger (3), Daiver (1), gl00mie (2), IvanS (1), Sergey Petrov (1).