Вопросы про графические элементы

 

OFF: Регулярно возникают вопросы про графические элементы в стандартной библиотеке. От разработчиков, как правило, разъяснений не бывает, но всё равно буду сюда складывать - вдруг кто уже нашёл как обойти очередную засаду

---

Как очистить список элементов в группе чекбоксов (класс CCheckGroup)? Или его (список) вообще никак не изменить? Единственный доступный метод для работы с элементами - AddItem. И это всё, ни удалить ненужный, ни зачистить весь список скопом невозможно?

 
Alexander Puzanov:

OFF: Регулярно возникают вопросы про графические элементы в стандартной библиотеке. От разработчиков, как правило, разъяснений не бывает, но всё равно буду сюда складывать - вдруг кто уже нашёл как обойти очередную засаду

---

Как очистить список элементов в группе чекбоксов (класс CCheckGroup)? Или его (список) вообще никак не изменить? Единственный доступный метод для работы с элементами - AddItem. И это всё, ни удалить ненужный, ни зачистить весь список скопом невозможно?

 

Был вопрос: Не могу вызвать метод  CCheckGroup::RowState - получаю ошибку. То есть я хотел вручную изменять состояние чекбоксов. Ответ сервисдеска ниже:

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

То есть я хотел вручную изменять состояние чекбоксов

Вроде с этим у меня всё нормально - есть метод Check кого-то из родителей. С одним параметром (id элемента) возвращает статус (0/1), с двумя параметрами (int/int) - статус устанавливает. Образец из живого кода:

go_TF_CheckGroups[i_TFs].Check(i_Item, oa_Objects[i_Item].ba_Visibility_Flags[i_TFs]);
 
Как из основной программы узнать что окно CAppDialog стандартной библиотеки свёрнуто или развёрнуто? И как отловить событие сворачивания/разворачивания?
 
Alexander Puzanov:
Как из основной программы узнать что окно CAppDialog стандартной библиотеки свёрнуто или развёрнуто? И как отловить событие сворачивания/разворачивания?

Никак.

Сделайте свой класс-наследник CAppDialog и добавьте метод для получения состояния свернутости (m_minimized).

С событиями так же - перегрузите OnClickButtonMinMax.

 
Andrey Khatimlianskii:

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

Да я и делаю, там всё увешано моими костылями. Но это жеж самый базовый функционал, неужели аффтары и их не предусмотрели? Вообще непонятна цель включения этой библиотеки в дистрибутив, если пользоваться ей в натуральном виде нельзя, а авторы забили на доводку. Поместили бы в кодобазу как демо, готовый продукт 'as is' а не 'инструмент разработчика'
 
Alexander Puzanov:
Да я и делаю, там всё увешано моими костылями. Но это жеж самый базовый функционал, неужели аффтары и их не предусмотрели? Вообще непонятна цель включения этой библиотеки в дистрибутив, если пользоваться ей в натуральном виде нельзя, а авторы забили на доводку. Поместили бы в кодобазу как демо, готовый продукт 'as is' а не 'инструмент разработчика'

Пишите предложения по доработкам в сервис-деск, библиотеку понемногу дорабатывают.

По крайней мере, несколько моих просьб/замечаний заметили.

 

Как избавиться от этих предупреждений в логе терминала?

Файлы:
Test.mq4  1 kb
 

Удаляйте мусор. 

https://www.mql5.com/ru/docs/basis/operators/newoperator 

Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
Основы языка / Операторы / Оператор создания объекта new - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Andrey Khatimlianskii:

Удаляйте мусор.

Скрипт должен оставить линию на графике - поясните плз кто тут мусор

 
Alexander Puzanov:

Скрипт должен оставить линию на графике - поясните плз кто тут мусор

Описатель объекта, полученный в результате вызова оператора new.

Почитайте информацию по приведенной ссылке:

Следует отметить, что описатель объекта не является указателем на память.

Объект, созданный с помощью оператора new, должен быть явно уничтожен оператором delete.

 

Чтобы не создавать указатель на объект, объявите его так:

CChartObjectTrend o_MIT;