Обсуждение статьи "Графические интерфейсы X: Обновления для нарисованной таблицы и оптимизация кода (build 10)"

 

Опубликована статья Графические интерфейсы X: Обновления для нарисованной таблицы и оптимизация кода (build 10):

Продолжаем дополнять нарисованную таблицу (CCanvasTable) новыми возможностями. Теперь в таблице появятся: подсветка строк при наведении курсора мыши; возможность добавлять массив картинок для каждой ячейки и метод для их переключения; возможность задать или изменить текст в ячейках во время выполнения программы и многое другое.

Ниже показан результат проделанной работы:

 Рис. 3. Демонстрация новых возможностей нарисованной таблицы.

Рис. 3. Демонстрация новых возможностей нарисованной таблицы.

Автор: Anatoli Kazharski

 
Интересные добавления к рисованной таблице. Честно говоря, я ожидал от этой статьи несколько иного. Нет, я вовсе не разочарован (скорее наоборот), просто как всегда ошибся в предположениях. 

Я думал, коль скоро Вы перешли на реализацию рисованного интерфейса, Вы изложите его концепцию, сформулируете его идеологию, опишите новую технологию. Думал, Вы начнете с передела ранее созданного функционала...

Однако, на текущий момент этого не происходит. Концепцию рисованного GUI Вы пока не сформулировали и глобальный передел не начали. Возможно, этот глобальный передел будет проходить постепенно, от статьи к статье, а не революционно, как я представлял. Потому и говорю, что ошибся в ожиданиях.

Вы удивительным образом обходите какой либо глобальный передел в библиотеке, что для меня очень странно. 

Этот стиль развития я бы определил так: "Развитие - это постепенное расширение в плоскости, где каждая локальная задача решается своим локальным методом. Универсализация, обобщение и сжатие решений не применяются. Масштабные революционные изменения неблагоприятны. Придерживатся стоит общепринятых стандартов и стилей и не конфликтовать с ними. ".

Мой стиль развития: " Развитие - это постепенная универсализация, которая приводит к тому, что решение новых локальных задач осуществляется не на уровне методов, а на уровне отдельных строк внутри методов. Да и то, не всегда. Новых сущностей возникает гораздо меньше, а старые механизмы все более совершенствуются. Происходит постепенное ускорение решения новых локальных задач. Глобальные переделы трудны и неизбежны, но необходимы." 

В следующих статьях буду ждать от Вас концепции технологии рисованного интерфейса, чтобы сравнить ее со своей. 

  P.S.  Кстати, если интересно, могу ее изложить.

Удачи.
 
К своей концепции развития добавлю: - "Во имя абсолютной эффективности, оправдывается приношение в жертву общепринятых подходов, стандартов и стилей. Их можно игнорировать, ломать и менять, если они стоят на пути свободного творческого развития.".
 
Реter Konow:
...

Возможно, этот глобальный передел будет проходить постепенно, от статьи к статье, а не революционно, как я представлял. 

.‌..


Да. Именно так.
 
@Anatoli Kazharski хотел бы уточнить,а в чем оптимизация кода? Спрашиваю потому, что компиляция с подключенными библиотеками иногда занимает до 20 сек. Или так и должно быть?
 
Alexander Fedosov:
@Anatoli Kazharski хотел бы уточнить,а в чем оптимизация кода? Спрашиваю потому, что компиляция с подключенными библиотеками иногда занимает до 20 сек. Или так и должно быть?


В Вашем случае на время разработки своего MQL-приложения в файле "MetaTrader 5\Config\metaeditor.ini" ставьте параметру Optimize нулевое значение, как показано ниже:

...
[Experts]
Author=Copyright 2015, MetaQuotes Software Corp.
Address=http://www.mql5.com
Optimize=0
...

/‌/---

Тогда всё будет компилироваться быстро: 

0 error(s), 0 warning(s), compile time: 351 msec                1       1

‌//---

А в статье имелось в виду другое. В некоторых случаях увеличение быстродействия, а в некоторых частичная универсализация (упаковка повторяющих фрагментов кода в отдельные методы и их помещение в отдельный класс).

 
  Почему то у меня ни один эксперт из Article 10 не задерживается на графике, а через несколько секунд, показав только форму, самостоятельно удаляется с графика. В журнале пишет "2017.03.06 08:40:45.467 TestLibrary10 (SBER,D1) CWndEvents::CheckExpertSubwindowNumber > Удаление подокна эксперта приводит к удалению эксперта!" и дальше "2017.03.06 08:40:45.467 TestLibrary10 (SBER,D1) ExpertRemove() function called" . В чем причина?


 
Alexander:
  Почему то у меня ни один эксперт из Article 10 не задерживается на графике, а через несколько секунд, показав только форму, самостоятельно удаляется с графика. В журнале пишет "2017.03.06 08:40:45.467 TestLibrary10 (SBER,D1) CWndEvents::CheckExpertSubwindowNumber > Удаление подокна эксперта приводит к удалению эксперта!" и дальше "2017.03.06 08:40:45.467 TestLibrary10 (SBER,D1) ExpertRemove() function called" . В чем причина?

Проверил у себя ещё раз все возможные ситуации (которые мне известны), когда могло бы такое случиться, но не удалось воспроизвести.

Оба тестовых эксперта из статьи показывают такое поведение или только TestLibrary10 ? А тестовые эксперты из других статей, что показывают ?

 
Anatoli Kazharski:

Проверил у себя ещё раз все возможные ситуации (которые мне известны), когда могло бы такое случиться, но не удалось воспроизвести.

Оба тестовых эксперта из статьи показывают такое поведение или только TestLibrary10 ? А тестовые эксперты из других статей, что показывают ?


   Такое поведение показывают все эксперты из папки Article 10 т.е. от TestLibrary7 до TestLibrary10.
 
Alexander:

   Такое поведение показывают все эксперты из папки Article 10 т.е. от TestLibrary7 до TestLibrary10.
Воспроизвёл. Проблема возникает, когда на графике есть индикаторы в подокнах. Раньше такого поведения не было. Буду разбираться. Спасибо за сообщение.
 
Anatoli Kazharski:
Воспроизвёл. Проблема возникает, когда на графике есть индикаторы в подокнах. Раньше такого поведения не было. Буду разбираться. Спасибо за сообщение.

 Когда я закомментировал в файле MainWindow.mqh эксперта TestLibrary07 2 строки 22 и 23 //m_window.AutoXResizeMode(true); и //m_window.AutoYResizeMode(true); то этот эксперт почему то стал работать нормально.
Причина обращения: