Ya no podemos controlar la colocación de los objetos en el gráfico "verticalmente"

 

La última discusión, casi escandalosa, sobre el problema del formato del código fuente terminó con el reconocimiento por parte de los desarrolladores del "derecho" de los programadores a escribir los programas como les gusta (y no como piensan) y la promesa de finalizar la configuración del formato del código fuente.

Ahora me he encontrado con una situación similar y de nuevo quiero pedir la opinión de aquellos para los que desarrollan MQL5.

Empieza aquí. En resumen, la historia es la siguiente: los objetos en MQL5 se colocan en un gráfico en el orden de su creación. El primer objeto creado es el más bajo. Si se borra accidentalmente en el código o por un usuario, no será posible ponerlo de otra manera (excepto borrar los objetos restantes y volver a crearlos en el orden correcto). El ejemplo más obvio: has hecho un sustrato para poner textos, campos de entrada y botones encima. Si ahora lo borras y lo creas, cubrirá todo lo que te gustaría ver encima como lo más nuevo.

He preguntado al Servicio de Atención al Cliente con una sugerencia.

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

Lo conseguí enseguida en ....

Anton Timofeev 2010.05.27 12:27
La regla de secuencia de dibujo actual es simple y suficiente para el control del dibujo. Ordenar por nombre en algunos casos da un control más flexible sobre la secuencia de renderizado - solución simple para la tarea específica descrita en este foro (pequeño inconveniente), pero obligará a todos los usuarios a considerar cuidadosamente el nombre al añadir cualquier objeto (incluyendo los que no son MQL) (gran inconveniente).
La secuencia de renderizado en la superposición de objetos en MT5 ya se utiliza en la práctica (fondo, botones, etc.). No me he quejado de los problemas: todo se resuelve de forma bastante sencilla mediante algoritmos.

¿quién iba a dudar de que para ellos es, por así decirlo, una solución "sencilla y suficiente para controlar el renderizado"? :))))

a mi comentario:

ForexTools:

el hecho de que otros no se hayan quejado no significa que no haya ningún problema, tal vez porque nadie se ha molestado con la interfaz ;)

respondió


Pasando el rato:

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

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

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

Hemos hecho muchas pruebas internas, hemos desarrollado interfaces y juegos. No hay ningún problema como tal con el orden de renderización, simplemente cambia tu enfoque teniendo en cuenta el orden.

Buen argumento: los juegos Ttris y Miner se utilizaron para depurar soluciones para futuras interfaces comerciales :)))

Y el resultado final es su veredicto:

Más arriba he descrito con bastante detalle la razón por la que no haremos cambios. Lo repito en pocas palabras: por comodidad en un caso concreto, no se puede complicar la vida a los demás en todos los demás casos.

Si en la F4 había al menos un orden de ubicación de los objetos de la carta (por nombres de objetos), en la 5 hemos hecho una baraja autodidacta y nos han sugerido que "cambiemos nuestro enfoque" a la hora de escribir programas MQL5.


TOTAL: ¿qué opinan los compañeros de código? ¿Necesita un mecanismo para controlar la colocación de objetos en vertical? He sugerido tres opciones:

1) antiguo - por nombres de objetos

2) normal - con la adición de la propiedad Z-orden a cada objeto del gráfico

3) procedimental - utilizando las funciones BringToFront, SendToBack, InFrontOf, BehindOf

o aceptar la única opción de los desarrolladores: en caso de borrado, redibujar completamente todos(!!!!) los objetos en el orden requerido.

¿Quién tiene alguna idea al respecto?


 
2)
 
No lo entiendo bien. En MT5, los objetos gráficos no se ordenan en profundidad por el nombre del objeto, sino por la hora de creación?
 
Integer >>:
Не совсем понял. В МТ5 графические объекты в глубину располагаются не по имени объекта а по времени создания?
¡Exactamente! Hay un simple script aquí para comprobar
 

.

Estoy a favor de 2) o al menos 1)

Y el procesal, ¿quién sabe?


también propongo mi propia variante

¡¡¡¡¡todos a favor de las hojas de estilo en cascada!!!!!

si tu en mkl5 un montón de "grandes"

 

2)

En todo caso, el hecho de que el orden de los objetos esté determinado por el momento de la creación es sólo una desventaja para el mapeo.

de forma inequívoca - esto es un descuido e ignorar el problema por parte de las metacomillas.

Al fin y al cabo, en el caso de la ordenación por nombre, el programador tiene al menos alguna oportunidad de ordenar a su discreción,

y con la fecha de creación incluso esta posibilidad desaparece.

Deberías devolver el 1 o mejor el 2. Sólo añadiría otra propiedad conveniente al objeto.

 

Por supuesto, para la coordenada Z, es en el espíritu de OOP.
Estoy a favor de la 2).

 
Estoy a favor del orden z/índice z
 

2) - La mejor opción.

 

1. Por supuesto, se puede hablar de características no documentadas. Y esto se ha hecho muchas veces. Pero para encontrar soluciones. No cambiar el comportamiento indocumentado.

2. Hemos recibido muchas más peticiones (más que los participantes en esta discusión) para cambiar la forma en que se renderizan los objetos. Sí, en Five hicimos un orden simple y natural por tiempo de creación del objeto (sin embargo, esto tampoco está documentado). ¿Qué hacemos ahora?

3. ¡No hacemos nada! Porque con la ordenación actual podemos simplemente recrear un grupo de objetos, lo que era imposible con la ordenación por nombre.

 

stringo писал(а) >>

Al igual que con la ordenación actual, se puede volver a crear un grupo de objetos, lo que no era posible con la ordenación por nombre.

Si el usuario sujeta un objeto con el ratón, se rompe todo. ¿Lo tienes en cuenta? ¿Por qué era imposible?