Меню в индикаторе работает, а в советнике нет, Помогите!

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
ares96
126
ares96  


Добрый день, в общем такая проблема, есть индикатор в котором есть панель, тобишь:
кидаем на график индюк --> показывается кнопка, нажимаем её --> показываются другая кнопка, по нажатию этой кнопки --> показывается что-то, еще раз нажимаем скрывается
Пытаюсь создать советника, и перенести данный функционал и.... не могу понять почему коды одинаковые и работают по другому
Пытаюсь в советнике так сделать:

//вывожу BOX
//вывожу check
----
//+------------------------------------------------------------------+
int OnInit()
  { 
  
if(ObjectFind(0,"BOX")!=0)
ButtonPicture(0,"BOX",0,330,8,"::BOX.bmp","::BOX.bmp",76,16,0,0,false,CORNER_LEFT_UPPER,ANCHOR_CENTER,clrBlack,STYLE_SOLID,1,false,false,true,1);
ButtonPicture(0,"check",0,7000,7000,"::check.bmp","::check.bmp",77,16,0,0,false,CORNER_LEFT_UPPER,ANCHOR_CENTER,clrBlack,STYLE_SOLID,1,false,false,true,1);

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {

 
      if(ObjectFind(0,"BOX")==0) //нажимаем кнопку МЕНЮ
         if(GetState("BOX"))
           {
            ObjectSetInteger(ChartID(),"check",OBJPROP_XDISTANCE,330); отображается кнопка вкл/откл. чего либо
            ObjectSetInteger(ChartID(),"check",OBJPROP_YDISTANCE,24); 

      if(ObjectFind(0,"check")==0) //нажимаем кнопку check
         if(GetState("check"))
           {
           тут показ
           }
           else
           {
           тут скрытие      
           }
      //--- Панель 1
           }
           else
           {
          тут скрытие всего при нажатии повторно кнопки МЕНЮ
           }

  }

//+------------------------------------------------------------------+
bool GetState(string aName)
  {
   long value=0;
   ObjectGetInteger(0,aName,OBJPROP_STATE,0,value);
   return  (bool)value;
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
Прошу вас помогите разобраться в чем беда, в моем случае всё работает только если быстро переключить ТФ и тут же нажать кнопку, а так не работает((((
Так же хотел бы попросить вас кинуть свой пример отображения меню(что-то подобное как на картинке)
Спасибо
Vasiliy Pushkaryov
6423
Vasiliy Pushkaryov  

По этой ссылке внизу есть пример с выпадающим списком на панели. По аналогии можно прицепить кнопки, надписи и пр элементы  из этого класса.

Sergey Zhilinskiy
10610
Sergey Zhilinskiy  

Событие (клик по объекту) обрабатывать нужно так:

//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   if (id==CHARTEVENT_OBJECT_CLICK){
      if (sparam=="BOX"){
        if(GetState("BOX")){
           //ваши действия по клику на "BOX"
                          
        }
      }
   }
}
ares96
126
ares96  
Sergey Zhilinskiy:

Событие (клик по объекту) обрабатывать нужно так:

Спасибо

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий