RAD Studio での LiveBinding
RAD Studio 入門 への移動
LiveBinding は、RAD Studio において VCL と FireMonkey の両方のフレームワークでサポートされているデータ バインディング機能です。
LiveBinding は式に基づいたフレームワークです。つまり、バインディング式を使用して、オブジェクトを別のオブジェクトやデータセット フィールドにバインドします。
目次
LiveBinding の概要
LiveBinding は、バインディング式と呼ばれる、単方向にも双方向にもできる関係式に基づいています。LiveBinding には、コントロール オブジェクトとソース オブジェクトも関わります。バインディング式を使用すると、結び付けるオブジェクトの 1 つ以上のプロパティが含まれるバインディング式を定義するだけで、任意のオブジェクトを別のオブジェクトにバインドすることができます。たとえば、TEdit コントロールを TLabel にバインドすることで、編集ボックス内のテキストが変わったら、バインディング式で評価された値に合わせてラベルのキャプションが自動的に変更されるようにすることができます。あるいは、トラック バーを動かすにつれて進行状況が上下するようにトラック バー コントロールを進行状況バーにバインドすることもできます。
同じようにして、データセット フィールドに接続したり、別のオブジェクトの 1 つ以上のプロパティを変更するなどが可能です。LiveBinding は伝播するので、コントロール オブジェクトにバインドされているオブジェクトに接続されている他のオブジェクトのプロパティを変更することさえできます。
LiveBinding の作成
バインディングを作成する基本の方法は、[LiveBinding デザイナ]を使用する方法です。ここで作成できるのはクイック バインディング コンポーネントだけです。図には他のコンポーネントのバインディング(TBindLink など)も表示されますが、クイック バインディング コンポーネントの場合のように端点を移動することはできません。
バインディングを作成する方法はもう 1 つあります。[LiveBinding ウィザード]を使用する方法です。ここでも、作成されるのはクイック バインディング コンポーネントだけです。
[LiveBinding デザイナ]では、クイック バインディングを使って次のような種類のバインディングを作成します(これはウィザードにも反映されます)。
- TEdit などのコントロールをデータ ソース内のフィールドにリンクする
- TGrid などのコントロールをデータ ソースにリンクする
- TEdit などのコントロールをコンポーネント プロパティ(TLabel.Text など)にリンクする
- コンポーネント プロパティをデータ ソース内のフィールドにリンクする
コントロールは 1 つの端点にしかリンクできません。そのため、たとえば TEdit をフィールドにリンクした後で、同じ TEdit をコンポーネント プロパティにリンクすると、フィールドへのリンクは削除されます。同様に、コンポーネント プロパティも 1 つの端点にしかリンクできません。データ ソースとデータ ソース メンバは、複数の端点にリンクできます。たとえば、1 つのフィールドを TEdit と TLabel の両方にリンクすることができます。これには 2 つのバインディング コンポーネントが関与します。
[LiveBinding デザイナ]で 1 つのコントロールを 2 つのコンポーネント プロパティにリンクすることはできませんが、コントロールと両方のコンポーネント プロパティを 1 つのフィールドにリンクすることで同じ結果を得ることができます。TPrototypeBindSource コンポーネントを使用すると、そのためのフィールドを作成できます。
LiveBinding および API ドキュメントで使用しているリンクという言葉は、ユーザーが行った変更をバインディングが認識し、ユーザー入力に合わせてコントロールやデータ ソースを自動的に更新することを示します。
LiveBinding の利用
VCL フォーム アプリケーションやFireMonkey アプリケーションで LiveBinding を利用するには、[LiveBinding デザイナ]または[LiveBinding ウィザード]を使用します。ウィザードは、[オブジェクト インスペクタ]から、またはフォーム上に配置された個々のコンポーネントを右クリックして(ただし[ツール|オプション...|LiveBinding]ダイアログ ボックスでウィザードが有効になっている場合のみ)、起動することができます。
RAD Studio で LiveBinding を作成する方法の概要については、「LiveBinding の作成」、「[LiveBinding の新規作成]」、または「[LiveBinding ウィザード]」の各トピックを参照してください。また、何らかの理由でプログラムから LiveBinding を作成する必要がある場合には、「チュートリアル:LiveBinding をプログラムで使用する」の手順を参照してください。
- [LiveBinding デザイナ]によって VCL アプリケーションまたはFireMonkey アプリケーションで LiveBinding を使用する方法のチュートリアル:
- [LiveBinding ウィザード]を使って素早くシームレスに LiveBinding を作成する方法(クイック バインディング):
- [LiveBinding ウィザード]によって VCL アプリケーションまたはFireMonkey アプリケーションで LiveBinding を使用する方法のチュートリアル:
- チュートリアル:FireMonkey アプリケーションで LiveBinding を使用する(FireMonkey HD アプリケーションのプロパティ バインディングの例を示します)
- チュートリアル:LiveBinding をプログラムで使用する(コンソール アプリケーションまたは手動での式の編集にのみ適した方法)
- チュートリアル:LiveBinding を使用してコードを書かずにアプリケーションを作成する(LiveBinding を使って FireMonkey HD アプリケーションを構築する例を示します)
- チュートリアル:VCL アプリケーションで LiveBinding を使用する(VCL アプリケーションのプロパティ バインディングの例を示します)
- LiveBinding の特定の機能の使用方法に関するトピック:
LiveBinding ビジュアル コンポーネント
LiveBinding エンジンは実行時機能ですが、多数のビジュアル コンポーネントが[ツール パレット]に用意されており、設計時にコンポーネント間のライブ バインディングを作成するのに役立ちます。場合によっては、[LiveBinding ウィザード]や[LiveBinding デザイナ]を使って、ビジュアルにバインディングを作成することもできます。
[ツール パレット]を見ると、[LiveBinding]タブや[LiveBinding (その他)]タブに以下のコンポーネントが含まれており、それをフォーム(VCL またはFireMonkey)上にドラッグ アンド ドロップすることができます。
- [LiveBinding]タブ
コンポーネント ロゴ | コンポーネント名 | 説明 |
TBindSourceDB | データベースへのバインディングを作成するために使用されます。 | |
TPrototypeBindSource | 着手するデータがまだない場合に手始めに使用できるサンプル データを生成するためのデータ ソースを提供します。後で、このデータ ソースを何らかの実データに置き換えることができます。 | |
TBindSourceDBX | DBX フレームワークを使用して、データベースへのバインディング作成に使用されます。 | |
TParamsAdapter | ビジュアル コントロールを DBX コマンド パラメータにバインディングするために使用されます。 | |
TBindNavigator(FMX または VCL) | FMX または VCL アプリケーションの開発時にデータセット内のレコードを順次参照するために使用されます。 |
- [LiveBinding (その他)]タブ
コンポーネント ロゴ | コンポーネント名 | 説明 |
TBindingsList | バインディング リストを保持するために使用されます。 | |
TDataGeneratorAdapter | データ ジェネレータのアダプタです。 | |
TAdapterBindSource | データベース以外のデータを扱うために使用されます。アダプタ プロパティは、データ ソースをデータベース以外のデータ(たとえば、オブジェクトのジェネリック コレクションなど)に接続するのに使用されます。 |
- '[LiveBinding]タブ
コンポーネント ロゴ | コンポーネント名 | 説明 |
TBindSourceDB | データベースへのバインディングを作成するために使用されます。 | |
TPrototypeBindSource | 着手するデータがまだない場合に手始めに使用できるサンプル データを生成するためのデータ ソースを提供します。後で、このデータ ソースを何らかの実データに置き換えることができます。 | |
TBindNavigator (FMX) | FMX アプリケーションの開発時にデータセット内のレコードを順次参照するために使用されます。 |
- [LiveBinding (その他)]タブ
コンポーネント ロゴ | コンポーネント名 | 説明 |
TBindingsList | バインディング リストを保持するために使用されます。 | |
TDataGeneratorAdapter | データ ジェネレータのアダプタです。 | |
TAdapterBindSource | データベース以外のデータを扱うために使用されます。アダプタ プロパティは、データ ソースをデータベース以外のデータ(たとえば、オブジェクトのジェネリック コレクションなど)に接続するのに使用されます。 |
- ヒント: [LiveBinding デザイナ]を使用してコンポーネント間のライブ バインディングを作成すると、適切な LiveBinding コンポーネント(TBindingsList)がフォームに自動的に配置されます。このコンポーネントには、アプリケーションで使用できる全バインディングのリストが格納されています。バインディング リストについての詳細は、「バインディング リスト」を参照してください。
LiveBinding のサンプル
以下の表には、これらのサンプルの一覧を、対応するカテゴリ(FMX または VCL)で分けて示します。 サンプル アプリケーションのなかには、FMX でも VCL でも使用できるものもあれば、どちらか一方のカテゴリでのみ使用できるものもあります。
ヒント: Samples ディレクトリを最新の SVN のバージョンへ更新する方法の詳細については、ヘルプ トピック「Sample」を参照してください。
FMX の LiveBinding サンプル | VCL の LiveBinding サンプル |
BindGridLinkFMXProject | BindGridLinkVCLProject |
BindLinkFMXProject | BindLinkVCLProject |
該当なし | OneOfEachBindCompVCL |
ListCollectionsSampleProject | 該当なし |
FireMonkey の LiveBinding サンプル |
BindComponentsExprProject |
BindDBExprSampleProject |
BindExpressionSampleProject |
BindGridLinkFMXProject |
BindLinkFMXProject |
BindLinkFMXProject |
BindListFMXProject |
これらのサンプルは、機能強化されたアプリケーションを LiveBinding を使って構築する方法の詳細を示しています。
インストールされた製品に含まれている LiveBinding サンプルのソースは、以下のとおり、SourceForge にある公開 Subversion リポジトリにチェックインされています。
LiveBinding API リファレンス
以下のユニットは LiveBinding エンジンの構成要素です。それらの適切なヘルプ トピックのドキュメントには、LiveBinding API の使用に関する情報が記載されています。
ユニット名 | 内容 |
System.Bindings.CustomScope | カスタム スコープに関連するクラス |
System.Bindings.CustomWrapper | カスタム ラッパーに関連するクラス |
System.Bindings.EvalProtocol | ラッパー、スコープなどの内部構造体のエンジンで使用されるインターフェイス |
System.Bindings.Expression | バインディング式に関連するクラス |
System.Bindings.ExpressionDefaults | バインディング式のデフォルト動作 |
System.Bindings.Factories | 式、マネージャ、スコープのファクトリ |
System.Bindings.Helper | プログラムによるバインディング式の作成と通知のためのツール |
System.Bindings.Manager | バインディング マネージャに関連する実装 |
System.Bindings.ManagerDefaults | バインディング マネージャのデフォルト動作 |
System.Bindings.Methods | スクリプトで使用できるメソッドの管理 |
System.Bindings.Outputs | 式出力の管理用ツール |
Data.Bind | LiveBinding コンポーネントを実装するユニットが含まれます |
ヒント: C++Builder を使用して、LiveBinding を利用するコンソール アプリケーションを開発する場合は、プロジェクトを構成するクラスの RTTI 情報を生成するように C++ コンパイラに明示的に指示する必要があります。それには、チュートリアル「LiveBinding をプログラムで使用する」で示されているとおりに、
#pragma explicit_rtti methods()
指令をプロジェクトの冒頭に追加します。#pragma explicit_rtti methods()
指令の詳細については、「#pragma explicit_rtti」ヘルプ トピックを参照してください。
LiveBinding を使ったデータの同期
RAD Studio で LiveBinding を使用すると、どちらにも同じデータが含まれている場合に、たとえばリスト ボックス コントロールと文字列グリッドを同期するなど、さまざまなデータを同期することができます。[LiveBinding デザイナ]内でコンポーネントの Synch プロパティおよび * プロパティを使用してデータを同期する方法については、「LiveBinding を使ったデータの同期」のトピックを参照してください。
LiveBinding 対応コンポーネントの作成
TTrackBar などの単純なコントロールを LiveBinding と共に使用できるようにするには、2 つの要件があります。第 1 に、コントロールがオブザーバ サポートを実装している必要があります。LiveBinding では、オブザーバを利用してコントロールの通知をサブスクライブします。第 2 に、コントロール値の名前(たとえば TTrackBar コンポーネントの Position
など)を登録する必要があります。このコントロール値名は、LiveBinding コンポーネント側で、コントロールの値を取得および設定する式を生成するのに使用されます。
LiveBinding 対応コンポーネントの作成方法の詳細については、チュートリアル「LiveBinding 対応のコンポーネントを作成する」を参照してください。
LiveBinding エディタ
RAD Studio での LiveBinding に関連するエディタには、以下のものがあります。
「LiveBinding 関連のダイアログ ボックス」も参照してください。
アクション リストでの LiveBinding
「LiveBinding とアクション リスト」を参照してください。
関連項目
チュートリアル
「データベースおよび LiveBinding のチュートリアル」を参照してください。