Как изменить значение вычисляемого поля в C++ Builder XE

У меня есть TDBGrid, который показывает некоторые вычисляемые поля. Я использую базу данных MySQL.

Мне нужно отредактировать значения поля одного вычисляемого поля под названием «Дата», но я не могу. Я пытаюсь отредактировать другое поле под названием «Описание», которое имеет тип StringField, и это сработало!

Дата показывает измененное значение типа DateTime, которое отображает только день только с использованием метода DayOfTheMonth.

Как это сделать? Существуют ли способы редактирования значений вычисляемого поля? Помоги мне, пожалуйста...

Заранее спасибо.


person Andromeda    schedule 31.01.2013    source источник


Ответы (2)


Вычисляемое поле — это вычисляемое значение. Вы не можете редактировать вычисляемое поле, так как это значение доступно только для чтения и является результатом выполнения вычислений с другими данными. Вместо этого вы должны отредактировать исходные поля, которые использует вычисляемое поле.

person Remy Lebeau    schedule 31.01.2013

Вы можете изменить способ вычисления значения в OnCalcField(). Я думаю, что если вы обновите текущую запись, этот метод будет вызван снова, чтобы вы могли его изменить.

person Riho    schedule 01.02.2013
comment
Как обновить текущую запись, как вы имеете в виду? Мне предложили удалить свойство State в обработчике событий OnCalcFields, но я не вижу изменений, если OnCalcFields запускается во второй раз. - person Andromeda; 01.02.2013
comment
Вы пытаетесь инициировать новое событие расчета внутри OnCalcFields? Я думаю, что текущую запись можно обновить с помощью RefreshRecord() или RefreshCurrent() или чего-то подобного (сейчас я не сижу за своим рабочим ПК). - person Riho; 01.02.2013
comment
Нет, я не пытаюсь инициировать новое событие calc внутри OnCalcFields. Я обновил текущую запись, но ничего не получилось. OnCalcFields запускается снова, но не пересчитывает значение. - person Andromeda; 04.02.2013
comment
ЕСЛИ событие срабатывает, то пересчет вычисленного значения является вашей ответственностью. Возможно, вы делаете это неправильно. - person Riho; 04.02.2013