OnTick и объекты на панели. Как получить доступ к элементам?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Sergey Perechesov
331
Sergey Perechesov  
с MQL4 взял стандартный код панели с элементами управления, переписал под себя. Проблема заключается в том, что к элементам панели нет доступа из функции onTick. Как решить эту проблема, например, получить текст из текстового поля панели?
class CControlsDialog : public CAppDialog 
{ 
   private: 

      CEdit             m_edit_tp1_price;
}

void OnTick()
{
    string tp1=m_edit_tp1_price.Text();
}

Данный код выкидывает ошибку, что m_edit_tp1_price не определена.

Konstantin Nikitin
9290
Konstantin Nikitin  
Sergey:
с MQL4 взял стандартный код панели с элементами управления, переписал под себя. Проблема заключается в том, что к элементам панели нет доступа из функции onTick. Как решить эту проблема, например, получить текст из текстового поля панели?

Данный код выкидывает ошибку, что m_edit_tp1_price не определена.

Смотрим "Структуры, классы и интерфейсы".

У вас class есть, но он не доступен, и достучаться вы пытаетесь до приватной переменной.

class CControlsDialog : public CAppDialog 
{ 
   public:
      CControlsDialog(){};
      ~CControlsDialog(){};

      CEdit m_edit_tp1_price;
};
CControlsDialog ControlsDialog;

void OnTick()
{
    string tp1=ControlsDialog.m_edit_tp1_price.Text();
}
Ihor Herasko
21883
Ihor Herasko  
Sergey:
с MQL4 взял стандартный код панели с элементами управления, переписал под себя. Проблема заключается в том, что к элементам панели нет доступа из функции onTick. Как решить эту проблема, например, получить текст из текстового поля панели?

Данный код выкидывает ошибку, что m_edit_tp1_price не определена.

Самый простой, но не совсем правильный, способ: сделать m_edit_tp1_price публичным. Сейчас он объявлен в секции privat, что дает к нему доступ только из самого экземпляра класса. А требуется секция public.

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

Sergey Perechesov
331
Sergey Perechesov  
Konstantin Nikitin:

Смотрим "Структуры, классы и интерфейсы".

У вас class есть, но он не доступен, и достучаться вы пытаетесь до приватной переменной.

ругается 'ControlsDialog' - undeclared identifier


Konstantin Erin
2161
Konstantin Erin  
Sergey:
с MQL4 взял стандартный код панели с элементами управления, переписал под себя. Проблема заключается в том, что к элементам панели нет доступа из функции onTick. Как решить эту проблема, например, получить текст из текстового поля панели?

Данный код выкидывает ошибку, что m_edit_tp1_price не определена.

попробуйте убрать слово private:  - так как это защита, означает доступность к переменной только внутри класса
Ihor Herasko
21883
Ihor Herasko  
Sergey:

ругается 'ControlsDialog' - undeclared identifier


Все там нормально. Проверьте еще раз. Вставил этот код, компилируется:

#property strict
#include <Controls\Dialog.mqh>


class CControlsDialog : public CAppDialog 
{ 
   public:
      CControlsDialog(){};
      ~CControlsDialog(){};

      CEdit m_edit_tp1_price;
};
CControlsDialog ControlsDialog;

void OnTick()
{
    string tp1=ControlsDialog.m_edit_tp1_price.Text();
}
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий