раз вы уже спец, с практикой создания контролов на канвасе,
может тогда опишите принцип работы ваших базовых классов и общую событийную модель?
----
Можем начать от вашей базы и затем добавить другие контролы - кнопка - поле ввода - ползунок - выпадающий список (уже есть в вашем архиве) - выбор времени (уже есть в вашем архиве)
Сейчас я сильно загружен основной работой, как освобожусь накидаю полную схему, будет это не раньше 25.07.2016.
В общих чертах:
Базовый объект CFrame - абстрактный объект на канвасе, имеет x,y, width, height и набор виртуальных методов для обработки событий (OnMouse..., OnNotify, OnPaint), может содержать в себе другие объекты CFrame.
CWindow - потомок CFrame, который реализует канвас и является графическим объектом на чарте, принимает и обрабатывает внешние события (OnChartEvent), раздавая его объектам (child), которые находятся на нём. Все объекты GUI порождаются от CFrame, дополняя его необходимыми методами
В проекте P&F Chart нет глобального контроллера событий, он необходим для приложений с 2 и более окнами(читайте канвасами). Именно он должен раздавать события окнам и отслеживать захват инпута(клавиатура + мышь) GUI контролами.
А вот с полем ввода беда - пока нет хорошей идеи, как заюзать то, что нам доступно.
ИМХО сейчас, можно сделать полноценный EDIT, только если рисовать свою GUI клавиатуру, но будет тяжело поддерживать языки, да и неудобно мышкой набирать текст...
Правая клавиша мыши на проекте, в меню выбрать "Добавить права доступа", я уже пользовался этим в одном совестном проекте, вполне себе удобно - всё под рукой...
Я заметил, что вы пошли по пути, когда gui-блоки представлены каждый своим битмапом.
важный момент для читающих и кто уже начал обдумывать: работа должна происходить только на одном битмапе, с отрисовкой всех элементов gui на нём. С учётом z-order. В этом случае появится больше возможностей для отрисовки. (тени, градиенты и тд.) И упрощается контроль (мы не будем выходить на уровень МТ объектов)
Zorro: А вот с полем ввода беда - пока нет хорошей идеи, как заюзать то, что нам доступно.
ИМХО сейчас, можно сделать полноценный EDIT, только если рисовать свою GUI клавиатуру, но будет тяжело поддерживать языки, да и неудобно мышкой набирать текст...
Проекты MetaEditor позволяет программистам вести совместную разработку приложений на MQL4/MQL5 удаленно. Специально для этих целей в нем предусмотрены Проекты. Совместная работа над проектами осуществляется через MQL5 Storage. Соответственно, пользователь должен иметь действующий аккаунт на MQL5.community, а также выполнить подключение MQL5 Storage. Работа с проектами обладает всеми преимуществами MQL5 Storage: Безопасное хранение исходных кодов. В случае выхода из строя жесткого диска, локальная копия кодов может быть восстановлена из хранилища в кратчайшие сроки. Доступ к хранилищу с любого компьютера. Вы можете авторизоваться в MetaEditor при помощи вашего аккаунта MQL5.community и получить доступ к проекту с любого компьютера. Доступ к каждому из проектов настраивается только автором проекта (пользователем, который его создал). Без разрешения автора никто не имеет доступа к проекту. Для совместных проектов в каталоге MQL4 или MQL5 предназначена папка Projects. В Навигаторе она...
Справка MetaTrader 5 | 2015.12.02 10:22
А вообще, нужно потестить совместную работу с проектами - думаю возникнут вопросы.
По теме использования канваса в качестве UI.
я б сказал красавчик )
очень радует скорость работы. все вполне адекватно и по времени отрисовки и по управлению.
Хидеры для GIF и PNG
хорошо.
раз вы уже спец, с практикой создания контролов на канвасе,
может тогда опишите принцип работы ваших базовых классов и общую событийную модель?
----
Можем начать от вашей базы и затем добавить другие контролы
- кнопка
- поле ввода
- ползунок
- выпадающий список (уже есть в вашем архиве)
- выбор времени (уже есть в вашем архиве)
Сейчас я сильно загружен основной работой, как освобожусь накидаю полную схему, будет это не раньше 25.07.2016.
В общих чертах:
Базовый объект CFrame - абстрактный объект на канвасе, имеет x,y, width, height и набор виртуальных методов для обработки событий (OnMouse..., OnNotify, OnPaint), может содержать в себе другие объекты CFrame.
CWindow - потомок CFrame, который реализует канвас и является графическим объектом на чарте, принимает и обрабатывает внешние события (OnChartEvent), раздавая его объектам (child), которые находятся на нём.
Все объекты GUI порождаются от CFrame, дополняя его необходимыми методами
В проекте P&F Chart нет глобального контроллера событий, он необходим для приложений с 2 и более окнами(читайте канвасами).
Именно он должен раздавать события окнам и отслеживать захват инпута(клавиатура + мышь) GUI контролами.
ИМХО сейчас, можно сделать полноценный EDIT, только если рисовать свою GUI клавиатуру, но будет тяжело поддерживать языки, да и неудобно мышкой набирать текст...
Кстати, в метаедиторе можно заводить проекты, приглашать других участников, давать им права и вместе работать над проектом.
Имеется ввиду MQL5 Storage ?
Ренат подскажите чуть подробней , где почитать о механизме.
Самим Staorage MQL5 пользуюсь практически со дня его старта - но не обнаружил там варианта коллективного доступа.
ок.
с CFrame понятно.
---
Я заметил, что вы пошли по пути, когда gui-блоки представлены каждый своим битмапом.важный момент для читающих и кто уже начал обдумывать:
работа должна происходить только на одном битмапе, с отрисовкой всех элементов gui на нём. С учётом z-order.
В этом случае появится больше возможностей для отрисовки. (тени, градиенты и тд.)
И упрощается контроль (мы не будем выходить на уровень МТ объектов)
А вот с полем ввода беда - пока нет хорошей идеи, как заюзать то, что нам доступно.
ИМХО сейчас, можно сделать полноценный EDIT, только если рисовать свою GUI клавиатуру, но будет тяжело поддерживать языки, да и неудобно мышкой набирать текст...
Имеется ввиду MQL5 Storage ?
Ренат подскажите чуть подробней , где почитать о механизме.
Самим Staorage MQL5 пользуюсь практически со дня его старта - но не обнаружил там варианта коллективного доступа.
Справка MetaTrader 5 | 2015.12.02 10:22
А вообще, нужно потестить совместную работу с проектами - думаю возникнут вопросы.