При входе в режим редактирования редактироваться будут текущие выбранные записи.
Общая схема редактирования данных:
Вход в режим редактирования.
При этом создается и заполняется данными поле FEditDataStorage типа TssComplexDataStorage
. При редактировании именно в этом объекте будут изменяться данные.
Выполняется одна из команд:
Append (или Insert – это синоним команды Append).
Если задан необязательный параметр dsInserted
, то данные из него копируются в FEditDataStorage, иначе в FEditDataStorage создается одна пустая запись.
Edit. В зависимости от параметра SelectionType
возможно расширение текущих выбранных записей на вложенные в выбранные записи узлы и группы. В FEditDataStorage копируются текущие выбранные записи.
Modify. Команда аналогична команде Edit, за исключением:
Расширения текущих выбранных записей не производится.
Если задан необязательный параметр dsInserting
, то в FEditDataStorage, помимо текущих выбранных записей, копируются данные из этого параметра.
Редактирование.
Редактирование данных возможно одним из двух методов:
Редактирование отдельных полей выбранных записей.
Редактирование выполняется через свойства As*
объекта типа TssField
. Получить объект TssField
можно либо через свойство Fields
, либо вызовом метода FieldByName
DataSet’а.
Групповое редактирование.
Через вызов метода ManualModify
можно отредактировать сразу несколько полей у нескольких записей. При этом значения полей редактируются индивидуально для каждой записи, а не для всех редактируемых записей. Данные для редактирования передаются через параметр dsModify метода. При выполнении метода:
В FEditDataStorage
ищутся строки, соответствующие строкам dsModify
. Критерий соответствия – совпадение значений полей из свойства KeyField DataSet
’а.
Еще не существующие в FEditDataStorage
строки будут туда добавлены из dsModify
.
У найденных строк в FEditDataStorage
будут отредактированы значения значениями из строк dsModify
.
Завершение редактирования.
Редактирование завершается вызовом одной из команд:
Cancel.
Выход из режима редактирования без сохранения результатов редактирования.
Post.
Изменения, сделанные в FEditDataStorage
сохраняются в FCachedUpdateProducer
.
Если DataSet находится в режиме кэширования изменений (см. ниже), то выполняются дополнительные действия, зависящие от класса DataSet’а.
Происходит выход из режима редактирования.
ApplyUpdates. Общая логика действий при выполнении этого метода – сохранить результаты редактирования в какое-либо условно постоянное хранилище и переформировать данные в DataSet’е. Реализация метода зависит от класса DataSet’а.
Действия для сохранения редактируемых данных зависят от режима кэширования изменений DataSet’а. Режим настраивается через свойство CachedUpdate
DataSet’а. Если режим включен, то изменения при выполнении команды Post сохраняются локально в этом DataSet’е в FCachedUpdateProducer
’е. Если режим выключен, то изменения должны быть переданы куда-то вне данного DataSet’а. Конкретные действия в данном случае зависят от класса DataSet’а.