LiveBinding チュートリアル : TBindList の生成と ListBox に読み込むためのコード

By: Chikako Yonezawa

Abstract: 前回の投稿では、デザイナ内で TBindList を設定する方法を説明しました。この投稿では、コードで TBindList を使う方法について説明します。

この記事は、エンバカデロの Jim Tierney が投稿したブログ記事 - http://blogs.embarcadero.com/jimtierney/2011/10/03/31601がもとになっています。

前回の投稿では、デザイナ内で TBindList を設定する方法を説明しました。この投稿では、コードで TBindList を使う方法について説明します。

これが、TBindListコンポーネントを使用して Listboxに読み込むためのメソッドです。

procedure FillList(AControl: TComponent; const AControlExpression: string;
  ASource: TBaseBindScopeComponent; const ASourceExpression: string; const ASourceMemberName: string = '');
var
  LBindList: TBindList;
begin
  LBindList := TBindList.Create(nil);
  try
    // Turn off auto properties.     LBindList.AutoFill := False;
    LBindList.AutoActivate := False;
    LBindList.ControlComponent := AControl;
    LBindList.SourceComponent := ASource;
    LBindList.SourceMemberName := ASourceMemberName;
    with LBindList.FormatExpressions.AddExpression do
    begin
      SourceExpression := ASourceExpression;
      ControlExpression := AControlExpression;
    end;
    LBindList.FillList;
  finally
    LBindList.Free;
  end;
end;

TDataSource へ接続するための TBindScopeDB コンポーネントが必要です。Category フィールドの値を ListBox に読み込むために、以下のように FillList を呼び出します。

  FillList(ListBox1, 'Text', BindScopeDB1, 'AsString', 'Category');

このコードを FireMonkey プロジェクトで使用する場合は、FMX.Bind.Editors を使用する必要があります。VCL プロジェクトの場合は、VCL.Bind.Editors を使用します。

これらのユニットは、TBindList が、TListBoxへ項目を追加するために使用するエディタを登録します。また、これらのユニットは、TComboBox のためのエディタも登録します。コンボボックスを設定するために、コードの以下の行を使用してください。

  FillList(ComboBox1, 'Text', BindScopeDB1, 'AsString', 'Category');

また、VCL.Bind.Editors は、TListView のためのエディタも登録します。リストビューに読み込むために、コードの以下の行を使用してください。

  FillList(ListView1, 'Caption', BindScopeDB1, 'AsString', 'Category');

FillListへの最後のパラメータはオプションです。除外する場合、TBindList は、TField の代わりに TDataSet を評価します。以下のコードは、2つの異なるフィールドから、値をリストボックスに読み込みます。

  FillList(ListBox1, 'Text', BindScopeDB1, 'Category.AsString + " - " +  Common_Name.AsString');

FillList メソッドの実装と使用方法を参照できるサンプルプロジェクトが、sourceforge 上で公開されています。

プロジェクト名は、BindListUtilsSampleProject.dpr です。
このプロジェクトは、この記事で紹介されている以外の FillList の他のバージョンを含んでいます。次の投稿で詳細を説明します。
 
LiveBindings は、 Delphi XE2 , C++Builder XE2 および FireMonkey で使用可能です。


Server Response from: ETNASC04