Обсуждение статьи "Графические интерфейсы X: Элемент "Время", элемент "Список из чекбоксов" и сортировка таблицы (build 6)" - страница 3
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я имею в виду на сайте в статье - может там старый прибился к обновлениям. Я ж беру файл из последнего обновления, загруженного с сайта снизу статьи из зипа.
Вот, внёс правки как выше написал:
Отлично. А то может у тебя там чего прибилось, как это неоднократно бывало. ) Но если что, буду иметь в виду.
Вот прям вынуждаешь ерундой заниматься.
Мелко, но видно.
А мог бы сам просто загрузить, да заглянуть внутрь - просто же, тем более тебе об этом сказали.
Вот прям вынуждаешь ерундой заниматься.
Мелко, но видно.
А мог бы сам просто загрузить, да заглянуть внутрь - просто же, тем более тебе об этом сказали.
Да я и не просил тебя никаких доказательств. Написал же, если что, буду иметь в виду. Но у себя пока не воспроизвёл. Взял на заметку.
Если обнаружится проблема, то твоё предложение-исправление может не для всех случаев подойти. Для твоего случая подошло, но там все режимы тестировать надо. Я сам этим займусь, если обнаружу проблему.
Действительно, не занимайся ерундой. )
Да я и не просил тебя никаких доказательств. Написал же, если что, буду иметь в виду. Но у себя пока не воспроизвёл. Взял на заметку.
Если обнаружится проблема, то твоё предложение-исправление может не для всех случаев подойти. Для твоего случая подошло, но там все режимы тестировать надо. Я сам этим займусь, если обнаружу проблему.
Действительно, не занимайся ерундой. )
Хорошо, не буду ;)
Толь, вопрос: таблицы сортируются по столбцам - всё нормально. Но ..., если в таблице есть пустые строки, и их много, то сортировка включает эти пустые строки тоже. Получается, что, допустим, есть таблица с тысячей строк (1001 - нулевая для заголовка) - по максимальному количеству символов в обзоре рынка. Но на данный момент в обзоре рынка есть всего 10 символов. Они все есть в таблице в первых десяти её строках - с первой по десятую. Остальные строки пустые (таблицы же не динамические, а символы могут добавляться/удаляться в/из таблицы). Если попробовать отсортировать такую таблицу, то сортированный список уходит в самый конец таблицы - в строки 990 - 1000 (нулевая - заголовок), а наверху видны пустые строки. Это не есть хорошо и, как мне кажется, упущение.
... таблицы же не динамические, а символы могут добавляться/удаляться в/из таблицы...
Скоро будут динамические. Как раз занимаюсь сейчас этим.
... А проблема с включением в сортированный список совершенно пустых строк? Как с ней?
Пока останется, как есть. К сортировке не буду возвращаться в ближайшее время.
...
То же самое с разделительной линией в контекстном меню в ContextMenu.mqh - разделительная полоса между пунктами меню встаёт не на свои координаты.
В методе:
//| Создаёт разделительную линию |
//+------------------------------------------------------------------+
bool CContextMenu::CreateSeparateLine(const int line_number,const int x,const int y)
{
//--- Сохраним указатель формы
m_sep_line[line_number].WindowPointer(m_wnd);
//--- Установим свойства
m_sep_line[line_number].TypeSepLine(H_SEP_LINE);
m_sep_line[line_number].DarkColor(m_sepline_dark_color);
m_sep_line[line_number].LightColor(m_sepline_light_color);
m_sep_line[line_number].AnchorRightWindowSide(m_anchor_right_window_side);
m_sep_line[line_number].AnchorBottomWindowSide(m_anchor_bottom_window_side);
//--- Создание разделительной линии
if(!m_sep_line[line_number].CreateSeparateLine(m_chart_id,m_subwin,line_number,x,y,m_x_size-10,2))
return(false);
//--- Сохраним указатель объекта
CElement::AddToArray(m_sep_line[line_number].Object(0));
return(true);
}
//+------------------------------------------------------------------+
заменил выделенное на
//| Создаёт разделительную линию |
//+------------------------------------------------------------------+
bool CContextMenu::CreateSeparateLine(const int line_number,const int x,const int y)
{
//--- Сохраним указатель формы
m_sep_line[line_number].WindowPointer(m_wnd);
//--- Установим свойства
m_sep_line[line_number].TypeSepLine(H_SEP_LINE);
m_sep_line[line_number].DarkColor(m_sepline_dark_color);
m_sep_line[line_number].LightColor(m_sepline_light_color);
m_sep_line[line_number].AnchorRightWindowSide(m_anchor_right_window_side);
m_sep_line[line_number].AnchorBottomWindowSide(m_anchor_bottom_window_side);
//--- Создание разделительной линии
if(!m_sep_line[line_number].CreateSeparateLine(m_chart_id,m_subwin,line_number,x-m_wnd.X(),y-m_wnd.Y(),m_x_size-10,2))
return(false);
//--- Сохраним указатель объекта
CElement::AddToArray(m_sep_line[line_number].Object(0));
return(true);
}
//+------------------------------------------------------------------+
и разделительная полоса встала на место.
То же самое с разделительной линией в контекстном меню в ContextMenu.mqh - разделительная полоса между пунктами меню встаёт не на свои координаты.
Воспроизвёл все подобные случаи. Это касается всех элементов, которые используются, как составные части в других элементах. Обнаруживается, когда начальные абсолютные координаты формы, при создании графического интерфейса, больше (1,1).
Исправление будет в следующем билде. В качестве временного быстрого решения подойдут или (1) твои примеры или (2) просто изначально устанавливать форму в координатах (1,1). Лучше второе, так как может посыпаться в других режимах позиционирования элементов.