Мы больше не можем управлять размещением объектов на графике "по вертикали"

 

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

Сейчас я нарвался на аналогичную ситуацию и снова хочу спросить мнение тех, для кого они разрабатывают MQL5.

Начало здесь. Вкратце история такова: объекты в MQL5 размещаются на графике в порядке их создания. Самый первый созданный объект - самый нижний. Если вы в коде или пользователь ручками его случайно удалите, то больше никакими силами положить его вниз не получится (ну разьве что самому поудалять оставшиеся объекты и заново пересоздать их в правильном порядке). Самый очевидный пример: вы сделали подложку для размещения поверх нее текстов, полей ввода и кнопок. Если теперь удалить ее и создать, то она как самая новая накроет собой все то что вы хотели бы видеть над ней.

Обратившись в сервисдеск с предложением

необходимо предусмотреть механизмы произвольной сортировки объектов "по вертикали". Либо наличием свойства Zorder у каждого объекта, либо функциями BringToFront, SendToBack, InFrontOf, BehindOf. Ну или хотябы сделайте так же как было в 4-ке - по имени объекта, т.к. к такому поведению объектов все уже привыкли и ожидают что в 5-ке будет также.

я сразу же получил по....

Anton Timofeev 2010.05.27 12:27
Текущее правило последовательности отрисовки простое и достаточное для управления отрисовкой. Сортировка по имени в некоторых случаях дает более гибкое управление порядком отрисовки - простое решение для описанной на форуме конкретной задачи (маленький полюс), но заставит всех пользователей при любом добавлении объекта (втч не из MQL) тщательно обдумывать имя (большой минус).
Последовательность отрисовки при наложение объектов в МТ5 уже используют на практике (фон, кнопки и тп). На проблемы не жаловались - все достаточно просто решается алгоритмически.

ну ктобы сомневался что для них это, с позволения сказать, решение "простое и достаточное для управления отрисовкой"?! :))))

на мое замечание:

ForexTools:

то что другие не жаловались не означает что проблемы нет, может потому что толком с интерфейсом никто не возился ;)

ответили


Возились:

https://www.mql5.com/ru/articles/64

https://www.mql5.com/ru/articles/65

https://www.mql5.com/ru/code/68

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

хорош аргумент: на играх тетрис и минер отлаживались решения для будущих торговых интерфейсов :)))

и в итоге их вердикт:

Выше я достаточно подробно описал причину, по которой мы не будем вносить изменения. Повторю короче: ради удобства в частном случае нельзя усложнять жизнь всем во всех остальных случаях.

Если в четверке был хоть какойто порядок размещения объектов графика (по именам объектов), то в пятерке сделали самотасующуюся колоду карт и предлагают нам "поменять свой подход" к написанию MQL5-программ.


ИТОГО: что думаете коллеги-кодеры? нужен ли механизм возможности управления размещением объектов по вертикали? я предложил три варианта:

1) старый - по именам объектов

2) нормальный - с добавлением свойства Z-order каждому объекту графика

3) процедурный - функциями BringToFront, SendToBack, InFrontOf, BehindOf

или согласится на единственный вариант от разработчиков: в случае удаления полное перерисовывание всех(!!!!) объектов в требуемом порядке.

Кто что думает по этому поводу?


 
2)
 
Не совсем понял. В МТ5 графические объекты в глубину располагаются не по имени объекта а по времени создания?
 
Integer >>:
Не совсем понял. В МТ5 графические объекты в глубину располагаются не по имени объекта а по времени создания?
вот именно! здесь есть простейший скрипт для проверки
 

ыыыыыыыы

я за 2) ну или хотябы 1)

а процедурный ну фиг знает


также предлагаю свой вариант

все за каскадную таблицу стилей!!!!!

да ваше в мкл5 много "великого"

 

2)

если уж на то пошло, что порядок объектов определяется временем создания, то это только минус для отображения.

однозначно - это недосмотр и игнорирование проблемы со стороны метаквотов.

Ведь в случае с сортировкой по именам - у программиста есть хотя бы какая-то возможность сортировать по своему усмотрению,

а с датой создания даже эта возможность ушла.

надо возвращать 1 или лучше делать  2. Просто добавится еще одно удобное свойство в объекте. 

 

Конечно за Z координату, по пойму это в духе ООП.
Я за 2).

 
Я за z-order/z-index
 

2) - Лучший выбор.

 

1. Можно, конечно, обсуждать недокументированные возможности. И это неоднократно делалось. Но для того, чтобы находить решения. А не для того, чтобы изменить недокументированное поведение.

2. Нам пришло гораздо больше просьб (больше, чем участников этой дискуссии) с тем, чтобы изменить порядок отрисовки объектов. Да, в пятёрке мы сделали простой и естественный порядок по времени создания объекта (однако, это тоже недокументировано). И что нам теперь делать?

3. А ничего не делать! Так как при нынешней сортировке можно просто пересоздать группу объектов, что было невозможно при сортировке по именам.

 

stringo писал(а) >>

Так как при нынешней сортировке можно просто пересоздать группу объектов, что было невозможно при сортировке по именам.

Удержание пользователем объекта мышкой ломает всю малину. Такой расклад учитываете? Почему было невозможно?
Причина обращения: