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 の使用法
LiveBinding を VCL アプリケーションや FireMonkey アプリケーションで使う場合には、[LiveBinding デザイナ]や[LiveBinding ウィザード]([オブジェクト インスペクタ]から、またはフォーム上の個々のコンポーネントを右クリックして起動。これは[ツール|オプション...|LiveBinding]ダイアログ ボックスで有効にした場合のみ)を使用します。ただし、何らかの理由で必要であれば、簡単ではありませんがコンソール アプリケーションでプログラムから LiveBinding を使用することもできます。RAD Studio で LiveBinding を作成する方法の概要については、「LiveBinding の作成」、「[LiveBinding の新規作成]」、または「[LiveBinding ウィザード]」のトピックを参照してください。
- [LiveBinding デザイナ]によって VCL アプリケーションまたは FMX アプリケーションで LiveBinding を使用する方法のチュートリアル:
- [LiveBinding ウィザード]を使って素早くシームレスに LiveBinding を作成する方法(クイック バインディング):
- [LiveBinding ウィザード]によって VCL アプリケーションまたは FMX アプリケーションで LiveBinding を使用する方法のチュートリアル:
- チュートリアル:VCL アプリケーションで LiveBinding を使用する(VCL アプリケーションのプロパティ バインディングの例を示します)
- チュートリアル:FireMonkey アプリケーションで LiveBinding を使用する(FireMonkey HD アプリケーションのプロパティ バインディングの例を示します)
- チュートリアル:LiveBinding を使用してコードを書かずにアプリケーションを作成する(LiveBinding を使って FireMonkey HD アプリケーションを構築する例を示します)
- チュートリアル:LiveBinding をプログラムで使用する(コンソール アプリケーションまたは手動での式の編集にのみ適した方法)
LiveBinding ビジュアル コンポーネント
LiveBinding エンジンは実行時機能ですが、多数のビジュアル コンポーネントがコンポーネント パレットに用意されており、設計時にコンポーネント間のライブ バインディングを作成するのに役立ちます。ただし、ほとんどの場合は、[LiveBinding ウィザード]を使ってビジュアルにバインディングを作成することになります。
コンポーネント パレットの[LiveBinding]タブには、フォーム(VCL か FMX のどちらか)にドラッグ アンド ドロップできる以下のコンポーネントがあります。
| コンポーネント ロゴ | コンポーネント名 | 説明 |
| TBindSourceDB | データベースへのバインディングを作成するために使用されます。 | |
| TPrototypeBindSource | 着手するデータがまだない場合に手始めに使用できるサンプル データを生成するためのデータ ソースを提供します。後で、このデータ ソースを何らかの実データに置き換えることができます。 | |
| TBindingsList | バインディング リストを保持するために使用されます。 | |
| TBindScope | コンポーネントへのバインディングに使用されます。 | |
| TDataGeneratorAdapter | データ ジェネレータのアダプタです。 | |
| TAdapterBindSource | データベース以外のデータを扱うために使用されます。アダプタ プロパティは、データ ソースをデータベース以外のデータ(たとえば、オブジェクトのジェネリック コレクションなど)に接続するのに使用されます。 | |
| TBindNavigator(FMX) | FMX アプリケーションの開発時にデータセット内のレコードを順次参照するために使用されます。 | |
| TBindNavigator(VCL) | VCL アプリケーションの開発時にデータセット内のレコードを順次参照するために使用されます。 |
ヒント: [オブジェクト インスペクタ]を使用してコンポーネント間のライブ バインディングを作成すると、適切な LiveBinding コンポーネント(TBindingsList)がフォームに自動的に配置されます。このコンポーネントには、アプリケーションで使用できる全バインディングのリストが格納されています。バインディング リストについての詳細は、「バインディング リスト」を参照してください。
LiveBinding のサンプル
RAD Studio には LiveBinding の多数のサンプル アプリケーションが付属しており、[スタート|(すべての)プログラム|Embarcadero RAD Studio XE3|サンプル]を選択することで、それらを見つけることができます。対象となるフォルダは Delphi\LiveBinding です。以下の表には、これらのサンプルの一覧を、対応するカテゴリ(FMX または VCL)で分けて示します。サンプル アプリケーションのなかには、FMX でも VCL でも使用できるものもあれば、どちらか一方のカテゴリでのみ使用できるものもあります。すべての LiveBinding サンプルのメイン プロジェクト グループは BindSamplesGroup.groupproj です。
ヒント: Samples ディレクトリを最新の SVN のバージョンへ更新する方法の詳細は、ヘルプ トピック「Sample」を参照してください。
| FMX の LiveBinding サンプル | VCL の LiveBinding サンプル |
| BindComponentsExprProject | 該当なし |
| BindDBExprSampleProject | 該当なし |
| BindExpressionSampleProject | 該当なし |
| BindGridLinkFMXProject | BindGridLinkVCLProject |
| BindLinkFMXProject | BindLinkVCLProject |
| BindLinkFMXProject | BindLinkVCLProject |
| BindListFMXProject | BindListVCLProject |
| 該当なし | BindListEditVCLProject |
| 該当なし | BindLookupVCLProject |
これらのサンプルは、機能強化されたアプリケーションを 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 デザイナ]
- LiveBinding の作成
- [LiveBinding ウィザード]
- LiveBinding の[メソッド]ダイアログ ボックス
- [出力変換コンポーネント]ダイアログ ボックス
- LiveBinding の[式の結果]ダイアログ ボックス
- LiveBinding 列エディタ ダイアログ ボックス
- [LiveBinding の新規作成]
- LiveBinding を使ったデータの同期
- バインディング リスト
- バインディング式エディタ
- LiveBinding とアクション リスト
- [オブジェクト インスペクタ]
- [新規コンソール アプリケーション]
- [VCL フォーム アプリケーション]
- [HD FireMonkey アプリケーション]
- iOS サンプル コード
サンプル
チュートリアル
- チュートリアル:VCL アプリケーションで LiveBinding を使用する
- チュートリアル:FireMonkey アプリケーションで LiveBinding を使用する
- チュートリアル:LiveBinding を使用してコードを書かずに FireMonkey アプリケーションを作成する
- チュートリアル:LiveBinding をプログラムで使用する
- チュートリアル:[LiveBinding デザイナ]を使ってコントロールをリンクする
- チュートリアル:TPrototypeBindSource と[LiveBinding デザイナ]を使用する
- チュートリアル:Metropolis UI で LiveBinding とデータ モジュールを使用する
- チュートリアル:iOS で LiveBinding を使用してリスト ボックスに値を設定する
