|
<< Нажмите, чтобы показать Содержание >> Пример: вставка компонентов, которые могут изменять своё содержимое, в TDBRichViewEdit |
В этом примере показано, как работать с TEdit, вставленным в TDBRichViewEdit, если требуется сохранять его текст в поле RVF.
Проблема: когда пользователь изменяет текст в TEdit, набор данных (dataset) не получает уведомление об изменении документа, поэтому эти изменения не сохраняются.
В этом примере на форме Form1 размещён компонент DBRichViewEdit1: TDBRichViewEdit.
1) Добавьте в раздел private формы Form1:
procedure EditChange(Sender: TObject);
Реализация (Implementation):
procedure TForm1.EditChange(Sender: TObject);
begin
if DBRichViewEdit1.CanChange then
DBRichViewEdit1.Change
else
Beep;
end;
2) При создании нового TEdit назначьте его событие OnChange:
var Edit: TEdit;
begin
Edit := TEdit.Create(nil);
Edit.OnChange := EditChange;
DBRichViewEdit1.InsertControl('', Edit, rvvaBaseline);
end;
3) Необходимо также назначить это событие всем компонентам TEdit, загруженным из поля базы данных вместе с документами RichView. Для этого используйте событие OnControlAction компонента DBRichViewEdit:
procedure TForm1.DBRichViewEdit1ControlAction(Sender: TCustomRichView;
ControlAction: TRVControlAction; ItemNo: Integer; var ctrl: TControl);
begin
if (ControlAction=rvcaAfterRVFLoad) and (ctrl is TEdit) then
TEdit(ctrl).OnChange := EditChange;
end;
Не забудьте зарегистрировать TEdit в секции initialization модуля:
initialization
RegisterClasses([TEdit]);