Discusión sobre el artículo "Interfaces gráficas IX: Elementos "Indicador de progreso" y "Gráfico lineal" (Capítulo 2)"
¡Super!
Desde mi punto de vista, ahora usted está definitivamente por delante de todos los desarrolladores de gráficos MQL.
He concluido por mí mismo que tengo algo a lo que aspirar.
¡El resultado es increíble!
Buena suerte en el desarrollo futuro.
¡Super!
Desde mi punto de vista, ahora usted está definitivamente por delante de todos los desarrolladores de gráficos MQL.
He concluido por mí mismo que tengo algo a lo que aspirar.
¡El resultado es increíble!
Buena suerte en el desarrollo futuro.
Siempre hay algo a lo que aspirar. )
Aquí, mira las obras del maestro, que te inspirarán aún más: Yuri Kulikov >>>>
Siempre hay algo por lo que luchar. )
Aquí tienes un vistazo a las obras del maestro que te inspirarán aún más: Yuri Kulikov >>>.
¡Gracias, realmente impresionante!
Quería hacerte una pregunta...
Has creado tu proyecto usando OOP. Has implementado casi todos los controles básicos. Has creado una rica librería...
Al mismo tiempo, ¿cuánto del código ya has utilizado en tu trabajo?
Por ejemplo, ¿cuánto usaste de la librería de controles en MT, Canvas, etc...?
Personalmente, tuve que crear todo desde cero y en una tecnología completamente nueva, en la que era imposible utilizar cosas ya trabajadas.
En el futuro, el desarrollo de mi proyecto tampoco podrá ser continuado por otros desarrolladores y no podrán participar en su desarrollo, porque la tecnología no es familiar para nadie más que para mí.
En tu caso, es lo contrario... Todos los programadores podrán participar en la mejora y desarrollo de tu librería.
Y lo único que puede impedirlo es la pereza.
Al mismo tiempo, ¿cuánto del código ya has utilizado en tu trabajo?
Por ejemplo, ¿cuánto usaste de la librería de controles en MT, Canvas, etc.?
En el primer artículo de esta serie, respondí a esta pregunta: GUIs I: Preparando la Estructura de la Librería (Capítulo 1). Allí se muestra la estructura de las clases de la librería estándar para trabajar con objetos-primitivos gráficos estándar.
La lista de clases que uso en el proyecto es:
- CChartObjectRectLabel - etiqueta rectangular.
- CChartObjectEdit - campo de entrada.
- CChartObjectLabel - etiqueta de texto.
- CChartObjectBmpLabel - etiqueta gráfica.
- CChartObjectButton - botón.
- CCanvas - proporciona la creación de un recurso gráfico (con o sin vinculación a un objeto gráfico) y el dibujo de primitivas gráficas.
Lo ideal sería que sólo quedara una clase: CCanvas. Un tema útil sobre este tema está aquí: Doing a crowdsource project on Canvas >>>
Antes de empezar el desarrollo, estudié la biblioteca estándar para la creación de interfaces gráficas y la versión de Dmitry Fedoseev. Luego hice una lista de lo que personalmente me falta y empecé a trabajar en el proyecto. La lista de lo que falta por hacer sigue siendo bastante grande y se actualiza constantemente con sugerencias de otros usuarios interesados. Lo que pasa es que todo se está haciendo sobre todo en correspondencia personal. También estamos trabajando en los fallos y errores que se van revelando poco a poco al utilizar la biblioteca en nuestros proyectos.
Lo único que puede impedirlo es la pereza.
No hay ningún problema con ello. )
En el primer artículo de esta serie respondí a esta pregunta: Interfaces gráficas I: Preparando la Estructura de la Librería (Capítulo 1). Allí se muestra la estructura de clases de una librería estándar para trabajar con objetos gráficos primitivos estándar.
La lista de clases que uso en el proyecto es:
- CChartObjectRectLabel - etiqueta rectangular.
- CChartObjectEdit - campo de entrada.
- CChartObjectLabel - etiqueta de texto.
- CChartObjectBmpLabel - etiqueta gráfica.
- CChartObjectButton - botón.
- CCanvas - proporciona la creación de un recurso gráfico (con o sin vinculación a un objeto gráfico) y el dibujo de primitivas gráficas.
Lo ideal sería que sólo quedara una clase: CCanvas. Tema útil sobre este tema: Hacer un proyecto crowdsource sobre Canvas >>>
Antes de empezar el desarrollo, estudié la biblioteca estándar para la creación de interfaces gráficas y la versión de Dmitry Fedoseev. Luego hice una lista de lo que personalmente me falta y empecé a trabajar en el proyecto. La lista de lo que falta por hacer sigue siendo bastante grande y se actualiza constantemente con sugerencias de otros usuarios interesados. Lo que pasa es que todo se está haciendo sobre todo en correspondencia personal. También estoy trabajando en los bugs y errores que se van revelando poco a poco al utilizar la librería en mis proyectos.
No hay ningún problema con eso. )
Gracias por la respuesta detallada. )
Le deseo más trabajo productivo.
Anatoly, disculpa la intromisión, pero me gustaría saber cómo es posible actualizar la barra de progreso dentro de un bucle con cálculos pesados.
Por ejemplo, tenemos una barra de progreso m_progress_bar, tenemos un bucle dentro de CProgram
m_progress_bar.Show(); // no tiene sentido, ya que ya es visible inmediatamente al mostrar la ventana (m_window.Show()) a la que está vinculada, // y me gustaría crearlo en estado oculto, y mostrarlo cuando sea necesario int total=1000; // un cierto número de iteraciones del bucle, que desea mostrar con la barra de progreso for(int i=0;i<total;i++) { Func(); // Función con cálculos pesados en cada iteración del bucle m_progress_bar.Update(i,total); // no hace nada: la barra de progreso está en "colgado" - su estado inicial. } //--- la barra de progreso debe ocultarse cuando el ciclo se haya completado, //--- y en esta situación no se actualiza durante el bucle y luego se oculta superponiéndolo con otro objeto m_progress_bar.Hide(); // no oculta la barra de progreso por alguna razón, tengo que ocultarla bajo otro objeto gráfico.
¿Podrías explicarme en un ejemplo tan "abstracto" lo que no entiendo?
No estaría mal pasar algunos datos.
¿Qué te parece esto?
m_progress_bar.Update(i,total);
¿Qué te parece esto?
No funciona.
¿Por qué no funciona?
//+------------------------------------------------------------------+ //|| Actualiza la barra de progreso| //+------------------------------------------------------------------+ void CProgressBar::Update(const int index,const int total) { //--- Establecer nuevo índice CurrentIndex(index); //--- Establecer nuevo rango StepsTotal(total); //--- Calcular la anchura del indicador double new_width=(m_current_index/m_steps_total)*m_bar_bg.XSize(); //--- Ajustar si es menor que 1 if((int)new_width<1) new_width=1; else { //--- Ajustar a la anchura del marco int x_size=m_bar_bg.XSize()-(m_bar_border_width*2); //--- Ajustar si fuera de los límites if((int)new_width>=x_size) new_width=x_size; } //--- Establecer un nuevo ancho para el indicador m_indicator.X_Size((int)new_width); //--- Calcula el porcentaje y forma una cadena double percent =m_current_index/m_steps_total*100; string desc =::DoubleToString((percent>100)? 100 : percent,m_digits)+"%"; //--- Establecer el nuevo valor m_percent.Description(desc); } //+------------------------------------------------------------------+

- 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 IX: Elementos "Indicador de progreso" y "Gráfico lineal" (Capítulo 2):
El segundo capítulo de la novena parte de la serie estará dedicada a los elementos «Indicador de progreso» y «Gráfico lineal». Como siempre mostraremos los ejemplos detallados de cómo puede usar estos elementos en sus aplicaciones MQL.
Vamos a nombrar todos los componentes que van a formar parte del elemento «Indicador de progreso» en nuestra librería.
Fig. 1. Partes integrantes del control “Indicador de progreso”.
Autor: Anatoli Kazharski