Discusión sobre el artículo "Interfaces gráficas X: Gestión ampliada de las listas y tablas. Optimización de código (build 7)" - página 6

 
Anatoli Kazharski:

Bueno, no estás acostumbrado a los "rediseños de ida y vuelta". )

Probablemente habrá un nuevo artículo la semana que viene. Presentaré la primera versión del campo de entrada multilínea. En artículos posteriores, iré añadiendo poco a poco todo lo discutido en privado y en el foro.

Yo añadiría los métodos ItemsSelectedTotal(); ItemsUnselectedTotal(); junto con ItemsTotal();
 
Artyom Trishkin:
Yo añadiría los métodos ItemsSelectedTotal(); ItemsUnselectedTotal(); junto con ItemsTotal();

¿A CListView y CCheckBoxList?

Lo haré, pero no en el próximo artículo. Así que será un artículo bastante grande.

 
Anatoli Kazharski:

¿A CListView y CCheckBoxList?

Lo añadiré, pero no en el próximo artículo. Este es un artículo bastante extenso.

Sí, en ellos. De acuerdo, gracias.
 

Tol, ¿cómo puedo averiguar mediante programación qué casilla de verificación de un elemento de la lista está marcada. Sin hacer clic en ella.

Necesito hacer un array de todos los elementos marcados de la lista.

Estoy perplejo. Por favor, dime en qué dirección mirar.

 
Artyom Trishkin:

Tol, ¿cómo puedo averiguar mediante programación qué casilla de verificación de un elemento de la lista está marcada. Sin hacer clic en ella.

Necesito hacer un array de todos los elementos marcados de la lista.

Estoy perplejo. Por favor, dime en qué dirección mirar.

CCheckBoxList::GetItemState()
 
Anatoli Kazharski:
CCheckBoxList::GetItemState()

Gracias. Eso es lo que hice. Estaba haciendo un bucle desde 0 hasta ItemsTotal(). Ha sido culpa mía, por eso fallaba.

¿Puedes decirme si los estados de las casillas de verificación se restablecen al cambiar de timeframe?

En caso afirmativo, ¿cuáles son las formas de evitar este desagradable momento? (A mí se me restablecen, tal vez esté haciendo algo mal).

 
Artyom Trishkin:

Gracias. Eso es lo que hice. Estaba haciendo un bucle de 0 a ItemsTotal(). Ha sido culpa mía, por eso fallaba.

¿Podría decirme si los estados de las casillas de verificación se restablecen al cambiar de marco temporal?

En caso afirmativo, ¿cuáles son las formas de evitar este desagradable momento? (Yo las reseteé - quizás estoy haciendo algo mal).

Es necesario escribir en un archivo. Y leerlo al instalar GUI. Este es el tema de un futuro artículo y todavía hay un largo camino por recorrer.

 
Anatoli Kazharski:

Tienes que escribir en un archivo. Y leerlo al instalar la GUI. Este es el tema de un futuro artículo y aún queda mucho camino por recorrer.

Yo ya lo estoy haciendo. No esperaba una respuesta rápida ;)
 

Anatol, estoy intentando escribir los precios de oferta de los caracteres escritos en las filas de la tabla en la columna 0 a la tabla en el temporizador:

//+------------------------------------------------------------------+
//| Temporizador|
//+------------------------------------------------------------------+
void CProgram::OnTimerEvent(void)
  {
   CWndEvents::OnTimerEvent();
   //--- Pausa entre la actualización de listas y tablas
   if(m_counter1.CheckTimeCounter()) {
      uint sz=m_table_main_symbol_list.RowsTotal();
      for(uint i=1; i<sz; i++) {
         string sy=m_table_main_symbol_list.GetValue(0,i);
         MqlTick tick;
         if(sy!=NULL && sy!="") {
            if(SymbolInfoTick(sy,tick)) {
               int dg=(int)SymbolInfoInteger(sy,SYMBOL_DIGITS);
               m_table_main_symbol_list.SetValue(1,i,DoubleToString(tick.bid,dg),dg);
               m_table_main_symbol_list.TextColor(1,i,clrDimGray);
               //m_table_main_symbol_list.UpdateTable();
               }
            }
         }
      //--- Redibujar el gráfico
      m_chart.Redraw();
      }
//--- Pausa entre actualizaciones de la barra de estado
   if(m_counter2.CheckTimeCounter()) {

      //--- Redibujar el gráfico
      m_chart.Redraw();
      }
  }
//+------------------------------------------------------------------+

Si se hace sin UpdateTable(), no aparecen datos en las celdas de la tabla. Si se actualiza la tabla cada vez que aparece un nuevo tick, se hace imposible trabajar con la tabla - parpadea, la fila resaltada parpadea, etc....

¿Cómo salir de esta situación?

 
Artyom Trishkin:

Anatole, Estoy tratando de escribir en una tabla en un temporizador a la columna con índice 1 los precios de oferta de los caracteres introducidos en las filas de la tabla en la columna 0:

...

Si lo hago sin UpdateTable(), no aparece ningún dato en las celdas de la tabla. Si actualizo la tabla cada vez que recibo un nuevo tick, entonces se hace imposible trabajar con la tabla - parpadea, la fila seleccionada parpadea, etc....

¿Cómo salir de esta situación?

No hay datos suficientes para reproducirlo. Adjunta un ejemplo completo para que pueda replicarlo yo mismo.