Как сделать CButton нереагирующим на нажатие?

 

Что-то я попробовал два варианта - все равно кнопка меняет цвет при нажатии

                CButton* btn = CreateButton(bname, x1, y1, x2, y2, fontColor, IntegerToString(row+1), font, FontSize1, clrBg, clrBorder);
                btn.Disable();
                btn.Deactivate();
 
Alexey Volchanskiy:

Что-то я попробовал два варианта - все равно кнопка меняет цвет при нажатии

Может имеется ввиду:

btn.Locking(true);
 
Karputov Vladimir:

Может имеется ввиду:

Locking(true) я уже пробовал, тоже не работает. Поиском по сайту нашел пожелания к разработчикам, чтобы реализовали такую возможность, то есть ее просто нет! Я фигею. Временно решил проблему так, потом расковыряю эту станд. библиотеку.

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
    if(id == CHARTEVENT_OBJECT_CLICK)
    {
        if(StringFind(sparam, "bDigits") != -1) // "bDigits" - начало текста группы кнопок, которые не должны реагировать (менять цвет) на нажатие
            ObjectSetInteger(0, sparam, OBJPROP_STATE, 0);
        ChartRedraw();    
    }       
}
 
по моему new нехватает после =
 
Serhiy Dotsenko:
по моему new нехватает после =

Это моя функция создания кнопки с установкой необходимых параметров, там конечно есть new, иначе ничего бы и не работало ))

CButton* CreateButton(string bname, int x1, int y1, int x2, int y2, color bcolor, string btext, string font, int fontSize, 
                    color colorBackground, color colorBorder, long chart = 0, int subwin = 0)
{
    CButton* btn = new CButton();
    btn.Create(chart, bname, subwin, x1, y1, x2, y2);
    btn.Color(bcolor);
    btn.Text(btext);
    btn.Font(font);
    btn.FontSize(fontSize);
    btn.ColorBackground(colorBackground);
    btn.ColorBorder(colorBorder);   
    return btn;
}
 

В общем, я так понял, единственный способ добиться, чтобы кнопка не реагировала на нажатие, это сделать вот так

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
    if(id == CHARTEVENT_OBJECT_CLICK)
    {
        if(StringFind(sparam, "bDigits") != -1) // "bDigits" - начало текста группы кнопок, которые не должны реагировать (менять цвет) на нажатие
            ObjectSetInteger(0, sparam, OBJPROP_STATE, 0);
        ChartRedraw();    
    }       
}
 
Alexey Volchanskiy:

В общем, я так понял, единственный способ добиться, чтобы кнопка не реагировала на нажатие, это сделать вот так

Или сделать её приоритет (OBJPROP_ZORDER) ниже, чем фон. Установив значение -1.
 
Anatoli Kazharski:
Или сделать её приоритет (OBJPROP_ZORDER) ниже, чем фон. Установив значение -1.
Интересно, в МТ4 уже сделали приоритеты, или так и не реагирует на изменение?
 
Artyom Trishkin:
Интересно, в МТ4 уже сделали приоритеты, или так и не реагирует на изменение?
В MT4 тоже очень хорошо работает. 
 
Anatoli Kazharski:
В MT4 тоже очень хорошо работает. 
Значит долго меня не было ...