Сегодня начал использовать эту библиотеку, сборка от 2019.03.13 16:43 (думаю, что сборка 16). Так вот, я использую ее для создания таблиц, работает почти идеально, в качестве ссылки я использовал статьи:
https://www.mql5.com/ru/articles/2500#para6
https://www.mql5.com/ru/articles/2897#para7
Для меня важно иметь возможность сортировки, поэтому я использую библиотеку в соответствии с инструкциями в статье "X". Если я использую эту сборку (сборка 6), то таблица работает очень хорошо, но если я использую последнюю сборку (сборка 16), то таблица не сортирует элементы, когда я нажимаю на ячейки заголовка.
Исследуя основные различия, я получил следующее в файле Table.mqh.
Это в сборке 6:
void CTable::SortData(constuint column_index=0)
{
...
//--- Храните индекс последнего отсортированного столбца данных
m_is_sorted_column_index=(int)column_index;
//--- Сортировка
QuickSort(first_index,last_index,column_index,m_last_sort_direction);
//--- Обновите таблицу
UpdateTable();
//--- Установите значок в соответствии с направлением сортировки
m_sort_arrow.State((m_last_sort_direction==SORT_ASCEND)? true : false);
}
Это в сборке 16:
void CTable::SortData(constuint column_index=0,constint direction=WRONG_VALUE)
{
...
//--- Запомним индекс последнего отсортированного столбца данных
m_is_sorted_column_index=(int)column_index;
//--- Сортировка
QuickSort(first_index,last_index,column_index,m_last_sort_direction);
}
В новой сборке нет метода "Update", поэтому я думаю, что это и есть причина отсутствия сортировки.
Таким образом, я сделал это изменение, и оно, по-видимому, сработало:
void CTable::SortData(constuint column_index=0,constint direction=WRONG_VALUE)
{
...
//--- Запомним индекс последнего отсортированного столбца данных
m_is_sorted_column_index=(int)column_index;
//--- Сортировка
QuickSort(first_index,last_index,column_index,m_last_sort_direction);
//--- Обновите таблицу
Update(true);
}
The first article Graphical Interfaces I: Preparation of the Library Structure (Chapter 1) explains in detail what this library is for. You will find a list of articles with links at the end of each chapter. There, you can also download a complete version of the library at the current stage of development. The files must be placed in the same...
Если пример ExampleEAF из библиотеки собрать как индикатор в MT4, то при попытке перетащить окно на графике индикатор падает с ошибкой
В MT5 работает нормально
array out of range in 'WndEvents.mqh' (288,72)
Если добавить проверку выхода за диапазон в первом цикле тогда перетаскивание работает
void CWndEvents::CheckElementsEvents(void)
{
//--- Обработка события перемещения курсора мышиif(m_id==CHARTEVENT_MOUSE_MOVE)
{
//--- Выйти, если форма находится в другом подокне графикаif(!m_windows[m_active_window_index].CheckSubwindowNumber())
return;
//--- Проверяем только доступные элементыint available_elements_total=CWndContainer::AvailableElementsTotal(m_active_window_index);
for(int e=0; e<available_elements_total; e++)
{
// !!! Дополнительная проверкаif (e >= ArraySize(m_wnd[m_active_window_index].m_available_elements)) continue;
CElement *el=m_wnd[m_active_window_index].m_available_elements[e];
//--- Проверка фокуса над элементами
el.CheckMouseFocus();
//--- Обработка события
el.OnEvent(m_id,m_lparam,m_dparam,m_sparam);
}
}
//--- Все события, кроме перемещения курсора мышиelse
{
int elements_total=CWndContainer::ElementsTotal(m_active_window_index);
for(int e=0; e<elements_total; e++)
{
//--- Проверяем только доступные элементы
CElement *el=m_wnd[m_active_window_index].m_elements[e];
if(!el.IsVisible() || !el.IsAvailable() || el.IsLocked())
continue;
//--- Обработка события в обработчике элемента
el.OnEvent(m_id,m_lparam,m_dparam,m_sparam);
}
}
//--- Направление события в файл приложения
OnEvent(m_id,m_lparam,m_dparam,m_sparam);
}
но перестает работать "расширение" окна на всю площадь графика и возврат обратно
Подскажите как пофиксить эту проблему чтобы и в МТ4 тоже нормально работало
В чем отличие? Никаких варнингов при компиляции в МТ4 нет, не знаю в какую сторону копать
Еще в MT4 при компиляции в виде индикатора не работает переключение фокуса в том плане, что если открыть выпадающий список и кликнуть где-то в стороне, то список не закрывается и не переходит фокус ввода к другому элементу, в режиме эксперта работает нормально
Подскажите, пожалуйста, как, используя эту библиотеку, изменить шрифт по умолчанию программы (эксперта)? Это которым печатается всё, начиная с заголовка в шапке программы. Хотя бы размер изменить (увеличить).
Сегодня начал использовать эту библиотеку, сборка от 2019.03.13 16:43 (думаю, что сборка 16). Так вот, я использую ее для создания таблиц, работает почти идеально, в качестве ссылки я использовал статьи:
https://www.mql5.com/ru/articles/2500#para6
https://www.mql5.com/ru/articles/2897#para7
Для меня важно иметь возможность сортировки, поэтому я использую библиотеку в соответствии с инструкциями в статье "X". Если я использую эту сборку (сборка 6), то таблица работает очень хорошо, но если я использую последнюю сборку (сборка 16), то таблица не сортирует элементы, когда я нажимаю на ячейки заголовка.
Исследуя основные различия, я получил следующее в файле Table.mqh.
Это в сборке 6:
Это в сборке 16:
В новой сборке нет метода "Update", поэтому я думаю, что это и есть причина отсутствия сортировки.
Таким образом, я сделал это изменение, и оно, по-видимому, сработало:
PS.: комментарии на русском не слишком помогают.
Где находится класс Label в библиотеке? Как создать один Label?
Скажи Густаво! Красота?
Я тут тоже ломал голову, как сделать так, чтобы сортировка графиков работала, и случайно догадался...
Необходимо, чтобы таблица обновлялась в событии ON_SORT_DATA вашего "program.mqh", что-то вроде:
Надеюсь, это поможет!
Здесь все работает идеально!!!
T +
Рауль
Это англоязычный форум. Пожалуйста, публикуйте сообщения только на английском языке.
При необходимости используйте инструмент перевода сайта.
При размещении кода используйте кнопку "Код" (Alt +S).
На этот раз я отредактировал ваше сообщение.
Если пример ExampleEAF из библиотеки собрать как индикатор в MT4, то при попытке перетащить окно на графике индикатор падает с ошибкой
В MT5 работает нормально
Если добавить проверку выхода за диапазон в первом цикле тогда перетаскивание работает
но перестает работать "расширение" окна на всю площадь графика и возврат обратно
Подскажите как пофиксить эту проблему чтобы и в МТ4 тоже нормально работало
В чем отличие? Никаких варнингов при компиляции в МТ4 нет, не знаю в какую сторону копать
Еще в MT4 при компиляции в виде индикатора не работает переключение фокуса в том плане, что если открыть выпадающий список и кликнуть где-то в стороне, то список не закрывается и не переходит фокус ввода к другому элементу, в режиме эксперта работает нормально
В МТ5 и эксперт и индикатор нормально работают
Еще один интересный глюк с таблицами.
После нескольких вводов символы начинают двоиться а потом и троиться (см gif)
В чем может быть проблема?
CreateTextEdit, похоже, не поддерживает китайский ввод?
CreateTextEdit, похоже, не поддерживает китайский ввод?
Здравствуйте
Где я могу скачать MT4 версию этой библиотеки?