LiveBinding チュートリアル: デザイン時に TClientDataSet から TListBox へデータを読み込む

By: Chikako Yonezawa

Abstract: TBindList は、TClientDataSet 内のレコードを走査して、TListBox に読み込むことが可能です。この記事では、デザイナ内で TBindList をどのように設定するかを説明しています。

この記事は、エンバカデロの Jim Tierney によって投稿されたブログがもとになっています。http://blogs.embarcadero.com/jimtierney/2011/09/30/31559

TBindList は、TClientDataSet 内のレコードを走査して、TListBox に読み込むことが可能です。この記事では、デザイナ内で TBindList をどのように設定するかを説明しています。

フォーム上に TClientDataSet と TDataSource を配置します。biolife.xml のようなデータをデータセットに (ClientDataSet1 を右クリックし、表示されたポップアップメニューから「MyBase テーブルから読み込み」を選択し、サンプルデータのディレクトリにある biolife.xml を選択)ロードします。オブジェクトインスペクタで、DatSouce1.DataSet に ClientDataSet1 を設定します。フォーム上に TBindScopeDB コンポーネントを配置し、BindScopeDB1.DataSource に DataSource1 を設定します。

BindScopeDB1 を DataSource1 に接続します

BindScopeDB1 を DataSource1 に接続します。

フォーム上に TListBox を配置します (このフォームは VCLです。FireMonkey フォームでも同様に動作します)。ListBox1 を選択し、オブジェクトインスペクタの下部に "New LiveBinding…"(日本語版では "LiveBindingの新規作成…") と表示されているリンクを確認することができるでしょう。
ListBox1の "LiveBindingの新規作成…"

ListBox1の LiveBindingの新規作成…

"New LiveBinding…"(日本語版では "LiveBindingの新規作成…") をクリックし、TBindList を選択します。

New LiveBinding dialog box

LiveBinding の新規作成ダイアログ

ダブルクリック、または OKボタンを押します。 LiveBinding の新規作成ダイアログにより、TBindingsList コンポーネントと TBindList コンポーネントが生成されます。TBindingsList は TActionList がアクション用のコンテナであるのと同様にコンポーネントをバインドするためのコンテナです。新たな TBindList コンポーネントを見るために、TBindingsList をダブルクリックします。TBindingsList は TBindList コンポーネントを包有しています。

TBindingsList は TBindList コンポーネントを包有しています

TBindingsList は TBindList コンポーネントを包有しています

新しい TBindList コンポーネントのプロパティを見るために BindListListBox11 をクリックします。ControlComponent プロパティは、"New LiveBinding…"(日本語版では "LiveBindingの新規作成…")によって ListBox1 に設定されます。

BindList1 の ControlComponent に ListBox を設定する

BindList1 の ControlComponent に ListBox を設定する

オブジェクトインスペクタを使用して、SourceComponent に BindScopeDB1 を設定します。SourceMemberName にフィールド名を設定します。SourceMemberName プロパティエディタは、フィールド名のドロップダウンリストを提供しているはずです。もしフィールド名が表示されないのであれば、おそらくデータコンポーネントが接続されていないと考えられます (DataSource1.DataSet が ClientDataSet1 に設定されていなければならず、BindScopeDB1.DataSource は DataSource1 に設定されていなければなりません)。

オブジェクトインスペクタを使用して、SourceComponent に BindScopeDB1 を設定

オブジェクトインスペクタを使用して、SourceComponent と SourceMemberName を設定

最後の手順は、バインディング式を入力することです。オブジェクトインスペクタの下部にある "Expressions…"(日本語版では"式…") をクリックすることによって、バインディング式エディタが開きます。

BindList1 のバインディング式エディタ

BindList1 のバインディング式エディタ

コレクションの "Format"(日本語版では"書式") を選択し、新規のバインディング式を追加するために、"Add Expression"(日本語版では"式の追加")ボタンをクリックします。コントロール式に "Text" と入力します。ソース式には "AsString" と入力します。

BindList1 の書式をバインディング式エディタで設定する

BindList1 の書式をバインディング式エディタで設定する

コレクションの "FormatControl"(日本語版でもそのまま) ではなく "Format"(日本語版では書式)に追加したことを確認してください。

ウィンドウの下部にあるボタンは、式をテストするために使用されます。Category フィールドに対し、式 "AsString" を評価するために "Eval Source"(日本語版では"ソースの評価")をクリックします。

式の結果ウィンドウ

式の結果ウィンドウ

式の結果ウィンドウを閉じます。また、バインディング式エディタも閉じます。

デザイン時、オブジェクトインスペクタの下部にある TBindList を試すための 2つのコマンドがあります。ListBox1 に読み込むために、"Fill List"(日本語版では "リストへの読み込み")をクリックします。

BindList1 の "Fill List"(日本語版では "リストへの読み込み")で ListBox1 に読み込む

BindList1 で ListBox1に読み込む

"Clear List"(日本語版では "リストのクリア") をクリックします。

プロジェクトを実行します。ListBox1 が、カテゴリフィールドの値で埋まりました。

実行時、BindList1 によって ListBox1 にデータが読み込まれます
実行時、BindList1 によって ListBox1 にデータが読み込まれます

TBindLlist を使用した VCL および FireMonkey のサンプルプロジェクトは Sourceforge で公開しています。

projects: fmx\BindListFMXProject.dpr, vcl\BindListVCLProject.dpr
projects: fmx\SimpleListCollectionSampleProject.dpr, fmx\ListCollectionsSampleProject
 

次回の投稿で、コード内で TBindList を使用することについて説明する予定です。

LiveBindings は、Delphi XE2, C++Builder XE2 および FireMonkeyで使用できます。

Server Response from: ETNASC04