Самый экономичный код смены состояния кнопки. - страница 2

 
khorosh:
А где оператор смены цвета? Меня интересует смена цвета фона кнопки.

Далее должен следовать вызов функции, отображающей кнопку:

ShowButton(name, ..., btnColor, ...);
 
khorosh:
А меня матрицы кнопок и классы не интересуют, циклы, поиски объектов и прочее тоже. Меня интересует главным образом изменение цвета одной единственной кнопки в связи со сменой  её состояния. Вот у Ihor Herasko и  Dmitry Fedoseev ход мысли правильный, но только уж слишком кратко, не использовали функции для работы с кнопкой, дали информацию на уровне идеи. Хотя я и понимаю, что краткость - сестра таланта. А вам Alexey спасибо за участие.

Вот без циклов, делов-то..

#include <Controls\Button.mqh>

CButton Button;
Button.ColorBackground(colorBg);// меняем цвет кнопки
Button.Color(colorTxt); // меняем цвет шрифта
 
khorosh:
Имел ввиду минимальный объём кода, количество символов в коде(букв. цифр). Состояние true - нажата, false - отжата. В коде должны быть только функции связанные с изменением состояния и цвета фона кнопки..
//+------------------------------------------------------------------+
#include <Controls\Button.mqh> 
CButton ButtonSell;
//+------------------------------------------------------------------+
void OnTick()
  {
   if(ButtonSell.Pressed())
     {
      // code
      ButtonSell.Pressed(false);
     }
  }
//+------------------------------------------------------------------+
Так пойдет?
 
khorosh:
 Если подобный вариант здесь не будет предложен, то я его потом выложу.
? потом уже пришло?
 
pako:
? потом уже пришло?
автор топика очевидно имел ввиду "button.Toggle()", сокращённое до b.t()  :-)
 
самый экономичный код смены цвета кнопки -смена цвета кнопки в уме, в коде занимает ноль байт
 
Alexander Bereznyak:
самый экономичный код смены цвета кнопки -смена цвета кнопки в уме, в коде занимает ноль байт
Ну как-то не серьёзно :)
 
Хочу уточнить. Я бы хотел, чтобы был приведён код без использования библиотек, классов и прочее. Должны выполняться следующие действия: по каждому нажатию кнопки  её состояние должно меняться на противоположное. Цвет фона кнопки также должен меняться и должен быть привязан к состоянию кнопки
 
khorosh:
Хочу уточнить. Я бы хотел, чтобы был приведён код без использования библиотек, классов и прочее. Должны выполняться следующие действия: по каждому нажатию кнопки  её состояние должно меняться на противоположное. Цвет фона кнопки также должен меняться и должен быть привязан к состоянию кнопки
//+------------------------------------------------------------------+
//|                                              button_khorosh .mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   ObjectCreate(0,"z",OBJ_BUTTON,0,0,0);
   ObjectSetInteger(0,"z",OBJPROP_XDISTANCE,100);
   ObjectSetInteger(0,"z",OBJPROP_YDISTANCE,100);
   ObjectSetInteger(0,"z",OBJPROP_XSIZE,100);
   ObjectSetInteger(0,"z",OBJPROP_YSIZE,100);
   ObjectSetInteger(0,"z",OBJPROP_BGCOLOR,clrLime);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(0,"z");
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      if(sparam=="z")
        {
         if(ObjectGetInteger(0,"z",OBJPROP_STATE))
            ObjectSetInteger(0,"z",OBJPROP_BGCOLOR,clrRed);
         else
            ObjectSetInteger(0,"z",OBJPROP_BGCOLOR,clrLime);
        }
     }
  }
//+-----------------------------------------------------------------

чет наподобие

но без прочее неполучится 

 
//+------------------------------------------------------------------+
//|                                              button_khorosh .mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   ObjectCreate(0,"z",OBJ_BUTTON,0,0,0);
   ObjectSetInteger(0,"z",OBJPROP_XDISTANCE,100);
   ObjectSetInteger(0,"z",OBJPROP_YDISTANCE,100);
   ObjectSetInteger(0,"z",OBJPROP_XSIZE,100);
   ObjectSetInteger(0,"z",OBJPROP_YSIZE,100);
   ObjectSetInteger(0,"z",OBJPROP_BGCOLOR,clrLime);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(0,"z");
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      if(sparam=="z")
        {
         ObjectSetInteger(0,"z",OBJPROP_BGCOLOR,ObjectGetInteger(0,"z",OBJPROP_BGCOLOR)==clrLime?clrRed:clrLime);
        }
     }
  }
//+------------------------------------------------------------------+
или так
Причина обращения: