Discusión sobre el artículo "Interfaces gráficas IX: Elementos "Indicador de progreso" y "Gráfico lineal" (Capítulo 2)" - página 3

 

Anatol, ¿puedes decirme si es posible cambiar dinámicamente la descripción del proceso en la barra de progreso?

Supongamos que tenemos un array de nombres de símbolos. Hacemos un bucle a través de este array y obtenemos los nombres de los caracteres. Luego cada símbolo es procesado por el programa para obtener datos de él. El ciclo global se muestra en una barra de progreso, pero me gustaría mostrar el proceso de procesamiento de cada símbolo individual. En consecuencia, y firmar el nombre del proceso "procesamiento CMG", entonces, al procesar el siguiente, ya escribir otro nombre del proceso: "procesamiento EQIX", etc.

No se sabe de antemano qué símbolos pueden estar en la matriz - es decir, no será posible preparar un montón de barras de progreso, y no es óptimo con más de mil nombres de diferentes símbolos....

 
Artyom Trishkin:

Anatol, ¿puedes decirme si es posible cambiar dinámicamente la descripción del proceso en la barra de progreso?

Supongamos que tenemos un array de nombres de símbolos. Hacemos un bucle a través de este array y obtenemos los nombres de los caracteres. Luego cada símbolo es procesado por el programa para obtener datos de él. El ciclo global se muestra en una barra de progreso, pero me gustaría mostrar el proceso de procesamiento de cada símbolo individual. En consecuencia, y firme el nombre del proceso "procesando CMG", luego, al procesar el siguiente, ya escriba otro nombre del proceso: "procesando EQIX", etc.

No se sabe de antemano qué símbolos puede haber en la matriz, es decir, no se puede preparar un montón de barras de progreso, y no es óptimo con más de mil nombres de símbolos diferentes.....

Ahora no existe este método. En la próxima actualización añadiré esta función para cada elemento que tenga una descripción de texto. Es decir, será posible cambiar el texto después de crear el elemento.
 
Anatoli Kazharski:
Ahora mismo no existe este método. En la próxima actualización añadiré esta característica para cada elemento que tenga una descripción de texto. Es decir, será posible cambiar el texto después de crear el elemento.

Gracias, lo espero con impaciencia ;)

Pregunta: en tus ejemplos tienes este código para construir una barra de progreso:

//+------------------------------------------------------------------+
//| Crea una barra de progreso|
//+------------------------------------------------------------------+
bool CProgram::CreateProgressBar(const int x_gap,const int y_gap)
  {
//--- Guardar el puntero al formulario
   m_progress_bar.WindowPointer(m_window);
//--- Coordenadas
   int x=m_window.X()+x_gap;
   int y=m_window.Y()+y_gap;
//--- Establecer propiedades antes de la creación
   m_progress_bar.YSize(15);
   m_progress_bar.BarYSize(11);
   m_progress_bar.BarXOffset(65);
   m_progress_bar.BarYOffset(2);
   m_progress_bar.BarBorderWidth(1);
   m_progress_bar.LabelText("Processing:");
   m_progress_bar.AreaColor(C'225,225,225');
   m_progress_bar.BarAreaColor(clrWhiteSmoke);
   m_progress_bar.BarBorderColor(clrWhiteSmoke);
   m_progress_bar.IsDropdown(true);
   m_progress_bar.AutoXResizeMode(true);
   m_progress_bar.AutoXResizeRightOffset(230);
//--- Creación de un elemento
   if(!m_progress_bar.CreateProgressBar(m_chart_id,m_subwin,x,y))
      return(false);
//--- Ocultar elemento
   m_progress_bar.Hide();
//--- Añade un puntero al elemento en la base
   CWndContainer::AddToElementsArray(0,m_progress_bar);
   return(true);
  }
//+------------------------------------------------------------------+

¿cuál es el signo del elemento desplegable para:

m_progress_bar.IsDropdown(true);

???

 
Artyom Trishkin:

Pregunta: usted tiene este código para construir una barra de progreso en sus ejemplos:

¿cuál es el propósito del elemento desplegable trait:

???

Para evitar mostrar la barra de progreso cuando el formulario está expandido, cuando no debería ser visible.
 
Anatoli Kazharski:
Para evitar mostrar la barra de progreso cuando el formulario está expandido, cuando no debería ser visible.
¿Esto se aplica a cualquier objeto que pueda construirse con su biblioteca?
 
Artyom Trishkin:
¿Esto se aplica a cualquier objeto que pueda construirse utilizando su biblioteca?
Sí. El método IsDropdown() está en la clase base CElement y está disponible para todos los elementos GUI.
 

Cambiar dinámicamente las propiedades de la barra de progreso no funciona.

Por ejemplo, quería cambiar el color:

   void              IndicatorColor(const color clr)    { m_indicator_color=clr;           }

Respuesta cero. Aparentemente, en el método Update, además de cambiar los valores de índice y total, es necesario escribir el otro m_indicator_color y así sucesivamente. De lo contrario, estos métodos no se aplican en ninguna parte, excepto durante la creación. ¿O era así como se pretendía?

 
Alexander Fedosov:

... De lo contrario, estos métodos no se aplican en ninguna parte, excepto en la creación. ¿O era así como se pretendía?

Sí, esta es una versión temporal. Pronto (en los próximos artículos) habrá actualizaciones masivas para todos los controles, donde se podrá cambiar cualquier propiedad en tiempo de ejecución.
 
Anatoli Kazharski:
Sí, esta es una versión temporal. Pronto (en los próximos artículos) habrá actualizaciones masivas para todos los controles, donde podrás cambiar cualquier propiedad en tiempo de ejecución.

Eso es emocionante. Mientras tanto, he encontrado una solución temporal:

//+------------------------------------------------------------------+
//|| 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 inferior a 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);
      //--- Corregir si fuera de los límites
      if((int)new_width>=x_size)
         new_width=x_size;
     }
//--- Establecer una nueva anchura 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);
   
   m_indicator.BackColor(m_indicator_color);
   m_indicator.Color(m_indicator_color);
  }
 
172218684:
Todos ustedes a este combate de oro gritando solo grupo 172218684 172218684 , seguirá obteniendo beneficios, solo aquí gritando Verificación - ¡la fuerza no tiene precio!

Mentiroso