При установке свойства HasCustomDrawCell = true у DataTreeGrid редактирование последнего стало практически невозможным. При занесении значений в редактируемую ячейку и последующем нажатии кнопки Enter ничего не происходит. Если вводить значение на протяжение нескольких секунд значение в ячейке (как будто по таймеру) сбрасывается в 0. И только если успеть ввести значение и перейти мышкой на другую ячейку, то при редактировании программно других ячеек (код вида Dataset.Edit() ……….. Dataset.Post()) выскакивает ошибка о том что dataset not in edit or insert mode.

Если убрать раскраску таблицы HasCustomDrawCell = false всё продолжает нормально работать.

Как реализовать одновременно работу события OnGetCellDrawInfo и возможность редактирования внутри таблицы?

Нравится

3 комментария

Здравствуйте!

Предоставьте следующую информацию:

  • Версия конфигурации
  • Версия бинарных фалов приложения
  • Какие доработки были выполнены для редактируемого грида
  • Редактируете реестр или деталь
  • Редактируете базовый реестр/деталь

TerrasoftSales 3.3.2.313

Создали собственный раздел, реестр и деталь для внесения плана и сравнение с фактом продаж

Для реестра, где необходима подкраска ячеек редактировали события:
OnAfterEdit (редактирование итоговых данных после правок в привязанном к гриду датасете), OnBeforeEdit (проверка возможности редактирования конкретной ячейки) и CellDrawInfo.

Сейчас временно из ситуации вышли следующим образом: при редактировании значения в ячейке подкрашиваемые ячейки с утвержденным планом становятся обычного цвета, на OnBeforeEdit:
if (CanEdit.Value) {
OldValue = DataField.Value
if (DataGrid.HasCustomCellDraw) {
DataGrid.HasCustomCellDraw = false
}
}

Как только мы вышли из редактирования (сохранили значение или перешли на другую не редактируемую ячейку) – подкраска снова появляется, на OnAfterEdit:
if (!DataGrid.HasCustomCellDraw) {
DataGrid.HasCustomCellDraw = true
}

TerrasoftSales 3.3.2.313

Создали собственный раздел, реестр и деталь для внесения плана и сравнение с фактом продаж

Для реестра, где необходима подкраска ячеек редактировали события:
OnAfterEdit (редактирование итоговых данных после правок в привязанном к гриду датасете), OnBeforeEdit (проверка возможности редактирования конкретной ячейки) и CellDrawInfo.

Сейчас временно из ситуации вышли следующим образом: при редактировании значения в ячейке подкрашиваемые ячейки с утвержденным планом становятся обычного цвета, на OnBeforeEdit:
if (CanEdit.Value) {
OldValue = DataField.Value
if (DataGrid.HasCustomCellDraw) {
DataGrid.HasCustomCellDraw = false
}
}

Как только мы вышли из редактирования (сохранили значение или перешли на другую не редактируемую ячейку) – подкраска снова появляется, на OnAfterEdit:
if (!DataGrid.HasCustomCellDraw) {
DataGrid.HasCustomCellDraw = true
}

Показать все комментарии