Пульт управления - страница 5

 
Eugene1:
Точно

В таком случае нужно вызывать метод CCheckGroup::RowState

RowState

Изменяет состояние элемента группы.

bool  RowState(
   const int   index,      // индекс
   const bool  select      // состояние
   )

Параметры

index

[in]  Индекс элемента, состояние которого изменяется.

select

[in]  Новое состояние элемента.

Возвращаемое значение

true - в случае удачи, иначе - false.


 

Но здесь неувязочка - в файле  CheckGroup.mqh метод RowState объявлен как protected:

protected:
   //--- create dependent controls
   bool              CreateButton(int index);
   //--- handlers of the dependent controls events
   virtual bool      OnVScrollShow(void);
   virtual bool      OnVScrollHide(void);
   virtual bool      OnScrollLineDown(void);
   virtual bool      OnScrollLineUp(void);
   virtual bool      OnChangeItem(const int index);
   //--- redraw
   bool              Redraw(void);
   bool              RowState(const int index,const bool select);
  };
 
Karputov Vladimir:

В таком случае нужно вызывать метод CCheckGroup::RowState

Но здесь неувязочка - в файле  CheckGroup.mqh метод RowState объявлен как protected:

Спасибо!

Так что в этом случае правильно сделать?

Переопределить его как public

или лучше сделать новый класс наследующий этот и сделать public обёрки-функции, вызывающие метод, который переопределить как private?

...Большой класс, и я не могу взять в толк, как с ним грамотно работать.

Хорошо бы услышать какие-то комментарии по работе с ним...

 
Eugene1:

Спасибо!

Так что в этом случае правильно сделать?

Переопределить его как public

или лучше сделать новый класс наследующий этот и сделать public обёрки-функции, вызывающие метод, который переопределить как private?

...Большой класс, и я не могу взять в толк, как с ним грамотно работать.

Хорошо бы услышать какие-то комментарии по работе с ним...

Править код стандартной библиотеки - это очень плохо. 
А по методу CCheckGroup::RowState я создал заявку в Сервисдеск. Подождём ответа.
 
Karputov Vladimir:
Править код стандартной библиотеки - это очень плохо. 
А по методу CCheckGroup::RowState я создал заявку в Сервисдеск. Подождём ответа.

Спасибо!

Действительно, если объявлять нужные для работы функции приватными - это вводит в заблуждение, и в итоге, вообще теряешься - как подразумевалось пользоваться этим классом?!

 
Karputov Vladimir:
Править код стандартной библиотеки - это очень плохо. 
А по методу CCheckGroup::RowState я создал заявку в Сервисдеск. Подождём ответа.

Получен ответ из Сервисдеска:

Support Team 2015.08.24 16:35
В данный момент класс спроектирован таким образом, что изменить состояние кнопок можно только по приходу события (нажатия кнопки пользователем на чек-боксе). И выходом является отправка нужного события в элемент диалога.

 

 Остаётся решить, каким образом программно нажать любой элемент из комбинированного элемента управления "Переключатель с независимой фиксацией":

Комбинированный элемент управления "Переключатель с независимой фиксацией" 

Причина обращения: