Краудсорсовый GUI. Открытое бета-тестирование. - страница 29

 
Alexandr Andreev:

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

Да, это полу-пример. Не получилось сделать до конца из за того бага с позициями. 

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

Пока что, редактор позволяет создавать эти элементы. Для них в файле создаются обработчики событий, в которых пользователь прописывает реакции. 

Также, в файле печатаются фунции, через которые пользователь обращается к элементам чтобы:

1. Получить текущее значение элемента.
2. Установить новое значение элементу. 

Функции легко выбираются из списка intellisense, реагирующего на префиксы Е_ (элементы) и W_(окна). 

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

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

Пока что, редактор позволяет создавать эти элементы. Для них в файле создаются обработчики событий, в которых пользователь прописывает реакции. 

Также, в файле печатаются фунции, через которые пользователь обращается к элементам чтобы:

1. Получить текущее значение элемента.
2. Установить новое значение элементу. 

Функции легко выбираются из списка intellisense, реагирующего на префиксы Е_ (элементы) и W_(окна). 

Вечером будет полный пример.

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

 
Alexandr Andreev:

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

Лучше пока поработать над дизайном

 
Alexandr Andreev:

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

И вот окружение всяко надо реализовавывать через классы. Также вызов меню вкладок и т.д. и т.п.

 
Alexandr Andreev:

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

Вы не поняли. 

1. Вписываем реакции в обработчике, верно.

2. Если хотим получить текущее значение от элемента (например, текст поля ввода) вызываем его функцию из готового списка. 
 
Alexandr Andreev:

И вот окружение всяко надо реализовавывать через классы. Также вызов меню вкладок и т.д. и т.п.

Не будем махать перед носом Петра выражением "нужны классы". Просто дождемся хотя бы видео, потом будем вопросы задавать.

Я уже предлагал Петру немного модифицировать его "ядро" очень простым вариантом: использовать структуры. Черт с ними с этими классами, не хочет человек погружаться в них - это его личное дело.

Но использование структур просто напросто самому Петру облегчило бы жизнь.

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

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

С одной стороны это не классы, а с другой стороны это сильно бы облегчило работу с глобальным массивом самому Петру. К тому же Петр уже имеет определенный опыт работы с подобием структуры: с union.

Но у Петра свой путь сенсея и просто будем ждать результат...

 

В качестве сквозного примера я бы предложил следующую схему: Создаем форму, в которой имеем три поля: сумма сделки, цена SL и цена TP, две кнопки: BUY и SELL

Создаем советник, подключаем к нему GUI в виде инклюдника. Добавляем переменную для начальной ставки. При инициализации советника сумма начальной ставки передается в соответствующее поле в GUI.

Создаем в советнике функцию "ОткрытьСделку". Эта функция должна вызываться как только в GUI нажата одна из кнопок.

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

 
Алексей Барбашин:

В качестве сквозного примера я бы предложил следующую схему: Создаем форму, в которой имеем три поля: сумма сделки, цена SL и цена TP, две кнопки: BUY и SELL

Создаем советник, подключаем к нему GUI в виде инклюдника. Добавляем переменную для начальной ставки. При инициализации советника сумма начальной ставки передается в соответствующее поле в GUI.

Создаем в советнике функцию "ОткрытьСделку". Эта функция должна вызываться как только в GUI нажата одна из кнопок.

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

Лот, тейк и стоп + кнопки купить/продать?  Простой и ясный пример. Так и сделаю. Функции открытия ордеров и получения цен стопов добавлю.
 
Реter Konow:
Вы не поняли. 

1. Вписываем реакции в обработчике, верно.

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

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