Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2595

 
Tretyakov Rostyslav #:

Вы можете для любого объекта создать параметр состояния.

Спасиб. Осталось найти как сделать чтоб OnChartEvent работал в тестере робота mt5. Я по этому и писал про кнопки, тк там OnChartEvent не работает а с них можно "вручную" через Get считывать состояние. В самом вопросе кнопки уже реализованы по предложенной тобой схеме.

 
Andrei Sokolov #:

Спасиб. Осталось найти как сделать чтоб OnChartEvent работал в тестере робота mt5. Я по этому и писал про кнопки, тк там OnChartEvent не работает а с них можно "вручную" через Get считывать состояние. В самом вопросе кнопки уже реализованы по предложенной тобой схеме.

В теории, для скругленных кнопок, можно схлопнуть OBJ_RECTANGLE_LABEL, чтоб он скруглился, сверху залепить кнопку, чтоб не вылезала за скругления, а где скругления - понапихать мелких кнопок. 

Или вообще сразу рисовать из мелких кнопок.

Кринж, конечно, но работать будет)) Для варианта когда платят и как хочешь но сделай - тоже подойдет, если без вариантов))

 
Andrei Sokolov #:

В теории, для скругленных кнопок, можно схлопнуть OBJ_RECTANGLE_LABEL, чтоб он скруглился, сверху залепить кнопку, чтоб не вылезала за скругления, а где скругления - понапихать мелких кнопок. 

Или вообще сразу рисовать из мелких кнопок.

Кринж, конечно, но работать будет)) Для варианта когда платят и как хочешь но сделай - тоже подойдет, если без вариантов))

Ну, что то слишком. Повесь сверху над кнопкой картинку сделанную на канвасе, там можно хоть какие закругления лепить, а чтоб кнопка срабатывала под этой картинкой , сделать ей приоритет OBJPROP_ZORDER на нажатие больше чем у OBJ_BITMAP_LABEL.

ну и чтоб канвас был всегда сверху после каждого тыка на кнопку выводить канвас на передний план OBJPROP_HIDDEN.

Надеюсь понятно изложил.

 
Aleksandr Slavskii #:
выводить канвас на передний план OBJPROP_HIDDEN

Не так. Скрыть и сразу отобразить.

Например:

//+------------------------------------------------------------------+
//| Скрывает объект на всех периодах графика                         |
//+------------------------------------------------------------------+
void CCanvasBase::Hide(const bool chart_redraw)
  {
   if(this.m_hidden)
      return;
   if(::ObjectSetInteger(this.m_chart_id,this.ObjectName(),OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS))
      this.m_hidden=true;
   if(chart_redraw)
      ::ChartRedraw(this.m_chart_id);
  }
//+------------------------------------------------------------------+
//| Отображает объект на всех периодах графика                       |
//+------------------------------------------------------------------+
void CCanvasBase::Show(const bool chart_redraw)
  {
   if(!this.m_hidden)
      return;
   if(::ObjectSetInteger(this.m_chart_id,this.ObjectName(),OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS))
      this.m_hidden=false;
   if(chart_redraw)
      ::ChartRedraw(this.m_chart_id);
  }
//+------------------------------------------------------------------+
//| Помещает объект на передний план                                 |
//+------------------------------------------------------------------+
void CCanvasBase::BringToTop(const bool chart_redraw)
  {
   this.Hide(false);
   this.Show(chart_redraw);
  }
 
Aleksandr Slavskii #:

Ну, что то слишком. Повесь сверху над кнопкой картинку сделанную на канвасе, там можно хоть какие закругления лепить, а чтоб кнопка срабатывала под этой картинкой , сделать ей приоритет OBJPROP_ZORDER на нажатие больше чем у OBJ_BITMAP_LABEL.

ну и чтоб канвас был всегда сверху после каждого тыка на кнопку выводить канвас на передний план OBJPROP_HIDDEN.

Надеюсь понятно изложил.

А не проще картинку подключить ресурсом? 

Все ли места на картинке, в тч где скругления, приведут к срабатыванию кнопки? 

 
Artyom Trishkin #:

Не так. Скрыть и сразу отобразить.

Например:

Спасиб

 
Andrei Sokolov #:

А не проще картинку подключить ресурсом? 

Все ли места на картинке, в тч где скругления, приведут к срабатыванию кнопки? 

Кнопка прямоугольная. Не важно, какой она в себе несёт рисунок. Будет реагировать на прямоугольную область.

 
Artyom Trishkin #:

Кнопка прямоугольная. Не важно, какой она в себе несёт рисунок. Будет реагировать на прямоугольную область.

Изначально задумка чтоб реагировала по всей площади, в тч там где скругления, а не только в рамках прямоугольника.

 
Andrei Sokolov #:

Изначально задумка чтоб реагировала по всей площади, в тч там где скругления, а не только в рамках прямоугольника.

И как собираетесь скругления вынести за рамки кнопки, в которой картинку ресурсом вставить хотите? Скругления будут внутри прямоугольной области, а не снаружи.

 
Artyom Trishkin #:

И как собираетесь скругления вынести за рамки кнопки, в которой картинку ресурсом вставить хотите? Скругления будут внутри прямоугольной области, а не снаружи.

Да, так норм. Спасиб