LiveBinding でのカスタム書式設定式およびカスタム解析式の使用
RAD Studio での LiveBinding への移動
LiveBinding を使ってコントロール、プロパティ、フィールドをバインドする場合、バインディングの一方の端にあるデータをバインディングのもう一方の端で表示する際にはデータを変更した方がよい場合があります。たとえば、大文字で表記された色名のリストのデータセットがある場合に、それらを小文字に変換してからリストに表示するようなケースです。多くの場合、これらの変更は双方向に行われます。たとえば、ISO 日付のデータセットがある場合、それらをユーザーに表示する際にはローカル日付形式に変換し、逆に、ユーザーが手動で入力した日付をデータセットに格納する際には ISO 形式に変換するといったことです。
LiveBinding を使ってコントロール、プロパティ、フィールドをバインドする際には、TLinkFillControlToField や TLinkFillControlToProperty などのバインディング クラスのインスタンスを作成します。これらのクラスのプロパティには、次の 2 種類のプロパティが含まれています。
FillBreakCustomFormat
やFillDisplayCustomFormat
などのCustomFormat
タイプのプロパティ。これらのプロパティでは、ソースとなるコントロール、プロパティ、フィールドから得られた値を変更する式を定義できます。FillBreakCustomParse
やFillDisplayCustomParse
などのCustomParse
タイプのプロパティ。これらのプロパティでは、ソースとなるコントロール、プロパティ、フィールドに格納する前に入力値を変更する式を定義できます。
目次
カスタム書式設定式やカスタム解析式の指定
コントロール、フィールド、プロパティ間の既存のバインディングにカスタム書式設定式やカスタム解析式を指定するには:
- [LiveBinding デザイナ]を開き、対象となるバインディングを選択します。
- [オブジェクト インスペクタ]で以下を行います。
- カスタム書式設定式を指定するには、対応する
CustomFormat
プロパティ(たとえばFillHeaderCustomFormat
やFillValueCustomFormat
)を見つけ、その値にバインディング式を「LowerCase(%s)
」などと入力し、Enter キーを押してこの新しいプロパティ値を保存します。
- この式を追加することで、ソースとなるコントロール、プロパティ、フィールドから得られた値がターゲットとなるコントロール、プロパティ、フィールドに渡される前に、その値に指定の式が必ず作用するようになります。
- カスタム解析式を指定するには、対応する
CustomParse
プロパティ(たとえばFillHeaderCustomParse
やFillValueCustomParse
)を見つけ、その値にバインディング式を「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
の場合は、Lowercase
とlowercase
のどちらを使用しても機能しません。
RAD Studio には、LowerCase
、UpperCase
、Format
など、使用できるデフォルトの LiveBinding メソッドが多数用意されています。これらのメソッドの一覧とそれらの解説については、「デフォルトの LiveBinding メソッド」を参照してください。
また、独自の LiveBinding メソッドを作成することもできます。「カスタム LiveBinding メソッドの作成」を参照してください。
[LiveBinding デザイナ]を使ってコントロール、プロパティ、フィールドをバインドすると、TBindingsList コンポーネントがフォームに追加されます。このコンポーネントの Methods
プロパティを開くと、カスタム バインディング式で使用できる LiveBinding メソッドの一覧が表示されます。これらには、RAD Studio に用意されているものと独自のカスタム LiveBinding メソッドの両方が含まれています。
関連項目
- ビデオ:Using binding expressions in the CustomFormat property of a TLinkPropertyToField component(TLinkPropertyToField コンポーネントの CustomFormat プロパティでバインディング式を使用する)
- A quick guide to evaluate and compile expressions using the LiveBindings expression evaluator(クイック ガイド:LiveBinding 式評価モジュールを使用した式の評価とコンパイル)
- LiveBindings in XE3: Formatting your Fields(XE3 での LiveBinding:フィールドの書式設定)
- LiveBindings : How to treat an Integer field as a Boolean?(LiveBinding:整数フィールドを論理値のように扱う方法)