Нужен ли генератор пользовательского интерфейса для программ MQL4/5?

 
  • 21% (14)
  • 13% (9)
  • 21% (14)
  • 21% (14)
  • 25% (17)
Всего проголосовало: 54
 
Вчера на вебинаре рассказывал про стандартную библиотеку MQL4/5 в части создания интерфейса, разобрали пример SimplePanel. Кто программирует в современных IDE, понимает, что создание интерфейса вручную на уровне кода - каменный век.
То есть прописывать вот такое руками, это ненужная трата времени, привет началу 90-х :)
//+------------------------------------------------------------------+
//| Create the "Button1" button                                      |
//+------------------------------------------------------------------+
bool CPanelDialog::CreateButton1(void)
  {
//--- coordinates
   int x1=ClientAreaWidth()-(INDENT_RIGHT+BUTTON_WIDTH);
   int y1=INDENT_TOP;
   int x2=x1+BUTTON_WIDTH;
   int y2=y1+BUTTON_HEIGHT;
//--- create
   if(!m_button1.Create(m_chart_id,m_name+"Button1",m_subwin,x1,y1,x2,y2))
      return(false);
   if(!m_button1.Text("Button1"))
      return(false);
   if(!Add(m_button1))
      return(false);
   m_button1.Alignment(WND_ALIGN_RIGHT,0,0,INDENT_RIGHT,0);
//--- succeed
   return(true);
  }
  
Возникла идея сделать генератор интерфейса MQL4/5 на C#. Как сделать - знаю, вопрос в том, нужно ли это комьюнити?
И, кстати, очень мне не нравиться вот такой код в СБ

// in MQL
//+------------------------------------------------------------------+
//| Event handler                                                    |
//+------------------------------------------------------------------+
void CPanelDialog::OnClickButton1(void) // нет инфы, от какого элемента пришел эвент
  {
   m_edit.Text(__FUNCTION__);
  }
//+------------------------------------------------------------------+
//| Event handler                                                    |
//+------------------------------------------------------------------+
void CPanelDialog::OnClickButton2(void)
  {
   m_edit.Text(__FUNCTION__);
  }


 
Alexey Volchanskiy:
В том же шарпе можно всегда узнать, от кого пришел евент.


// in C#
private void button1_Click(object sender, EventArgs e) // в C# можно узнать, по какому объекту щелкнули и данные события
{
// что-то делаем
}
 

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

Не думаю, что так уж много народу используют все эти визуальные элементы управления.

Хотя, действительно, было бы интересно иметь визуальный редактор интерфейса...

 
George Merts:

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

Не думаю, что так уж много народу используют все эти визуальные элементы управления.

Хотя, действительно, было бы интересно иметь визуальный редактор интерфейса...

Я имел в виду, что я сам это хочу это сделать )) В принципе, уже и начал.
 
Идея замечательная, только неизбежен фатальный недостаток)
 
Alexey Volchanskiy:
Возникла идея сделать генератор интерфейса MQL4/5 на C#

Не могли бы вы пояснить что за зверь и как должен работать?

 

Alexey Volchanskiy:
И, кстати, очень мне не нравиться вот такой код в СБ

Я думаю "Классы для создания панелей индикации и диалогов управления" были созданы разработчиками чисто для отладки, в том отладочном виде и были засунуты в дистрибутив. И с тех пор длиццо вот это:

George Merts:

Алексей, я думаю, у разработчиков достаточно более насущных проблем

Елементарный пример - чтобы расположить группу радио-боксов не по вертикали а по горизонтали надо весь класс переписать или скопипастить в свой код, а всего-то делов поправить код в 4х строках. И таких костылей надо строгать мин по десятку на каждую средненькую кастомную панель
 
Aleksey Lebedev:
Идея замечательная, только неизбежен фатальный недостаток)
Спасибо, посмеялся )) Разница в том, что генератора интерфейса для MQL вроде еще никто не делал. Или я об этом не знаю?
 

Вроде никто не делал, по интерфейсу здесь только статью видел https://www.mql5.com/ru/articles/1867

 
Aleksey Lebedev:

Вроде никто не делал, по интерфейсу здесь только статью видел https://www.mql5.com/ru/articles/1867

Хорошая работа, но все же имеются минусы, которые сам автор честно указал. Вы работали с формами в Visual Studio или других современных IDE? Если да, то сами все понимаете. Если нет, вкратце, можно все элементы перемещать на форме мышкой, менять размеры, задавать свойства, например цвет, шрифт. А редактор форм генерит код для компилятора.

------ из статьи -------- 

Плюсы:

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

Минусы:

  • Необходимо создать дополнительные элементы управления для контейнеров, а также требуется создание дополнительных функций для использования этих контейнеров.
  • Меньшая точность: расположение ограничено компоновкой и доступными опциями выравнивания.
  • Могут возникнуть проблемы или сложности, если контейнер содержит элементы управления разных размеров: в этом случае необходимо либо свести разницу в размерах до минимума, либо использовать составные контейнеры.
 
Alexey Volchanskiy:
Разница в том, что генератора интерфейса для MQL вроде еще никто не делал. Или я об этом не знаю?

Для нашей команды я такой сделал (на том же шарпе) год назад, не меньше.

Но он для внутреннего пользования. Год назад я не увидел смысла делать публичным: замучают по линии саппорта, а ЦА была ничтожно мала, чтобы иметь с этого реальный профит (ИМХО, конечно). В нашем случае выгоднее казалось просто использовать его для ускорения работы по заказам, что собственно и делаем. Правда переписали заодно и добрую половину контролов (не наследование, а именно переписали из страха что после какого-нибудь апдейта терминала родители подкинут проблем) и дописали некоторых своих.


С интересом понаблюдал бы за становлением публичного и открытого такого продукта (и возможно подключился бы к нему через пару месяцев, сейчас жестоко занят), но что-то мне подсказывает что опенсурсным и Вы не будете его делать ;)

Причина обращения: