Я пытаюсь выяснить, как livebindings работает с определенным пользователем объектом.Поэтому я сделал простой пример, чтобы увидеть, как это работает, но это не так.Я искал всю информацию, чтобы увидеть, в чем проблема, но пока нет результата.
Этот пример основан на примере Джима Тирни (embarcadero evangelist).И я снова и снова сравниваю мой код с его кодом.К сожалению, я не вижу разницы, но, конечно, они есть ...
Мой код выглядит так:
Unit1.h
class TPerson : public TObject
{
private:
UnicodeString nom;
UnicodeString prenom;
public:
__fastcall TPerson();
__fastcall ~TPerson();
__property UnicodeString Nom = {read=nom, write=nom};
__property UnicodeString Prenom = {read=prenom};
};
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // Composants gérés par l'EDI
TLabeledEdit *LabeledEdit1;
TLabeledEdit *LabeledEdit2;
TAdapterBindSource *AdapterBindSource1;
TDataGeneratorAdapter *DataGeneratorAdapter1;
TBindingsList *BindingsList1;
TLinkControlToField *LinkControlToField1;
TLinkControlToField *LinkControlToField2;
void __fastcall PrototypeBindSource1CreateAdapter(TObject *Sender, TBindSourceAdapter *&ABindSourceAdapter);
void __fastcall AdapterBindSource1CreateAdapter(TObject *Sender, TBindSourceAdapter *&ABindSourceAdapter);
private: // Déclarations utilisateur
TPerson* personne;
public: // Déclarations utilisateur
__fastcall TForm1(TComponent* Owner);
};
Unit1.cpp
__fastcall TPerson::TPerson() : TObject()
{
this->nom = "Jon";
this->prenom = "Stockton";
}
//---------------------------------------------------------------------------
__fastcall TPerson::~TPerson()
{
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
this->personne = new TPerson();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::AdapterBindSource1CreateAdapter(TObject *Sender, TBindSourceAdapter *&ABindSourceAdapter)
{
ABindSourceAdapter = new TObjectBindSourceAdapter(this, this->personne, __classid(TPerson), true);
}
Unit1.dfm Дизайн формы
Визуальный LiveBinding Визуальный редактор LiveBinding
Но когда я выполняю это, моя основная форма, который раскрывает два свойства объекта TPerson, не отражает значение объекта TPerson, и вместо этого я могу видеть значение компонента TPrototypeBindSource. Результат основной формы
Итак, я ожидаю, что мои поля редактирования метки содержат значения моего объекта TPerson.Я также ожидаю, по определению livebinding, что если я изменю свои свойства TPserson во время выполнения, текстовые значения правок будут обновлены. Ожидается основная форма