Galería de interfaces de usuario escritas en MQL - página 45

 
hini #:
He descargado el gif, no estoy seguro de si es un problema con mi sistema operativo. Sólo informo.
Gracias por informarme. No he probado esta opción de redimensionar el gráfico. Comprobaré el evento en OnChartEvent().


 
hini #:
He descargado el gif, no estoy seguro de si es un problema con mi sistema operativo. Sólo informo.
Sí, he encontrado la causa. Cambiar el tamaño del gráfico de diferentes maneras genera diferentes combinaciones de eventos OnChartEvent(). Al cambiar manualmente, el evento OnChartChange llega 2 veces (lo he comprobado). Al cambiar de gráfico, una o dos veces. Al cerrar la ventana del navegador una vez, pero otros eventos llegan como CharEvent Custom. Al mover la ventana del terminal a otro monitor - una vez.

En general, es necesario escribir condiciones que capturen todas las variantes de combinaciones de eventos cuando se cambian los tamaños de los gráficos.
 
Me gustaría añadir por qué no se pueden comprobar simplemente los tamaños de los gráficos comparándolos con los registrados anteriormente.

Al cambiar de gráfico, las funciones ChartGetInteger() de los tamaños de los gráficos envían valores incorrectos, lo que hace que el algoritmo "piense" que se han cambiado los tamaños y la barra de tareas "salte" de su sitio. He tenido que trabajar duro para sortear este problema. Ahora voy a comprobar qué valores de tamaños de gráficos se reportan a las funciones ChartGetInteger() en estos eventos.
 
Es decir, al cambiar de gráfico, los tamaños no cambian, sino que se produce el evento ChartChange, pero la función ChartGetInteger() por alguna razón SIEMPRE informa de los tamaños 480 (ancho) y 167 (alto). Siempre y en cualquier tamaño de gráfico. (Build 2470. Todavía no he comprobado la nueva).
 
En la nueva versión (4435), al cambiar de gráfico, la función ChartGetInteger() devuelve los valores 490 ancho, 103 alto. Los tamaños reales del gráfico son 1068 de ancho y 438 de alto.

Observe que los tamaños no cambian al cambiar de gráfico.
 
Basándome en estas condiciones, seguiré estudiando las peculiaridades de los eventos entrantes para distinguir los cambios reales en el tamaño de los gráficos de los erróneos. Y cuando los desarrolladores arreglen la función, me limitaré a simplificar el código. :)
 
He probado diferentes eventos de redimensionamiento de gráficos. El problema parece ser sólo con el cambio de gráfico, donde no se produce ningún cambio de tamaño real. Pero la función ChartGetInteger() informa persistentemente de 490 a 103.

Todo va bien en los otros eventos.


Arreglo de la barra de tareas en la próxima versión.
 
Реter Konow redimensionamiento del gráfico. El problema sólo parece ocurrir cuando se cambia el gráfico, en cuyo caso no se produce ningún cambio de tamaño. Sin embargo, la función ChartGetInteger() reporta consistentemente 490 a 103.

Todos los demás eventos son correctos.


El problema de la barra de tareas se solucionará en la próxima versión.
Gracias por vuestro duro trabajo. Espero con interés su trabajo.
 
hini #:
Gracias por el trabajo realizado. Estoy deseando ver su trabajo.
Muchas gracias.
 

Limpiado, recompilado, reinstalado.

Voy a enumerar lo que noté, sin ningún orden en particular:

1. Después de abrir una ventana, no aparece nada en la barra de tareas. 2. Tras minimizar la ventana, aparece el botón. Tras desplegarla no desaparece. Si se concibe el concepto de comportamiento "como en Windows", debería aparecer enseguida.

2. 2. Con una ventana dinámica, después de pasar el cursor por encima de los botones de minimizar y maximizar, éstos permanecen resaltados mientras el cursor esté dentro de la ventana.

3. Con una ventana dinámica, la cabecera se vuelve gris después de expandirse, permanece gris después de volver, y restaura el color sólo después de minimizar y volver.

4. La ventana expandida no oculta las escalas de tiempo y precio del gráfico.

5. Una tabla colocada bajo"H_TAB, "Informe" mediante el comando "i, AT, _X2X, "MF", 5, _Y2H, "Informe", 5," ignora la configuración del borde izquierdo. Lo mismo con "i, AT, _X2X, "MF", 5, _Y2Y, "MF", 20,".

6. Lo más importante. El hecho de que la ventana dinámica no permita V_BOX ha cambiado completamente mi diseño. Las dos tablas estaban en sus propias cajas para facilitar el posicionamiento y tener desplazamiento. Ahora que he tenido que dibujarlas directamente en el "MF", no puedo posicionar la tabla inferior inmediatamente debajo de la superior. Vinculación "i, AT, _X2X, "MF", 5, _Y2H, "Table1", 5,"no funciona porque el nombre del grupo Tabla1 no es un elemento. He conseguido enlazar con la última fila de la tabla, pero con una tabla dinámica esto no es una opción. No he averiguado cómo hacer referencia a la tabla y no al grupo. Si se pretende añadir filas a la tabla de forma programática, entonces se supone la forma de dirigirse a la tabla.

7. Una cosa más. Tu ventana dinámica es una ventana par que se puede expandir y colapsar. No me gustaría una ventana, sino un escritorio. Como en tu constructor. Para que

a) se abriera expandida a la vez, cubriendo todo el gráfico

b) no tenga cabecera y marco (sólo barra de tareas)

c) no se pueda contraer

d) permita colocar elementos como una ventana normal.

Es decir, sustituir DINAMIC por FULLSCREEN o DESKTOP. Ya tiene la base para ello.