Добрый день, на
ФОРУМЕ создал ветку, в рамках заказа прошу сделать так чтобы при изменении размера окна терминала ОБЪЕКТ не менял положение, а был зафиксирован на определенном расстоянии от правого края. Спасибо.
int Width = 0;
int Height = 0;
int Count = 0; // Для счетчика нажатий
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
Width=(ushort)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS); // получаем Ширину окна
Height=(ushort)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS); // получаем Высоту окна;
ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);
ObjectCreate(0,"sell",OBJ_BUTTON,0,0,0);
//--- установим координаты объекта
ObjectSetInteger(0,"sell",OBJPROP_XDISTANCE,Width-200); // Динамичное расположение. Зависит от ширины окна
ObjectSetInteger(0,"sell",OBJPROP_YDISTANCE,Height-200); // Динамичное расположение. Зависит от высоты окна
ObjectSetInteger(0,"sell",OBJPROP_CORNER,CORNER_LEFT_UPPER);
//--- установим размеры объекта
ObjectSetInteger(0,"sell",OBJPROP_XSIZE,50); // Заранее знаю размер объекта
ObjectSetInteger(0,"sell",OBJPROP_YSIZE,50); //
//--- установим текст
ObjectSetString(0,"sell",OBJPROP_TEXT,"SELL");
//--- установим начлаьное положение кнопки
ObjectSetInteger(0,"sell",OBJPROP_STATE,false);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
Width=(ushort)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS); // еще раз получаем Ширину окна. Вдруг его изменили. Поэтому также стоит перерисовать объект
Height=(ushort)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS); // еще раз получаем Высоту окна. Вдруг его изменили. Поэтому также стоит перерисовать объект
// В этом коде я не перерисовываю объект. А вам нужно. Изменяя размер окна - меняется зона для отслеживания клика
if(id==CHARTEVENT_MOUSE_MOVE && sparam == 1 && lparam >= Width-200 && lparam < Width-200+50 // Узнаю, что клик мыши был как раз в зоне расположение
&& dparam > Height-200 && dparam < Height-200+50) // моего объекта с учетом размера графика и размера объекта
{
Count++;
Print(Count," ","Нажата кнопка"); // Принтую в журнал, считаю клики
}
}
Комментарии (3)
35 AM2 Сообщений: 16256 - Андрей
35 AM2 Сообщений: 16256 - Андрей
9 lafler356 Автор Сообщений: 305
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий