Обсуждение статьи "Графические интерфейсы XI: Поля ввода и комбо-боксы в ячейках таблицы (build 15)" - страница 3

 
Oleksii Chepurnyi:

...

По-моему, вот это добавлял. Keys.mqh

Добавил в последнее обновление для библиотеки. Будет доступно в следующей статье, как приложение.

Кроме этого, есть некоторые обновления для таблиц в классе CTable.

Последнюю версию этого класса можно скачать в этой статье: Визуализация результатов оптимизации по выбранному критерию

Чуть позже будет добавлено в последнюю версию библиотеки, которая находится в базе кода: EasyAndFast

 
Anatoli Kazharski:

Добавил в последнее обновление для библиотеки. Будет доступно в следующей статье, как приложение.

Кроме этого, есть некоторые обновления для таблиц в классе CTable.

Последнюю версию этого класса можно скачать в этой статье: Визуализация результатов оптимизации по выбранному критерию

Чуть позже будет добавлено в последнюю версию библиотеки, которая находится в базе кода: EasyAndFast

если это возможно, то добавьте еще такую возможность:

при указании типа данных ячейки указать сколько символов после запятой рисовать:

Пример: m_table.DataType(column,TYPE_DOUBLE,2);

или задать количество символов отдельной функцией

Пример: m_table.DataDigits(column,2);

 
Andrii Djola:

если это возможно, то добавьте еще такую возможность:

при указании типа данных ячейки указать сколько символов после запятой рисовать:

...

Сейчас тоже можно указывать количество знаков после запятой:

//+------------------------------------------------------------------+
//| Заполняет массив по указанным индексам                           |
//+------------------------------------------------------------------+
void CTable::SetValue(const uint column_index,const uint row_index,const string value="",const uint digits=0,const bool redraw=false)
  {
//--- Проверка на выход из диапазона
   if(!CheckOutOfRange(column_index,row_index))
      return;
//--- Установить значение в массив:
//    Строковое
   if(m_columns[column_index].m_data_type==TYPE_STRING)
      m_columns[column_index].m_rows[row_index].m_full_text=value;
//--- Вещественное
   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);
     }
//--- Время
   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);
     }
//--- Любой другой тип будет установлен, как строка
   else
      m_columns[column_index].m_rows[row_index].m_full_text=value;
//--- Скорректировать и сохранить текст, если не помещается в ячейке
   m_columns[column_index].m_rows[row_index].m_short_text=CorrectingText(column_index,row_index);
//--- Перерисовать ячейку, если указано
   if(redraw)
      RedrawCell(column_index,row_index);
  }
 
Anatoli Kazharski:

Сейчас тоже можно указывать количество знаков после запятой:

да, но при вводе в поле ввода значения с запятой, то все что после запятой отбрасывается, пришлось немного модифицировать!

но работу Вы и так проделали колоссальную!!!!

 
еще столкнулся с такой проблемой при вызове функции Rebuild картинки на кнопках не прорисовываются
 
Andrii Djola:
еще столкнулся с такой проблемой при вызове функции Rebuild картинки на кнопках не прорисовываются

Это потому, что в методе CTable::Rebuilding() все ячейки удаляются и создаются новые. Поэтому после перестройки таблицы все ячейки нужно заново заполнять данными. 

Andrii Djola:

да, но при вводе в поле ввода значения с запятой, то все что после запятой отбрасывается, пришлось немного модифицировать!

Покажите подробнее, что имеется в виду.

 
я заполняю их, той же функцией что и при создании таблицы, но картинки не рисует
 
Andrii Djola:
я заполняю их, той же функцией что и при создании таблицы, но картинки не рисует

Покажите, что и как делаете. Не видя этого, сложно что-то подсказать.

 
Anatoli Kazharski:

Покажите, что и как делаете. Не видя этого, сложно что-то подсказать.

я удалил этот код, но если получится его воспроизвести, я выложу здесь!

 

еще такой вопрос, не пойму как узнать значение ячейки с CELL_CHECKBOX, GetValue(c,r) возвращает пустую строку в обоих вариантах

все разобрался

Причина обращения: