Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Краудсорсовый GUI. Открытое бета-тестирование.
Алексей Барбашин, 2020.03.07 21:25
"но может проще сделать все в объектах" - это более чем логично
"Да конечно частично будем опираться." - тогда сразу исправляемся:
class CCoordPBase Наследуемся от CObject, то есть: class CCoordPBase : public CObject Хотя наверное можно и по другому: class Control : public CObject
CObject - это базовый класс всех объектов в библиотеке разработчиков. Сделано по аналогии с С++ и C#. В шарпе базовым объектом (типом) является Object
Координаты и размеры - это уже свойства элемента (контрола), так же как и цвет основы, цвет и толщина рамки, радиусы скруглений, пиктограмма и текст.
Для начала нужно определить какой вид контролла по составу мы будем считать элементарным, от этого и плясать, то есть описывать базовые свойства.
Конечно некоторые из ранее определенных свойств могут и не использоваться далее в потомках, это уже не проблема, но базовый лучше сделать наиболее универсальным.
Чтобы далеко не искать вот образец примера простейшего универсального контролла:
Содержит background, border, radius, icon, text
Если нужно получить Label, тогда не указывается фон, бордюр и иконка, если нужен Panel, тогда не указывается содержимое, если нужна кнопка-картинка, тогда указывается только icon, если нужна кнопка с картинкой, тогда указывается фон, рамка и картинка..
То есть такой состав является довольно универсальным для большинства элементов управления.
с этим понятно, вопрос по смене стиля по наведению при этом сохраняя координаты... хотя вроде уже понятно
Есть ли стандартная билиотека по контролу ??
Суть CObject - типизировать все объекты.
К примеру нам нужна библиотека списка (список элементов, комбобокс, чекслист и так далее). Для каждого типа элементов мы можем создавать свой тип массива, так Анатолий и поступил, а можно воспользоваться уже готовым инструментом: CArrayObj
То есть очень многие куски кода не нужно изобретать, они уже еть, бери и используй.
с этим понятно, вопрос по смене стиля по наведению при этом сохраняя координаты... хотя вроде уже понятно
Есть ли стандартная билиотека по контролу ??
За саму основу можно взять стандартную библиотеку от разработчиков, не вижу в этом ничего постыдного, их иерархию.
Конечно оттуда нужно выбросить все, что связано с непосредственным построением, но оставить систему передачи событий - она действительно универсальна!
По этой технологии не зависимо от того к какому класу будет принадлежать даже самый сложный элемент управления события будут передаваться через типизированную систему элементарного объекта.
Прорисовка основного контрола будет выполнятся в базовом CControls, после чего будет генериться событие OnPaint(). Это позволит дорисовывать/перерисовывать потомков и вообще даст самому пользователю возможность перерисовать контрол как он захочет.
Давай!!!!!
а я думал запилить сразу элементарное взаимодействие
куда будем вносить позиционирвания типо слева от прошлого объекта в случае выстраивания в строчку или в столбик
вообщем пишем универсальный контролИменно так и нужно построить: запилить элементарное взаимодействие.
Базовый контрол на самом начальном уровне не обязан иметь все нужные свойства, хватит одного только background.
Ведь для отрисовки самого контрола в нем будет находится соответствующая функция. Поэтому при добавлении каких-либо свойств дорабатывать придется только одну единственную функцию.
По иерархии элементов?
CObject - базовый типовой
class CControl : public CObject - базовый контрол самой библиотеки
class CContainerControl : public CControl - групповой контрол. Одним из его полей будет массив вложенных контролов. Пример ты можешь посмотреть в стандартной библиотеке CWndContainer.
Саша, раз ты начал уже кодить тогда сделай открытый проект на MQL, можно будет вести совместную разработку и к ней смогут подключиться желающие. Как знать, возможно такие найдутся.
пока приостановился... смотрю стандартные библиотеки.... там много чего лишнего
хотя не много))) но котрол правильнее будет свой написать... ну либо сразу наследоватьCChartObject

- www.mql5.com
Саша, раз ты начал уже кодить тогда сделай открытый проект на MQL, можно будет вести совместную разработку и к ней смогут подключиться желающие. Как знать, возможно такие найдутся.
думаю с чистого листа рановато, сперва чего-то накидать надо
пока приостановился... смотрю стандартные библиотеки.... там много чего лишнего
хотя не много))) но котрол правильнее будет свой написать... ну либо сразу наследоватьCChartObject
Не, не!!
Смотри внимательнее!
Этот контрол как раз путь в никуда! Нам не нужны дискретные объекты чарта! Нужно на канвасе рисовать - только это даст развитие и широкие возможности.
А то, что основной контрол нужно делать свой - это однозначно.
В стандартной библиотеке свойства и состояния разбиты между CWndObject и CWnd, а нам нужно все объединить в одном контроле.
Не, не!!
Смотри внимательнее!
Этот контрол как раз путь в никуда! Нам не нужны дискретные объекты чарта! Нужно на канвасе рисовать - только это даст развитие и широкие возможности.
А то, что основной контрол нужно делать свой - это однозначно.
В стандартной библиотеке свойства и состояния разбиты между CWndObject и CWnd, а нам нужно все объединить в одном контроле.
Четверть часа пытался создать проект - а он был создан оказываться, теперь смотрю как сделать публичным
думаю с чистого листа рановато, сперва чего-то накидать надо
Уверен что с чистого листа и не стоит.
Очень умные люди потратили много времени и знаний чтобы сделать ту же стандартную библиотеку или библиотеку Анатолия.
Люди потратили время и знания и было бы глупо это не использовать.
Нужно просто взять лучшее, с нашей точки зрения, и в той и в другой и собрать новое.
Нужно учиться на чужих ошибках. Свои мы и так создадим )))

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования