//+------------------------------------------------------------------+ //| MBookPanel.mqh | //| Copyright 2015, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, MetaQuotes Software Corp." #property link "http://www.mql5.com" #include "Node.mqh" #include "ElChart.mqh" #include "ObjText.mqh"; //+------------------------------------------------------------------+ //| Состояние кнопки | //+------------------------------------------------------------------+ enum ENUM_BTN_PUSH_STATE { PUSH_OFF, // Кнопка отжата (выключена) PUSH_ON // Кнопка нажата (включена) }; //+------------------------------------------------------------------+ //| Кнопка | //+------------------------------------------------------------------+ class CElButton : public CElChart { public: CElButton(void); ENUM_BTN_PUSH_STATE State(void); bool State(ENUM_BTN_PUSH_STATE state); virtual void OnPushButton(ENUM_BTN_PUSH_STATE state); }; //+------------------------------------------------------------------+ //| По умолчанию, создаваемая кнопка имеет одни и тот же текст как | //| в нажатом, так и в отжатом состоянии. | //+------------------------------------------------------------------+ CElButton::CElButton() : CElChart(OBJ_BUTTON) { BorderType(BORDER_RAISED); BackgroundColor(clrWhiteSmoke); } //+------------------------------------------------------------------+ //| Возвращает PUSH_OFF если кнопка отжата, либо не отображается, | //| возвращает PUSH_ON если кнопка нажата. | //+------------------------------------------------------------------+ ENUM_BTN_PUSH_STATE CElButton::State(void) { if(!IsShowed()) return PUSH_OFF; if(ObjectGetInteger(ChartID(), m_name, OBJPROP_STATE) > 0) return PUSH_ON; return PUSH_OFF; } //+------------------------------------------------------------------+ //| Устанавливает состояние кнопки | //+------------------------------------------------------------------+ bool CElButton::State(ENUM_BTN_PUSH_STATE state) { bool isPush = state == PUSH_ON ? true : false; bool res = false; if(IsShowed()) { if(ObjectSetInteger(ChartID(), m_name, OBJPROP_STATE, isPush)) { OnPushButton(state); return true; } return false; } return false; } //+------------------------------------------------------------------+ //| Событие, наступающее при нажатии кнопки | //+------------------------------------------------------------------+ void CElButton::OnPushButton(ENUM_BTN_PUSH_STATE state) { }