LiveBinding でのカスタム書式設定式およびカスタム解析式の使用

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

RAD Studio での LiveBinding への移動


LiveBinding を使ってコントロール、プロパティ、フィールドをバインドする場合、バインディングの一方の端にあるデータをバインディングのもう一方の端で表示する際にはデータを変更した方がよい場合があります。たとえば、大文字で表記された色名のリストのデータセットがある場合に、それらを小文字に変換してからリストに表示するようなケースです。多くの場合、これらの変更は双方向に行われます。たとえば、ISO 日付のデータセットがある場合、それらをユーザーに表示する際にはローカル日付形式に変換し、逆に、ユーザーが手動で入力した日付をデータセットに格納する際には ISO 形式に変換するといったことです。

LiveBinding を使ってコントロール、プロパティ、フィールドをバインドする際には、TLinkFillControlToFieldTLinkFillControlToProperty などのバインディング クラスのインスタンスを作成します。これらのクラスのプロパティには、次の 2 種類のプロパティが含まれています。

カスタム書式設定式やカスタム解析式の指定

コントロール、フィールド、プロパティ間の既存のバインディングにカスタム書式設定式やカスタム解析式を指定するには:

  1. [LiveBinding デザイナ]を開き、対象となるバインディングを選択します。
    [LiveBinding デザイナ]では、2 つのフィールドを接続するバインディングが青い矢印で表示されます。矢印をクリックして選択すると、下図に示すように、矢印が太くなります。
    LiveBindingsDesignerUnselectedBinding.png LiveBindingsDesignerSelectedBinding.png
  2. [オブジェクト インスペクタ]で以下を行います。
    • カスタム書式設定式を指定するには、対応する CustomFormat プロパティ(たとえば FillHeaderCustomFormatFillValueCustomFormat)を見つけ、その値にバインディング式を「LowerCase(%s)」などと入力し、Enter キーを押してこの新しいプロパティ値を保存します。
      ObjectInspectorCustomFormatLowerCase.png
    この式を追加することで、ソースとなるコントロール、プロパティ、フィールドから得られた値がターゲットとなるコントロール、プロパティ、フィールドに渡される前に、その値に指定の式が必ず作用するようになります。
    FormDesignerCapitalizedColorNameList.png FormDesignerLowerCaseColorNameList.png
    • カスタム解析式を指定するには、対応する CustomParse プロパティ(たとえば FillHeaderCustomParseFillValueCustomParse)を見つけ、その値にバインディング式を「UpperCase(%s)」などと入力し、Enter キーを押してこの新しいプロパティ値を保存します。
    これで、ソースとなるコントロール、プロパティ、フィールドに格納される前に、入力値には指定の式が作用するようになりました。

バインディング式

使用できる最も簡単なバインディング式は %s です(%s はソース値を表します)。つまり、バインディングのカスタム書式設定プロパティで単に %s を使用した場合、ソース値は変化せず、カスタム書式設定プロパティの値を未入力のままにしておいた場合と同じ結果になります。

ソース オブジェクトへのアクセス

Self.Owner を使用して、ソース オブジェクトにアクセスすることもできます。この場合は、バインディングに関連するデータだけでなく、ソース オブジェクトのすべてのデータにアクセスできるようになります。次のいずれかの式を使用して、ソース オブジェクトのデータにアクセスできます。

  • Self.Owner.<フィールド>.<プロパティ>。たとえば、Self.Owner.CUSTOMER.Text
    メモ: ソース オブジェクト名(上記の例では "CUSTOMER")が有効な ID である限り、この構文を使用できます。ソース オブジェクトがフィールドの場合、その名前は有効な名前でない可能性があります。このような場合には、下記の構文を代わりに使用します。
  • Self.Owner.FieldByName('<フィールド>').<プロパティ>
    たとえば、Self.Owner.FieldByName('CUSTOMER').Text

ビデオ『Using binding expressions in the CustomFormat property of a TLinkPropertyToField component(TLinkPropertyToField コンポーネントの CustomFormat プロパティでバインディング式を使用する)』(英語版)を参照してください。

数学記号の使用

式では次の数学記号を使用できます。

  • 定数: nil True False Pi
  • 算術演算子: + - * /
  • 論理演算子: = <> < <= > >=
  • かっこ ()(演算子の優先順位を変更するために使用)

文字列の連結

ソース値にプレフィックスやサフィックスを付け加えるには、追加するその文字列を一重引用符( ' )で囲み、プラス記号(+)を使用してその文字列をソース値の文字列に連結します。たとえば、'Hello, ' + %s + '!' などとします。

LiveBinding メソッドの使用

LiveBinding メソッドは、カスタム バインディング式で使用できるメソッドです。たとえば、'I like ' + LowerCase(%s) + ' crayons' といった式を書くことができます。この場合、ソース文字列 %s は小文字に変換されます。

メモ: LiveBinding メソッドでは、大文字/小文字が区別されます。LiveBinding メソッド名が LowerCase の場合は、Lowercaselowercase のどちらを使用しても機能しません。

RAD Studio には、LowerCaseUpperCaseFormat など、使用できるデフォルトの LiveBinding メソッドが多数用意されています。これらのメソッドの一覧とそれらの解説については、「デフォルトの LiveBinding メソッド」を参照してください。

また、独自の LiveBinding メソッドを作成することもできます。「カスタム LiveBinding メソッドの作成」を参照してください。

[LiveBinding デザイナ]を使ってコントロール、プロパティ、フィールドをバインドすると、TBindingsList コンポーネントがフォームに追加されます。このコンポーネントの Methods プロパティを開くと、カスタム バインディング式で使用できる LiveBinding メソッドの一覧が表示されます。これらには、RAD Studio に用意されているものと独自のカスタム LiveBinding メソッドの両方が含まれています。

関連項目