表示: Delphi C++
表示設定

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 つのフィールドを 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 ビジュアル コンポーネント

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

コンポーネント パレットの[LiveBinding]タブには、フォーム(VCL か FMX のどちらか)にドラッグ アンド ドロップできる以下のコンポーネントがあります。

コンポーネント ロゴ コンポーネント名 説明
TBindSourceDB.png TBindSourceDB データベースへのバインディングを作成するために使用されます。
TPrototypeBindSource.png TPrototypeBindSource 着手するデータがまだない場合に手始めに使用できるサンプル データを生成するためのデータ ソースを提供します。後で、このデータ ソースを何らかの実データに置き換えることができます。
TBindingsList.png TBindingsList バインディング リストを保持するために使用されます。
TBindScope.png TBindScope コンポーネントへのバインディングに使用されます。
TDataGeneratorAdapter.png TDataGeneratorAdapter データ ジェネレータのアダプタです。
TAdapterBindSource.png TAdapterBindSource データベース以外のデータを扱うために使用されます。アダプタ プロパティは、データ ソースをデータベース以外のデータ(たとえば、オブジェクトのジェネリック コレクションなど)に接続するのに使用されます。
TBindNavigator.png TBindNavigator(FMX) FMX アプリケーションの開発時にデータセット内のレコードを順次参照するために使用されます。
TBindNavigator.png 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 対応のコンポーネントを作成する」を参照してください。

関連項目

サンプル

チュートリアル

他言語版