Как создать связанный объект вне 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;