Я использую следующий способ для определения и заполнения столбца ячейками-предками TCalendarEdit (вот часть интерфейса). Дайте мне знать, если мне нужно раскрыть реализацию.
type
TDynamicRecord = record
Field1, Field2, Field3: string;
DateSBU: TDate;
TimeSBU: TTime;
end;
TDateCell = class(TCalendarEdit)
protected
procedure SetData(const Value: TValue); override;
public
constructor Create(AOwner: TComponent); override;
end;
TDateColumn = class(TColumn)
protected
function CreateCellControl: TStyledControl; override;
public
constructor Create(AOwner: TComponent); override;
end;
Код работает нормально, и в сетку можно добавить столбец типа TDateColumn
.
Я задал вопрос и открыл вознаграждение за него в поисках метода заполнения пользовательского столбца с помощью LiveBindings
, но у меня есть нет ответов до истечения срока действия вознаграждения. Поэтому сейчас я пробую другой путь. Я объявляю коллекцию DynamicData: TList<TDynamicRecord>;
и заполняю ее из набора данных. Этот подход довольно четко объясняется в ответе @Mike-Sutton и в его блоге. Мне удалось это сделать. Данные правильно отображаются в сетке и во вновь определенных столбцах.
Но теперь я застрял с другой проблемой. Мне нужно обновить набор данных о действиях пользователей. Я попробовал события OnSetValue
и OnEditingDone
родительской сетки (согласно документации, эти события должны использоваться для обновления данных), но, как ни странно, это не срабатывает.
Что будет правильным событием или другим способом, подходящим для обновления набора данных?