Как создать связанный объект вне PrototypeBindSource.OnCreateAdapter?

Я использую TPrototypeBindSource, чтобы связать некоторые свойства объекта с визуальным контролем. Все работает правильно, но я должен создать этот объект в TPrototypeBindSource.OnCreateAdapter следующим образом:

procedure TForm.PrototypeBindSourceCreateAdapter(Sender: TObject;
  var ABindSourceAdapter: TBindSourceAdapter);
begin
    _viewModel := TViewModel.Create;
    ABindSourceAdapter := TObjectBindSourceAdapter<TViewModel>.Create(self,
      _viewModel);
end;

Я хочу переместить создание _viewModel в конструктор формы, но тогда он перестает работать. Возможно, потому что OnCreateAdapter вызывает перед FormCreate. Есть ли способ создать _viewModel вне события OnCreateAdapter?

отредактировано: Delphi Tokyo 10.2

1 ответ

Решение

Я только что нашел хороший учебник, где эта проблема решена. https://delphiaball.co.uk/2015/10/19/livebindings-in-vcl-part-2-livebinding-objects/ Вы должны переопределить конструктор формы и создать _viewModel до вызова наследуемого Create.

constructor TForm.Create;
begin
    _viewModel := TViewModel;
    inherited Create(Application);
end;
Другие вопросы по тегам