Помогите с OnChartEvent()

 

Вчера написал панельку передвижную, все работало, а сегодня утром решил похвастаться так сказать а она уже не движется... Методом тыка выяснил что не работает сам обработчик событий:

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   if(id==CHARTEVENT_MOUSE_MOVE)
   {
      Comment(sparam);
      if(StrToInteger(sparam)==1)
      {
         if(ObjectFind(0,"panel")==0)
         {
            if(repeat==0)
            {
               DeltaX=int(lparam-ObjectGet("panel",OBJPROP_XDISTANCE));
               DeltaY=int(dparam-ObjectGet("panel",OBJPROP_YDISTANCE));
               repeat=1;
            }
            if(DeltaX>0&&DeltaX<400&&DeltaY>0&&DeltaY<50)
            {
               ChartSetInteger(0,CHART_MOUSE_SCROLL,false);
               NewX=int(lparam-DeltaX);
               NewY=int(dparam-DeltaY);
               if(NewX<1)NewX=1;
               if(NewY<1)NewY=1;
               if(NewX>ChartGetInteger(0,CHART_WIDTH_IN_PIXELS)-400)NewX=(int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS)-400;
               if(NewY>ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS)-532)NewY=(int)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS)-532;
               ObjectSet("panel",OBJPROP_XDISTANCE,NewX);
               ObjectSet("panel",OBJPROP_YDISTANCE,NewY);
               ObjectSet("close",OBJPROP_XDISTANCE,NewX+375);
               ObjectSet("close",OBJPROP_YDISTANCE,NewY+10);
               ObjectSet("rollup",OBJPROP_XDISTANCE,NewX+355);
               ObjectSet("rollup",OBJPROP_YDISTANCE,NewY+10);
               ObjectSet("button0",OBJPROP_XDISTANCE,NewX+25);
               ObjectSet("button0",OBJPROP_YDISTANCE,NewY+492);
            }
            else ChartSetInteger(0,CHART_MOUSE_SCROLL,true);
         }
      }
   }
}

Вне зависимости что там написано дальше как минимум коммент должен выводиться (0 или 1), но этого не происходит! В чем может быть проблема?

Причем если id==CHARTEVENT_OBJECT_CLICK то в этом случае OnChartEvent() отрабатывает правильно...

 

все работает

int OnInit()
{
   ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, 1);
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // идентификатор события
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam) // параметр события типа string
{
   Comment(TimeToString(TimeLocal(), TIME_DATE | TIME_MINUTES | TIME_SECONDS), "\n",
           "id = ", id, "\n",
           "lparam = ", lparam, "\n",
           "dparam = ", dparam, "\n",
           "StringLen(sparam) = ", StringLen(sparam), "\n",
           "sparam = ", sparam);
}

ЗЫ: думаю лучше не хвастаться этой панелью, а попробовать прочитать статью как с помощью СБ в течении получаса написать свою торговую панель, кажется эти статьи от модератора Владимира были

 
Igor Makanu:

все работает

ЗЫ: думаю лучше не хвастаться этой панелью, а попробовать прочитать статью как с помощью СБ в течении получаса написать свою торговую панель, кажется эти статьи от модератора Владимира были

Слово хвастаться я должен был взять в кавычки:) Хорошо что у Вас работает, но какая может быть причина того что у меня не работает? Есть мысли?

За статью, к стати, спасибо, обязательно прочту...

 

Разобрался, не хватало в ините ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, 1);

Но я все равно не понимаю... а почему вчера без этого работало?

 
Игорь, можете сказать что нибудь по этому поводу?
 
Maksim Neimerik:
Игорь, можете сказать что нибудь по этому поводу?
Я не Игорь но попробую предположить что вчера был чарт с уже включенным ChartSetInteger(0CHART_EVENT_MOUSE_MOVE1)
Причина обращения: