Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Петр, я тебя не понял. Ты не ответил на вопросы.
Для программистов важно узнать, как взаимодействовать с твоим GUI в процессе работы.
Вот пример моего GUI. Я нажал ярлык светлой/темной темы, и это событие сразу вызвало функцию смены цветов фона и линий. Как это взаимодейстие сделать у тебя?
Что значит " Пользователь НЕ БУДЕТ (от слова совсем) взаимодействовать с моим кодом. "?
Программисту нужно взаимодействовать не с кодом, а с событиями, который должен генерировать этот код.
Хорошо. Для ясности попробую использовать только картинки.
1.
2.
3.
4.
Наш лист опций и чекбокс в окне и файле Internal_API:
5. Выполняем действия с окном и элементами в коде пользователя:
6.
ИНТЕЛЛИСЕНС НАМ ВСЕ ПОДСКАЗЫВАЕТ!!!
На примере вэб разработки.
Т.к. твой GUI пишется с помощью созданного тобой языка разметки. В вэб разработке так же существует свой язык разметки (HTML) и язык стилей (CSS).
Если ты создал вэб сайт только на HTML, то ты можешь создавать элементы управления на чистом html. Вот пример с checkbox.
Но в этом случае сайт будет мертвым, т.к. ничего не будет происходить при работе элементов управления.
Чтобы что-то происходило, необходимо на каждое событие повесить обработчик этого события с помощью JavaScript и функции addEventListener
Вот пример такой обработки: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_element_addeventlistener4
Мой главный вопрос можно переформулировать: Как у тебя реализован для программиста обработчик событий, генерируемый GUI при работе пользоваля. Т.е. какой твой аналог addEventListener ?
Как я говорил, у меня это реализовано через то, что при программном формировании GUI каждому элементу управления назначается своя функция-обработчик этого события с помощью указателя на функцию.
Ну Ок. Попробую спросить по другому.
На примере вэб разработки.
Т.к. твой GUI пишется с помощью созданного тобой языка разметки. В вэб разработке так же существует свой язык разметки (HTML) и язык стилей (CSS).
Если ты создал вэб сайт только на HTML, то ты можешь создавать элементы управления на чистом html. Вот пример с checkbox.
Но в этом случае сайт будет мертвым, т.к. ничего не будет происходить при работе элементов управления.
Чтобы что-то происходило, необходимо на каждое событие повесить обработчик этого события с помощью JavaScript и функции addEventListener
Вот пример такой обработки: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_element_addeventlistener4
Мой главный вопрос можно переформулировать: Как у тебя реализован для программиста обработчик событий, генерируемый GUI при работе пользоваля. Т.е. какой твой аналог addEventListener ?
Как я говорил, у меня это реализовано через то, что при программном формировании GUI каждому элементу управления назначается своя функция-обработчик этого события с помощью указателя на функцию.
Николай, все работает. Позже ты сам попробуешь. Все намного проще чем ты думаешь. Я по этой технологии много рабочих интерфейсов сделал. Так что... Скоро все увидишь.
Николай, все работает. Позже ты сам попробуешь. Все намного проще чем ты думаешь. Я по этой технологии много рабочих интерфейсов сделал. Так что... Скоро все увидишь.
ну Ок. Буду ждать. Реально хочу понять твое Творение.
Все же, чтобы легче было понять на примере, создай, пожалуйста, простой пустой индикатор (или советник), в котором подключен твой GUI в виде отдельной кнопки, при нажатии которой меняется цвет фона окна с черного на белый и с белого на черный. Только желательно, чтобы смена цвета происходило в теле индикатора, а не в одном из подключенных файлов. Т.к. программист, действительно, не должен лезть в твой код.
Для простоты написания вот код функции, которая должна выполняться в теле программы при нажатии кнопки:
ну Ок. Буду ждать. Реально хочу понять твое Творение.
Все же, чтобы легче было понять на примере, создай, пожалуйста, простой пустой индикатор (или советник), в котором подключен твой GUI в виде отдельной кнопки, при нажатии которой меняется цвет фона окна с черного на белый и с белого на черный. Только желательно, чтобы смена цвета происходило в теле индикатора, а не в одном из подключенных файлов. Т.к. программист, действительно, не должен лезть в твой код.
Для простоты написания вот код функции, которая должна выполняться в теле программы при нажатии кнопки:
Хорошо. Для понимания сделаю максимально простую реализацию. Без прибамбасов.)
Хорошо. Для понимания сделаю максимально простую реализацию. Без прибамбасов.)
Супер! Спасибо.
Николай, конкретно для кнопки я не могу прописать вызов функции внутри тела индикатора, потому что ее обработчик находится внутри файла Internal_API.mqh.
То есть, я могу вызывать твою функцию на событии нажатии кнопки из ее обработчика в этом файле. Однако, я могу устанавливать состояния кнопки программно из тела индикатора на событии таймера, например. Но тогда не нужно на кнопку нажимать. Короче, есть разные элементы. С одними можно работать внутри тела индикатора (в основном неинтерактивные элементы, как прогресс-бар например) и есть те, которые имеют обработчик в файле Internal_API.mqh и работают от туда. Хотя их состояния можно программно устанавливать из тела советника/индикатора.
Твою задачу выполнил. (если белый квадрат - нажми)
Код:
Закомментировал твою функцию потому что компилятор ругался. Сделал проще.
Вот код в файле Internal_API.mqh
Кстати, нужно добавить:
файл Internal_API.mqh содержит обработчики элементов управления и СПЕЦИАЛЬНО предназначен для их подключения.
Этот файл предназначен для пользователя и не является частью движка или другого моего кода.
Кстати, нужно добавить:
файл Internal_API.mqh содержит обработчики элементов управления и СПЕЦИАЛЬНО предназначен для их подключения.
Этот файл предназначен для пользователя и не является частью движка или другого моего кода.
Понятно Петр. Спасибо.
Не удобно, конечно, для разработчика. Очень много лишнего кода и телодвижений.
Все же вариант с указателем на функцию намного лучше.