Делаем краудсорсовый проект по Canvas - страница 5

 
Реter Konow:

В моей реализации, точки А и В представлены местоположением двух объектов - координатой Х колеи слайдера (ее началом) и координатой Х ползунка слайдера.

в нарисованном варианте то же самое. 

вы узко мыслите, рассуждая про какие-то ObjectGet/Set
в элементе управления сливаются как минимум три модели - графика, события, данные.
неважно где и как он нарисован.  он может быть и в текстовом виде типа   [.......|..].  Может и на канвасе показатьcя, а можно и двумя МТ объектами rectangle показать.

Модель событий или данных от этого не страдает.

 
o_O:

в нарисованном варианте то же самое. 

вы узко мыслите, рассуждая про какие-то ObjectGet/Set
в элементе управления сливаются как минимум три модели - графика, события, данные.
неважно где и как он нарисован.  он может быть и в текстовом виде типа   [.......|..].  Может и на канвасе показатьcя, а можно и двумя МТ объектами rectangle показать.

Модель событий или данных от этого не страдает.


Все таки механизм непонятен мне. Если можете подробнее объяснить, для общего представления, мне это очень поможет в понимании. Спасибо.
 

Есть фундаментальный вопрос.

Есть допустим два приложения, панельки, индикатора, на одном графике. Каждый из них должен на своей канве рисовать или оба на общей?

В обоих случаях есть вопросы.

 
o_O:

не просто меньше - а вообще никакие (кроме bitmap_label, на которой все и рисуется)

Вот интересно просто, как вы реализуете работу с текстом (текстовая метка, поле ввода для текста). Краткий перечень проблем которые вам предстоит решить:

  • Работа с национальными алфавитами (В шрифтах, например, тот же  Times New Roman имеет начертание практически для всех алфовитов начиная от английского и заканчивая великим могучим и каким-нибудь хинди).
  • Масштабирование текста: 6-8-10-12...72 пункта - размер одного и того же шрифта можно установить без проблем. Векторное начертание как бы для этого и создавалось.
  • Курсив, жирный, подчеркивание - что для каждого этого типа будите свою либу или алгоритм начертания создавать?
  • Ввод/редактирование, управление курсором - зделать это все в виде рисунка просто адовая задача. Я если честно даже приблизительно не представляю как вы это будете риализовывать.

И все это на фоне уже работающих элементов управления "текстовая метка" и "текстовая метка с редактированием текста". Еденственная проблема которых ограничение размера на 32 символа и неспособность использовать интегрированные шрифты.

Вы убъете кучу времени для решения всех этих задач но решите их в лучшем случае процентов на 30%. Сотни килобайт Вашего кода, в лучшем случае будут чуть-чуть не дотягивать до стандартных элементов, зато иметь свои болезни, глюки и разные неприятные ограничения. Неужели Вам это надо?

 
Vasiliy Sokolov:
Документация по MQL5: Графические объекты / TextOut
Документация по MQL5: Графические объекты / TextOut
  • www.mql5.com
Графические объекты / TextOut - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
o_O:

не просто меньше - а вообще никакие (кроме bitmap_label, на которой все и рисуется)

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

 
Реter Konow:

Все таки механизм непонятен мне. Если можете подробнее объяснить, для общего представления, мне это очень поможет в понимании. Спасибо.
запустите из архива xo.zip   https://www.mql5.com/ru/forum/92113#comment_2672543  пример канваса
 
Vasiliy Sokolov:

Вот интересно просто, как вы реализуете работу с текстом

как уже показали - юзаем TextOut

Вы убъете кучу времени для решения всех этих задач

головой биться из за непреодолимых препятствий не будем. если МК не даст решения указанных проблем для edit, то всё это и остановится.

Пока жду от них ответа в СД.

Еще не забывайте о событийной модели. Она не заточена под обработку событий на канве.

помните, я показывал аналог вашей панели для ордерной торговли неттинга?  так вот там не используется CHARTEVENY_MOUSE_MOVE, все анализируется самостоятельно.

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

Сейчас вопрос уперся только в клавиатурные события. 

 
o_O:

Сейчас вопрос уперся только в клавиатурные события.  

С клавиатурой как раз все более менее понятно. Есть событие нажатие клавиши, есть код этой клавиши. Чего еще хотеть?
 
o_O:

попросим в СД доработки.

Кстати как по мне ооочень упростило бы жизнь в плане нормального DND введение события OnMouseDown.