Delphi XE2 LiveBinding では、任意のタイプの VCL コントロールを任意の(非コンポーネント)オブジェクトの任意のタイプのプロパティにバインドする必要があります。私はこれを一方向に行うことができます。しかし、双方向で行う必要があります。
TPerson.PersonName: 文字列を TEdit.Text にバインドするとします。
私が今持っているものはシンプルです。
- 新しい VCL アプリケーションを作成し、TBindScope、TBindingsList、TEdit を追加します。
- person1 という名前の TPerson のインスタンスを作成します。
- BindingList を使用して、TBindExpression プロパティを追加します。
- BindExpression を使用
- ControlComponent を Edit1 に設定します
- ControlExpression を「テキスト」に設定します
- SourceComponent を BindScope1 に設定します
- SourceExpression を PersonName に設定します
- ボタンを追加します。追加する Click イベントに: BindScope1.DataObject := person1;
- ボタンを追加します。追加する Click イベントに追加します (必要なのは 1 つだけですが、動作するまで両方を試します)。
- TBindings.Notify(送信者, '');
- BindingsList1.Notify(送信者, '');
最初のボタンは最初の方向にバインドします。2 番目のボタンは、値を person1.PersonName プロパティに書き戻すことはないようです。
通知コード、バインディングの方向、バインディングの種類、式、SourceMember などを試してみました。bindexpression の構成で実行時エラーが発生することがありますが、それ以外の場合はバインディングが単方向です。
2 番目のボタンをクリックすると、Edit1.Text の内容が person1.PersonName に書き込まれることを期待しています。
これ全部コードでやるなら検討しますし、そういう例は大歓迎ですが、できればデザイナでやりたいです。
2 つのコントロール間のバインディングには関心がないことに注意してください。
私はすでに LiveBinding サンプル プロジェクトをダウンロードして調査しましたが、これを行うものは見つかりませんでした。これが間違っている場合は、具体的に指摘してください。DocWiki も読みました。DB LiveBinding コントロールを使用する場合を除いて、双方向バインディングは対象外です。DB LiveBinding コントロールも DataSet も使用していません。したがって、なぜそれらを使用する必要があるかを説明していただけない限り、それらのコントロールに関する情報は必要ありません。