Обсуждение статьи "Графические интерфейсы X: Обновления для библиотеки Easy And Fast (build 2)"

 

Опубликована статья Графические интерфейсы X: Обновления для библиотеки Easy And Fast (build 2):

С момента предыдущей публикации статьи этой серии, библиотека Easy And Fast пополнилась новыми возможностями. Проведена частичная оптимизация схемы и кода библиотеки, что немного сократило потребление ресурсов CPU. Некоторые повторяющиеся методы во многих классах элементов были перенесены в базовый класс CElement.

Итак, приступим. Всего в графических интерфейсах тестовых приложений будет восемь вкладок. На скриншотах ниже показано, как разместились в них элементы управления. На первой вкладке представлены все типы кнопок (включая группы кнопок) и список с вертикальной полосой прокрутки. Кнопка «Simple Button 3» двухрежимная, и если привести её во включенное состояние, это сделает видимым элемент «Индикатор выполнения», в котором для демонстрации будет имитироваться некий процесс.  

 Рис. 3. Группа элементов графического интерфейса первой вкладки.

Рис. 3. Группа элементов графического интерфейса первой вкладки.

Автор: Anatoli Kazharski

 

Спасибо автору за качественную работу.

 

Ждем видео.

И еще реализацию динамичности окон. Если можно.)

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

(Данное предложение является изъявлением желания "заинтересованного пользователя". Не более.)

 

На вкладке Tab 1 есть 3 радиокнопки, что и куда нужно добавить в данном примере чтобы при их переключении просто выскочил алерт с именем нажатой кнопки?

п.с. в данном примере, в файле MainWindow.mqh в функции bool CProgram::CreateTable есть два дефайна: COLUMNS2_TOTAL и ROWS2_TOTAL, а далее в этой же функции используются дефайны COLUMNS1_TOTAL и ROWS1_TOTAL. Вероятно это ошибка.

 
Alexey Oreshkin:

На вкладке Tab 1 есть 3 радиокнопки, что и куда нужно добавить в данном примере чтобы при их переключении просто выскочил алерт с именем нажатой кнопки?

В обработчике событий пользовательского класса CProgram::OnEvent() добавьте вот такой блок кода:

//+------------------------------------------------------------------+
//| Обработчик событий графика                                       |
//+------------------------------------------------------------------+
void CProgram::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
//...
//--- Событие нажатия на текстовой метке
   if(id==CHARTEVENT_CUSTOM+ON_CLICK_LABEL)
     {
      //--- Если нажали на радио-кнопку
      if(lparam==m_radio_buttons1.Id())
        {
         ::Alert("element id (lparam): ",lparam,"; radio button index (dparam): ",(int)dparam,"; radio button description (sparam): ",sparam);
         return;
        }
      //---
      return;
     }
//...
  }

//---

Результат:


//--- 

п.с. в данном примере, в файле MainWindow.mqh в функции bool CProgram::CreateTable есть два дефайна: COLUMNS2_TOTAL и ROWS2_TOTAL, а далее в этой же функции используются дефайны COLUMNS1_TOTAL и ROWS1_TOTAL. Вероятно это ошибка.

Да. Переносил код из другого файла и забыл исправить.

 
Реter Konow:

Ждем видео.

И еще реализацию динамичности окон. Если можно.)

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

(Данное предложение является изъявлением желания "заинтересованного пользователя". Не более.)

До совершенно полноценного состояния и логичного завершения всей работы, кроме динамичности окон, нужно много чего ещё сделать. Будет, как минимум, ещё девять элементов управления. А также нужно внести некоторые доработки, которые упростят создание интерфейса, так как у некоторых пользователей возникли сложности. Да и справочную документацию бы тоже не помешало сделать. Точнее это даже нужно, но сделаю её только после того, как разработка будет полностью завершена. Это ещё нескоро.

 
Anatoli Kazharski:

До совершенно полноценного состояния и логичного завершения всей работы, кроме динамичности окон, нужно много чего ещё сделать. Будет, как минимум, ещё девять элементов управления. А также нужно внести некоторые доработки, которые упростят создание интерфейса, так как у некоторых пользователей возникли сложности. Да и справочную документацию бы тоже не помешало сделать. Точнее это даже нужно, но сделаю её только после того, как разработка будет полностью завершена. Это ещё нескоро.

Ясно.

Динамичность окон не главная вещь. Но удобная. 

Очень интересно, какие еще элементы управления собираетесь добавить.

Снимите ли Вы видео с демонстрацией возможностей интерфейса?

Или например, можно было бы заснять процесс создания интерфейса для небольшого эксперта, работающего на МА.  

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

Я бы сам все проверил, но честно говоря абсолютно нет времени, так как очень занят своей работой.

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

 
Реter Konow:

Ясно.

Динамичность окон не главная вещь. Но удобная. 

Очень интересно, какие еще элементы управления собираетесь добавить.

Снимите ли Вы видео с демонстрацией возможностей интерфейса?

Или например, можно было бы заснять процесс создания интерфейса для небольшого эксперта, работающего на МА.  

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

Я бы сам все проверил, но честно говоря абсолютно нет времени, так как очень занят своей работой.

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

Всё это и многое другое тоже уже было запланировано. Будет много рабочих примеров, которые помогут MQL-разработчикам использовать эту библиотеку в своих проектах. Индивидуально каждому, к сожалению, уделить много времени нет возможности. А для статей время могу найти.

Из элементов будут, например:

  • Элемент "Время".
  • Элемент "Текстовое поле" с автоматическим переносом слов + полоса прокрутки.
  • Списки радио-кнопок и чек-боксов с вертикальной полосой прокрутки.
  • И многое другое. 

 
Anatoli Kazharski:

В обработчике событий пользовательского класса CProgram::OnEvent() добавьте вот такой блок кода:

Благодарю. Я так всё и делал, только не ставил :: перед Alert поэтому у меня и не работало.
 
Alexey Oreshkin:
Благодарю. Я так всё и делал, только не ставил :: перед Alert поэтому у меня и не работало.
Отсутствие :: не должно было оказывать, какого-то влияния. Ошибка была, в чём-то другом. 
 
Anatoli Kazharski:
Отсутствие :: не должно было оказывать, какого-то влияния. Ошибка была, в чём-то другом. 

Может быть, свой код удалил и сейчас уже не могу сказать точно.

 

Ошибка возникает когда закрываю крестиком созданное индикатором окно. Немного изменил файл MainWindow.mqh из примера расположенного здесь: Indicators\Article 10\SeparateWindow

 

и ещё не понял как можно удалить строку в созданной таблице ?