RAD Studio での LiveBinding

提供: RAD Studio
移動先: 案内検索

RAD Studio 入門 への移動


LiveBinding は、RAD Studio において VCL と FireMonkey の両方のフレームワークでサポートされているデータ バインディング機能です。

LiveBinding は式に基づいたフレームワークです。つまり、バインディング式を使用して、オブジェクトを別のオブジェクトやデータセット フィールドにバインドします。

LiveBinding の概要

LiveBinding は、バインディング式と呼ばれる、単方向にも双方向にもできる関係式に基づいています。LiveBinding には、コントロール オブジェクトソース オブジェクトも関わります。バインディング式を使用すると、結び付けるオブジェクトの 1 つ以上のプロパティが含まれるバインディング式を定義するだけで、任意のオブジェクトを別のオブジェクトにバインドすることができます。たとえば、TEdit コントロールを TLabel にバインドすることで、編集ボックス内のテキストが変わったら、バインディング式で評価された値に合わせてラベルのキャプションが自動的に変更されるようにすることができます。あるいは、トラック バーを動かすにつれて進行状況が上下するようにトラック バー コントロールを進行状況バーにバインドすることもできます。


LBDConnection.png

同じようにして、データセット フィールドに接続したり、別のオブジェクトの 1 つ以上のプロパティを変更するなどが可能です。LiveBinding は伝播するので、コントロール オブジェクトにバインドされているオブジェクトに接続されている他のオブジェクトのプロパティを変更することさえできます。

LiveBinding の作成

バインディングを作成する基本の方法は、[LiveBinding デザイナ]を使用する方法です。ここで作成できるのはクイック バインディング コンポーネントだけです。図には他のコンポーネントのバインディング(TBindLink など)も表示されますが、クイック バインディング コンポーネントの場合のように端点を移動することはできません。

バインディングを作成する方法はもう 1 つあります。[LiveBinding ウィザード]を使用する方法です。ここでも、作成されるのはクイック バインディング コンポーネントだけです。

[LiveBinding デザイナ]では、クイック バインディングを使って次のような種類のバインディングを作成します(これはウィザードにも反映されます)。

  • TEdit などのコントロールをデータ ソース内のフィールドにリンクする
  • TGrid などのコントロールをデータ ソースにリンクする
  • TEdit などのコントロールをコンポーネント プロパティ(TLabel.Text など)にリンクする
  • コンポーネント プロパティをデータ ソース内のフィールドにリンクする

コントロールは 1 つの端点にしかリンクできません。そのため、たとえば TEdit をフィールドにリンクした後で、同じ TEdit をコンポーネント プロパティにリンクすると、フィールドへのリンクは削除されます。同様に、コンポーネント プロパティも 1 つの端点にしかリンクできません。データ ソースとデータ ソース メンバは、複数の端点にリンクできます。たとえば、1 つのフィールドを TEditTLabel の両方にリンクすることができます。これには 2 つのバインディング コンポーネントが関与します。

[LiveBinding デザイナ]で 1 つのコントロールを 2 つのコンポーネント プロパティにリンクすることはできませんが、コントロールと両方のコンポーネント プロパティを 1 つのフィールドにリンクすることで同じ結果を得ることができます。TPrototypeBindSource コンポーネントを使用すると、そのためのフィールドを作成できます。

LiveBinding および API ドキュメントで使用しているリンクという言葉は、ユーザーが行った変更をバインディングが認識し、ユーザー入力に合わせてコントロールやデータ ソースを自動的に更新することを示します。

LiveBinding の利用

VCL フォーム アプリケーションやFireMonkey アプリケーションで LiveBinding を利用するには、[LiveBinding デザイナ]または[LiveBinding ウィザード]を使用します。ウィザードは、[オブジェクト インスペクタ]から、またはフォーム上に配置された個々のコンポーネントを右クリックして(ただし[ツール|オプション...|LiveBinding]ダイアログ ボックスでウィザードが有効になっている場合のみ)、起動することができます。

RAD Studio で LiveBinding を作成する方法の概要については、「LiveBinding の作成」、「[LiveBinding の新規作成]」、または「[LiveBinding ウィザード]」の各トピックを参照してください。また、何らかの理由でプログラムから LiveBinding を作成する必要がある場合には、「チュートリアル:LiveBinding をプログラムで使用する」の手順を参照してください。

評価ショートカットの利用

評価ショートカットは、一部のバインディング コンポーネントがサポートする技術で、リストや表形式データ(リスト ビュー、グリッド、コンボボックスなど)を保有するコントロールを追加する際に、パフォーマンスを向上させます。

メモ: 評価ショートカットは、FireMonkey グリッドを追加するバインディング コンポーネントのパフォーマンスについては、向上させることはできません。

評価ショートカットをサポートするバインディング コンポーネントは通常、デフォルトでそれらを使用します。なぜなら、評価ショートカットは、カスタム形式を使用、または、式を解析しないバインディング式の評価を、かなり高速に評価することができるからです。

