Discusión sobre el artículo "Interfaces gráficas XI: Campos de edición y combobox en las celdas de la tabla (build 15)" - página 3

 
Oleksii Chepurnyi:

Sí.

De hecho, sí. Recuerdo algo así... Ahora sólo tengo que recordar lo que he cambiado :)

Creo que añadí esto. Claves.mqh

¡muchas gracias!
 
Oleksii Chepurnyi:

...

Creo que estaba añadiendo esto. Claves.mqh

Añadido a la última actualización de la biblioteca. Estará disponible en el próximo artículo como un apéndice.

Además, hay algunas actualizaciones para las tablas en la clase CTable.

La última versión de esta clase se puede descargar en este artículo: Visualización de resultados de optimización por criterio seleccionado

Un poco más tarde se añadirá a la última versión de la biblioteca que se encuentra en la base de código: EasyAndFast

 
Anatoli Kazharski:

Añadido a la última actualización de la biblioteca. Estará disponible en el próximo artículo como un apéndice.

Además, hay algunas actualizaciones para las tablas en la clase CTable.

La última versión de esta clase puede descargarse en este artículo: Visualización de resultados de optimización por criterio seleccionado

Un poco más tarde, se añadirá la última versión de la biblioteca que está en la base de código: EasyAndFast

si es posible, por favor, añada esta característica:

Al especificar el tipo de datos de la celda, especificar cuántos caracteres después del punto decimal hay que dibujar:

Ejemplo: m_table.DataType(columna,TYPE_DOUBLE,2);

o especifique el número de caracteres en una función separada

Ejemplo: m_table.DataDigits(columna,2);

 
Andrii Djola:

si es posible, añada más funciones de este tipo:

Al especificar el tipo de datos de la celda, especifique cuántos caracteres después del punto decimal debe dibujar:

...

Ahora también puede especificar el número de decimales:

//+------------------------------------------------------------------+
//| Rellena el array por los índices especificados ||
//+------------------------------------------------------------------+
void CTable::SetValue(const uint column_index,const uint row_index,const string value="",const uint digits=0,const bool redraw=false)
  {
//--- Comprueba si está fuera de rango
   if(!CheckOutOfRange(column_index,row_index))
      return;
//--- Establece el valor en un array:
// Cadena
   if(m_columns[column_index].m_data_type==TYPE_STRING)
      m_columns[column_index].m_rows[row_index].m_full_text=value;
//--- Real
   else if(m_columns[column_index].m_data_type==TYPE_DOUBLE)
     {
      m_columns[column_index].m_rows[row_index].m_digits=digits;
      double type_value=::StringToDouble(value);
      m_columns[column_index].m_rows[row_index].m_full_text=::DoubleToString(type_value,digits);
     }
//--- Tiempo
   else if(m_columns[column_index].m_data_type==TYPE_DATETIME)
     {
      datetime type_value=::StringToTime(value);
      m_columns[column_index].m_rows[row_index].m_full_text=::TimeToString(type_value);
     }
//--- Cualquier otro tipo se establecerá como cadena
   else
      m_columns[column_index].m_rows[row_index].m_full_text=value;
//--- Ajusta y guarda el texto si no cabe en la celda
   m_columns[column_index].m_rows[row_index].m_short_text=CorrectingText(column_index,row_index);
//---Redibujar la celda si se especifica
   if(redraw)
      RedrawCell(column_index,row_index);
  }
 
Anatoli Kazharski:

Ahora también puede especificar el número de decimales:

sí, pero cuando introduces un punto decimal en el campo de entrada, entonces todo lo que hay después del punto decimal se descarta, ¡tuve que modificarlo un poco!

¡¡¡¡pero has hecho un trabajo tremendo!!!!

 
También me he encontrado con este problema al llamar a la función Reconstruir, no se muestran las imágenes de los botones
 
Andrii Djola:
También me he encontrado con este problema al llamar a la función Rebuild, las imágenes de los botones no se dibujan

Esto se debe a que en el método CTable::Rebuilding() se borran todas las celdas y se crean otras nuevas. Por lo tanto, después de reconstruir la tabla, todas las celdas deben ser rellenadas con datos de nuevo.

Andrii Djola:

Sí, pero cuando se introduce un valor con una comaen el campo de entrada, entonces todo lo que hay después de la coma se descarta, ¡tuve que modificarlo un poco!

Muéstrame en detalle lo que quieres decir.

 
Los relleno con la misma función que utilicé para crear la tabla, pero no dibuja nada.
 
Andrii Djola:
Los relleno con la misma función que utilicé para crear la tabla, pero no hace ningún dibujo.

Muéstrame lo que estás haciendo y cómo lo estás haciendo. Sin verlo, es difícil sugerir algo.

 
Anatoli Kazharski:

Muéstrame lo que haces y cómo lo haces. Sin verlo, es difícil decirte nada.

He borrado este código, pero si puedo reproducirlo, ¡lo publicaré aquí!