Обсуждение статьи "Графические интерфейсы VIII: Элемент "Файловый навигатор" (Глава 3)" - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Анатолий, это на мой взгляд лучшая реализация gui-библиотеки в mql, которую я видел здесь.
Сейчас смотрю, как "прикрутить" ее к своему советнику. Хватает всего кроме двух вещей:
1) нет таблицы с элементами управления внутри отдельных ячеек (чекбоксы, кнопки, ...)
2) никак не могу "догнать" как сделать окно с динамическим контентом.
По 1)-му в принципе понятно, что надо сделать новый класс, как расширение CTable. А вот со 2)-м засада. Допустим в разные моменты времени работы советника открывается диалоговое окно, в котором в зависимости от конкретных текущих условий может быть разное число чекбоксов. Если при следующем открытии окна число чекбоксов увеличивается, то как это делается ясно. А вот если число чекбоксов уменьшится - как это сделать? Если я правильно понимаю, то надо "убить" часть контролов, "подписанных" за данным окном, но в CWndContainer нет методов для уничтожения элементов, только методы добавления. Подскажите как сделать, если это возможно в данной версии библиотеки?
Анатолий, это на мой взгляд лучшая реализация gui-библиотеки в mql, которую я видел здесь.
Сейчас смотрю, как "прикрутить" ее к своему советнику. Хватает всего кроме двух вещей:
1) нет таблицы с элементами управления внутри отдельных ячеек (чекбоксы, кнопки, ...)
2) никак не могу "догнать" как сделать окно с динамическим контентом.
По 1)-му в принципе понятно, что надо сделать новый класс, как расширение CTable. А вот со 2)-м засада. Допустим в разные моменты времени работы советника открывается диалоговое окно, в котором в зависимости от конкретных текущих условий может быть разное число чекбоксов. Если при следующем открытии окна число чекбоксов увеличивается, то как это делается ясно. А вот если число чекбоксов уменьшится - как это сделать? Если я правильно понимаю, то надо "убить" часть контролов, "подписанных" за данным окном, но в CWndContainer нет методов для уничтожения элементов, только методы добавления. Подскажите как сделать, если это возможно в данной версии библиотеки?
Спасибо за интересные предложения.
Да, сейчас таких готовых решений в этой версии нет. Необходимость таких возможностей вижу, поэтому добавил в план на реализацию.
По второму пункту. Если нужен динамический список чек-боксов, то более простой способ создать ещё один класс элемента типа CCheckboxList с методами добавления и удаления элементов массива (списка) уже после создания элемента. Кстати, в планах также есть добавить такую возможность во все типы списков и таблиц.
По второму пункту. Если нужен динамический список чек-боксов, то более простой способ создать ещё один класс элемента типа CCheckboxList с методами добавления и удаления элементов массива (списка) уже после создания элемента. Кстати, в планах также есть добавить такую возможность во все типы списков и таблиц.
Можно сделать несколько вкладок с разными наборами чек-боксов и отображать нужную?
Если наборы изначально предопределены, то подойдёт такой вариант.
Создавать вкладки уже есть возможность: Графические интерфейсы VII: Элементы "Вкладки" (Глава 2) >>>
Если наборы изначально предопределены, то подойдёт такой вариант.
Создавать вкладки уже есть возможность: Графические интерфейсы VII: Элементы "Вкладки" (Глава 2) >>>
Это была подсказка вопрошающему )
Ну, и маленький вопрос — реализована ли возможность активировать вкладку программно.
...
Ну, и маленький вопрос — реализована ли возможность активировать вкладку программно.
В пользовательском классе при создании интерфейса до создания элемента:
//---
Этого достаточно? Или нужна возможность уже после создания элемента в процессе работы программно переключать вкладки?
Желательно добавить такую возможность...
что-то типа:
Сделаю, чтобы уже после создания можно было активировать вкладку указав её индекс.
Действительно, есть случаи, где это может понадобиться. Придумал пару идей, где активация той или иной вкладки могла бы быть автоматической. )
Как подогнать размеры навигатора под размеры окна, в котором навигатор выводится?
Например: размер окна 450. Как вписать навигатор в окно, чтобы справа и слева были отступы по 2 пикселя?
Как подогнать размеры навигатора под размеры окна, в котором навигатор выводится?
Например: размер окна 450. Как вписать навигатор в окно, чтобы справа и слева были отступы по 2 пикселя?
Нужно воспользоваться методами CFileNavigator::TreeViewAreaWidth() и CFileNavigator::ContentAreaWidth() указав ширину для области древовидного списка и области содержания. Если не устанавливать ширину области содержания, то правый край навигатора будет автоматически выравнен по правому краю окна.