Обсуждение статьи "Графические интерфейсы II: Элемент "Пункт меню" (Глава 1)"

 

Опубликована статья Графические интерфейсы II: Элемент "Пункт меню" (Глава 1):

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

В предыдущих главах первой части серии был подробно продемонстрирован процесс разработки основной структуры библиотеки для создания графических интерфейсов, а также был создан главный элемент интерфейса — форма для элементов управления. Более подробно, для чего предназначена эта библиотека, можно прочитать в самой первой статье: Графические интерфейсы I: Подготовка структуры библиотеки (Глава 1). В конце статей каждой части представлен список глав со ссылками и там же есть возможность загрузить к себе на компьютер полную версию библиотеки на текущей стадии разработки. Файлы нужно разместить по тем же директориям, как они расположены в архиве.

Главное меню программы

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

Рис. 1. Главное меню в терминале MetaTrader 5

Рис. 1. Главное меню в терминале MetaTrader 5

Этот выпадающий список называется «Контекстное меню» и может содержать в себе несколько типов пунктов. Рассмотрим каждый из них подробнее:

  • Пункт-кнопка. Это самый простой элемент в контекстном меню. В большинстве случаев при нажатии на нем левой кнопкой мыши открывается окно с расширенным функционалом для настройки программы либо окно, в котором представлена какая-то информация. Но могут быть также и совсем простые функции, которые после нажатия на пункт-кнопку, сразу что-то изменяют во внешнем виде интерфейса программы.
  • Пункт с двумя состояниями типа «чекбокс». С помощью этого элемента можно активировать какой-то процесс или открыть (сделать видимым) какую-то часть интерфейса программы. При этом пункт изменяет свой внешний вид, то есть показывает пользователю приложения, в каком состоянии он находится.
  • Группа пунктов, среди которых только один может быть включен. Такой вид элементов управления называют «радио-кнопки» либо «переключатели». В статье будем называть их «радио-пункты».
  • Пункт вызова контекстного меню. То есть в контекстном меню, которое вызвано из главного меню программы, могут быть пункты, содержащие в себе еще одно контекстное меню. После нажатия на такой пункт контекстное меню появляется справа от него.

Автор: Anatoli Kazharski

 
Для фрилансера и продавцов (Маркет) создание графического интерфейса имеет большое значение, т.к. позволяет привлечь потенциальных заказчиков/покупателей.

Для остальных же - не совсем ясна полезность и нужность. Поэтому просьба к автору. Могли бы Вы заснять на видео максимально навороченный (с учетом всех будущих статей по теме) графический интерфейс, показав там все возможности?

Поскольку читать и разбираться в столь обширном материале, совершенно не понимая, зачем это нужно - вряд ли кто-то будет. А на видео-демонстрации каждый сам для себя решит, нужно это ему или нет. И даже если сейчас не нужно, то будет представление о возможностях, на которые в будущем можно будет сделать упор. А если, действительно, заинтересует, будут читать статьи внимательно и задавать вопросы по делу.

Просьба от имени НЕ фрилансеров и продавцов.
 
zaskok3:
Для фрилансера и продавцов (Маркет) создание графического интерфейса имеет большое значение, т.к. позволяет привлечь потенциальных заказчиков/покупателей.

Для остальных же - не совсем ясна полезность и нужность. Поэтому просьба к автору. Могли бы Вы заснять на видео максимально навороченный (с учетом всех будущих статей по теме) графический интерфейс, показав там все возможности?

Поскольку читать и разбираться в столь обширном материале, совершенно не понимая, зачем это нужно - вряд ли кто-то будет. А на видео-демонстрации каждый сам для себя решит, нужно это ему или нет. И даже если сейчас не нужно, то будет представление о возможностях, на которые в будущем можно будет сделать упор. А если, действительно, заинтересует, будут читать статьи внимательно и задавать вопросы по делу.

Просьба от имени НЕ фрилансеров и продавцов.

Тем, кто изучает MQL и объектно-ориентированное программирование, думаю будет интересно почитать. Намного проще изучать язык программирования на подобных проектах, а не на каких-то абстрактных примерах, которые действительно очень часто не отвечают на вопрос: "А где же это можно применить?".

Мне вот, например, очень была нужна такая библиотека, но из того, что было предложено MQL-сообществу, мне многого не хватало для комфортного использования. 

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

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

 
Спасибо, из Вашего ответа я понял, где мне может это пригодиться:
Во время торговли на реале я хочу видеть, как бы шла торговля в тестере - реал-тайм. Т.е. вижу боевое окружение штатными средствами. И вижу тестерное реал-тайм окружение уже Вашими средствами визуализации. При этом могу посмотреть и историю в этом виртуальном тестере и график сделок.

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

2D-чарты рисовать будет библиотека?
 

zaskok3:

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

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

zaskok3:

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

Да, можно. Но придётся подождать пока будет опубликована вся библиотека. Всего будет около 20 статей, возможно уже даже больше. На текущий момент опубликовано пока только 6 статей серии.

zaskok3:

2D-чарты рисовать будет библиотека?  

У меня уже есть один подобный класс-элемент и вполне возможно Вам этого уже будет достаточно. Но это пока только слегка модифицированный класс из стандартной библиотеки. Мне этого конечно тоже далеко недостаточно и я планирую создать свою библиотеку для построения графиков. Если конечно её не напишет, кто-нибудь раньше меня. ) Хочется что-нибудь наподобие такого качества, как это реализовано, например, в Excel.

 
Anatoli Kazharski:
Спасибо за развернутые ответы! Появилось представление, где это может пригодиться именно трейдеру-разработчику для своих реальных нужд, а не ради изысков. Статьи очень содержательные, но буду смотреть подробно и пробовать, когда появятся уже соответствующие возможности. 2D-графики - это особенно хорошо...
 
Anatoli Kazharski:

Добавьте, пожалуйста, ссылки на список статей второй части:

Список статей (глав) второй части:

Графические интерфейсы II: Элемент "Пункт меню" (Глава 1)
Графические интерфейсы II: Элементы "Разделительная линия" и "Контекстное меню" (Глава 2)
Графические интерфейсы II: Настройка обработчиков событий библиотеки (Глава 3)
Графические интерфейсы II: Элемент "Главное меню" (Глава 4)

Сейчас кликабельна только первая (Глава 1). Аналогично, хотелось бы переходы по всем ссылкам в конце глав 2 и 3.