評価ショートカットの使用では、しかしながら、バインディング コンポーネントが、バインディング式をまず確認して、カスタム式の使用や式の解析を行うかどうかを判断する必要があります。すべてまたはほとんどのバインディング式でカスタム形式を使用または式を解析する場合では、そのチェックの実行に必要となる処理が、評価ショートカットの利用によって保存されている処理(それがある場合)より、高くなり場合があります。評価をサポートしているバインディング コンポーネントには通常、ブーリアン プロパティの UseEvalShortcuts があり、これを False に設定することで評価ショートカットを無効にすることができます。

LiveBinding ビジュアル コンポーネント

LiveBinding エンジンは実行時機能ですが、多数のビジュアル コンポーネントが[ツール パレット]に用意されており、設計時にコンポーネント間のライブ バインディングを作成するのに役立ちます。場合によっては、[LiveBinding ウィザード][LiveBinding デザイナ]を使って、ビジュアルにバインディングを作成することもできます。

[ツール パレット]を見ると、[LiveBinding]タブや[LiveBinding (その他)]タブに以下のコンポーネントが含まれており、それをフォーム(VCL またはFireMonkey)上にドラッグ アンド ドロップすることができます。

  • [LiveBinding]タブ
コンポーネント ロゴ コンポーネント名 説明
TBindSourceDB.png TBindSourceDB データベースへのバインディングを作成するために使用されます。
TPrototypeBindSource.png TPrototypeBindSource 着手するデータがまだない場合に手始めに使用できるサンプル データを生成するためのデータ ソースを提供します。後で、このデータ ソースを何らかの実データに置き換えることができます。
TBindSourceDBX.png TBindSourceDBX DBX フレームワークを使用して、データベースへのバインディング作成に使用されます。
TParamsAdapter.png TParamsAdapter ビジュアル コントロールDBX コマンド パラメータにバインディングするために使用されます。
TBindNavigator.png TBindNavigatorFMX または VCL FMX または VCL アプリケーションの開発時にデータセット内のレコードを順次参照するために使用されます。
  • [LiveBinding (その他)]タブ
コンポーネント ロゴ コンポーネント名 説明
TBindingsList.png TBindingsList バインディング リストを保持するために使用されます。
TDataGeneratorAdapter.png TDataGeneratorAdapter データ ジェネレータのアダプタです。
TAdapterBindSource.png TAdapterBindSource データベース以外のデータを扱うために使用されます。アダプタ プロパティは、データ ソースをデータベース以外のデータ(たとえば、オブジェクトのジェネリック コレクションなど)に接続するのに使用されます。
  • '[LiveBinding]タブ
コンポーネント ロゴ コンポーネント名 説明
TBindSourceDB.png TBindSourceDB データベースへのバインディングを作成するために使用されます。
TPrototypeBindSource.png TPrototypeBindSource 着手するデータがまだない場合に手始めに使用できるサンプル データを生成するためのデータ ソースを提供します。後で、このデータ ソースを何らかの実データに置き換えることができます。
TBindNavigator.png TBindNavigator (FMX) FMX アプリケーションの開発時にデータセット内のレコードを順次参照するために使用されます。
  • [LiveBinding (その他)]タブ
コンポーネント ロゴ コンポーネント名 説明
TBindingsList.png TBindingsList バインディング リストを保持するために使用されます。
TDataGeneratorAdapter.png TDataGeneratorAdapter データ ジェネレータのアダプタです。
TAdapterBindSource.png TAdapterBindSource データベース以外のデータを扱うために使用されます。アダプタ プロパティは、データ ソースをデータベース以外のデータ(たとえば、オブジェクトのジェネリック コレクションなど)に接続するのに使用されます。
ヒント: [LiveBinding デザイナ]を使用してコンポーネント間のライブ バインディングを作成すると、適切な LiveBinding コンポーネント(TBindingsList)がフォームに自動的に配置されます。このコンポーネントには、アプリケーションで使用できる全バインディングのリストが格納されています。バインディング リストについての詳細は、「バインディング リスト」を参照してください。

LiveBinding のサンプル

RAD Studio には LiveBinding の多数のサンプル アプリケーションが付属しており [スタート|プログラム|Embarcadero RAD Studio Rio|サンプル] を選択することで、それらを見つけることができます。 対象となるメイン フォルダは、Object Pascal\LiveBinding です。さらに LiveBinding サンプルはフォルダ Object Pascal\FireMonkey Desktop\ListCollections にもあり、これは、「FMX.ListCollections サンプル」で説明されています。

以下の表には、これらのサンプルの一覧を、対応するカテゴリ(FMX または VCL)で分けて示します。 サンプル アプリケーションのなかには、FMX でも VCL でも使用できるものもあれば、どちらか一方のカテゴリでのみ使用できるものもあります。

RAD Studio には、多数の LiveBinding のサンプル アプリケーションが付属しており、[スタート|プログラム|Embarcadero RAD Studio Rio|サンプル]LiveBinding にしたいと思うもののフォルダ)をクリックすることで、見つけることができます。 すべての LiveBinding サンプルのメイン プロジェクト グループは BindSamplesGroup.groupproj です。

ヒント: 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 のチュートリアル」を参照してください。