Discusión sobre el artículo "Interfaces gráficas IV: Elementos informativos de la interfaz (Capítulo 1)"
Artículo publicado Graphical Interfaces IV: Interface Information Elements (Capítulo 1):
Autor: Anatoli Kazharski
Anatoly, excelente serie de artículos, y pertinentes. Podría por favor Publicar una lista de artículos anteriores al principio de cada artículo. La búsqueda en el sitio no siempre funciona correctamente) 2. Hacer alguna suma de conocimientos en forma de ejemplo. No hay necesidad de masticarlo, creo, que lee sus artículos - va a entender. Pero sería interesante ver el resultado divertido a la vez. 3. Buena suerte, espero continuar)
Gracias.
Usted puede escribir un artículo separado más adelante, en el que como un ejemplo va a crear una aplicación con una interfaz gráfica con todos los controles de la biblioteca. Y ya en este artículo hacer el contenido completo con enlaces a todos los artículos. Esta opción será conveniente para aquellos que sólo quieren utilizar la biblioteca en sus MQL-aplicaciones sin entrar en cómo se organiza.
Gracias.
Puedes escribir un artículo aparte en el que crees una aplicación GUI con todos los controles de la librería como ejemplo. Y ya en este artículo hacer el contenido completo con enlaces a todos los artículos.
Se ha publicado el nuevo artículo Interfaces gráficas IV: Elementos de interfaz informativos (Capítulo 1):
Autor: Anatoli Kazharski
Tol, no he mirado las dos últimas versiones, pero antes de ellas hay un bug en CCtatusBar:
Si la barra de estado m_status_bar.ValueToItem() se está actualizando en el temporizador, entonces si la ventana principal se minimiza, la barra de estado se cuelga en el gráfico todo el tiempo - no se minimiza. Tengo que controlar constantemente en mi CProgram de esta manera:
if(m_status_bar.IsDropdown()) { m_status_bar.ValueToItem(....); }Para solucionarlo, necesitas añadir tal comprobación en CCtatusBar en el método ValueToItem():
//+------------------------------------------------------------------+ //| Establece el valor en el índice especificado || //+------------------------------------------------------------------+ void CStatusBar::ValueToItem(const uint index,const string value) { //--- Comprueba si está fuera de rango uint array_size=::ArraySize(m_items); if(array_size<1 || m_wnd.IsMinimized()) return; //--- Ajuste el valor del índice si está fuera de rango uint correct_index=(index>=array_size)? array_size-1 : index; //--- Establecer el texto transmitido m_items[correct_index].Description(value); } //+------------------------------------------------------------------+
Entonces todo irá bien, y no tendrás que recordarlo constantemente y controlarlo en tu programa.
...
Si la barra de estado m_status_bar.ValueToItem() se está actualizando en el temporizador, entonces si la ventana principal se minimiza, la barra de estado cuelga del gráfico todo el tiempo - no se minimiza.
...
Compruébalo. Casi todos los ejemplos de prueba de los artículos tienen una línea de estado con una actualización en el temporizador. No se reproduce el comportamiento descrito.
Quería grabar un vídeo de cómo funciona, pero por desgracia, después de volver a su versión de ValueToItem(), también perdí este comportamiento. Pero estaba ahí... Tal vez porque el mercado está cerrado ahora....
Lo dejaré como sugerí, para no volver a encontrarme con este fallo en algún momento.
Lo estoy probando en 4.
El comportamiento es estándar.
Aprovecho para preguntar:
¿cómo se pueden usar iconos en la barra de estado?
Como un indicador de conexión o algo así...
)
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Interfaces gráficas IV: Elementos informativos de la interfaz (Capítulo 1):
En este momento, la librería para la creación de las interfaces gráficas contiene el formulario y varios controles que pueden ser adjuntados a este formulario. Ahora tenemos todo preparado para considerar la cuestión del modo de ventanas múltiples, pero nos ocuparemos de ello en el segundo capítulo de este artículo. Primero, vamos a escribir las clases que nos permitirán crear los elementos informativos de la interfaz, tales como: la “barra de estado” y la “descripción emergente”.
En este artículo vamos a crear la versión simple de la barra de estado, sin posibilidad de adjuntar los menús contextuales a sus elementos. Igual que otros elementos de la interfaz, las barra de estado va a componerse de varios objetos primitivos:
Fig. 1. Partes integrantes del elemento “Barra de estado”.
Autor: Anatoli Kazharski