Анатолий, это на мой взгляд лучшая реализация gui-библиотеки в mql, которую я видел здесь.
Сейчас смотрю, как "прикрутить" ее к своему советнику. Хватает всего кроме двух вещей:
1) нет таблицы с элементами управления внутри отдельных ячеек (чекбоксы, кнопки, ...)
2) никак не могу "догнать" как сделать окно с динамическим контентом.
По 1)-му в принципе понятно, что надо сделать новый класс, как расширение CTable. А вот со 2)-м засада. Допустим в разные моменты времени работы советника открывается диалоговое окно, в котором в зависимости от конкретных текущих условий может быть разное число чекбоксов. Если при следующем открытии окна число чекбоксов увеличивается, то как это делается ясно. А вот если число чекбоксов уменьшится - как это сделать? Если я правильно понимаю, то надо "убить" часть контролов, "подписанных" за данным окном, но в CWndContainer нет методов для уничтожения элементов, только методы добавления. Подскажите как сделать, если это возможно в данной версии библиотеки?
Анатолий, это на мой взгляд лучшая реализация gui-библиотеки в mql, которую я видел здесь.
Сейчас смотрю, как "прикрутить" ее к своему советнику. Хватает всего кроме двух вещей:
1) нет таблицы с элементами управления внутри отдельных ячеек (чекбоксы, кнопки, ...)
2) никак не могу "догнать" как сделать окно с динамическим контентом.
По 1)-му в принципе понятно, что надо сделать новый класс, как расширение CTable. А вот со 2)-м засада. Допустим в разные моменты времени работы советника открывается диалоговое окно, в котором в зависимости от конкретных текущих условий может быть разное число чекбоксов. Если при следующем открытии окна число чекбоксов увеличивается, то как это делается ясно. А вот если число чекбоксов уменьшится - как это сделать? Если я правильно понимаю, то надо "убить" часть контролов, "подписанных" за данным окном, но в CWndContainer нет методов для уничтожения элементов, только методы добавления. Подскажите как сделать, если это возможно в данной версии библиотеки?
Спасибо за интересные предложения.
Да, сейчас таких готовых решений в этой версии нет. Необходимость таких возможностей вижу, поэтому добавил в план на реализацию.
По второму пункту. Если нужен динамический список чек-боксов, то более простой способ создать ещё один класс элемента типа CCheckboxList с методами добавления и удаления элементов массива (списка) уже после создания элемента. Кстати, в планах также есть добавить такую возможность во все типы списков и таблиц.
По второму пункту. Если нужен динамический список чек-боксов, то более простой способ создать ещё один класс элемента типа CCheckboxList с методами добавления и удаления элементов массива (списка) уже после создания элемента. Кстати, в планах также есть добавить такую возможность во все типы списков и таблиц.
Можно сделать несколько вкладок с разными наборами чек-боксов и отображать нужную?
Ну, и маленький вопрос — реализована ли возможность активировать вкладку программно.
В пользовательском классе при создании интерфейса до создания элемента:
//+------------------------------------------------------------------+//| Создаёт область с вкладками |//+------------------------------------------------------------------+bool CProgram::CreateTabs(void)
{
#define TABS1_TOTAL 4//--- Передать объект панели
m_tabs.WindowPointer(m_window1);
//--- Координатыint x=m_window1.X()+TABS1_GAP_X;
int y=m_window1.Y()+TABS1_GAP_Y;
//--- Массивы с текстом и шириной для вкладокstring tabs_text[]={"Tab 1","Tab 2","Tab 3","Tab 4"};
int tabs_width[]={90,90,90,90};
//--- Установим свойства перед созданием
m_tabs.XSize(596);
m_tabs.YSize(243);
m_tabs.TabYSize(TabsHeight);
m_tabs.PositionMode(TabsPosition);
m_tabs.SelectedTab((m_tabs.SelectedTab()==WRONG_VALUE) ? 1 : m_tabs.SelectedTab());//--- Добавим вкладки с указанными свойствамиfor(int i=0; i<TABS1_TOTAL; i++)
m_tabs.AddTab(tabs_text[i],tabs_width[i]);
//--- Создадим элемент управленияif(!m_tabs.CreateTabs(m_chart_id,m_subwin,x,y))
return(false);
//--- Добавим объект в общий массив групп объектов
CWndContainer::AddToElementsArray(0,m_tabs);
return(true);
}
//---
Этого достаточно? Или нужна возможность уже после создания элемента в процессе работы программно переключать вкладки?
Как подогнать размеры навигатора под размеры окна, в котором навигатор выводится?
Например: размер окна 450. Как вписать навигатор в окно, чтобы справа и слева были отступы по 2 пикселя?
Нужно воспользоваться методами CFileNavigator::TreeViewAreaWidth() и CFileNavigator::ContentAreaWidth() указав ширину для области древовидного списка и области содержания. Если не устанавливать ширину области содержания, то правый край навигатора будет автоматически выравнен по правому краю окна.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Анатолий, это на мой взгляд лучшая реализация 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() указав ширину для области древовидного списка и области содержания. Если не устанавливать ширину области содержания, то правый край навигатора будет автоматически выравнен по правому краю окна.