メインコンテンツまでスキップ
バージョン: 開発中

ST COMPUTE EXPRESSIONS

ST COMPUTE EXPRESSIONS ( {* ;} object {; startSel {; endSel}} )

引数説明
*演算子指定時: object はオブジェクト名(文字列) 省略時: object は変数またはフィールド
objectanyオブジェクト名( * 指定時)、または変数やフィールド( * 省略時)
startSelInteger選択範囲の開始地点
endSelInteger選択範囲の終了地点

このコマンドはスレッドセーフではないため、プリエンプティブなコードには使えません。

説明

ST COMPUTE EXPRESSIONSコマンドは、object 引数で指定したマルチスタイルあるいは4D Write Proのフィールドあるいは変数内にあるダイナミック 4D 式を更新します。

マルチスタイルテキストエリアあるいは4D Write Pro エリアで使用されている 4D 式の詳細に関しては、 ST INSERT EXPRESSION コマンドの詳細を参照して下さい。

このコマンドは object で指定したオブジェクト内の4D 式の結果を、カレントの内容に応じて更新してそれを表示します。例えば、挿入された4D 式が時刻であった場合、表示される時刻は ST COMPUTE EXPRESSIONS コマンドを使用するたびに変更されます。4D 式は以下のときにも更新されます:

  • 挿入されたとき
  • オブジェクトがロードされたとき
  • ST FREEZE EXPRESSIONS コマンドにおいて、2番目の * を渡して4D式が固定化されたとき

ST COMPUTE EXPRESSIONS コマンドは SPAN タグも含めてスタイル付テキストを変更しません。 object で指定されたオブジェクト内に表示された標準テキストのみ変更します。処理された値はスタイル付テキストの中には保存されず、参照のみが保存されます。

任意の * 演算子を渡した場合、object 引数でオブジェクト名を文字列で指定します。省略時には object 引数でフィールドまたは変数を指定します。

指定されたobject はフォーカスになっている必要はありません。しかしながら、object がマルチスタイルテキストエリアを指定している場合にはそのエリアはフォームに含まれている必要があります。そうでない場合にはST COMPUTE EXPRESSIONS コマンドは何もしません。

注: object が4D Write Pro ドキュメントを指定している場合、たとえそのドキュメントがフォームオブジェクトの中で開かれていなかったとしてもコマンドはそれを更新します(ピクチャー式を参照してください)。

任意の startSel 引数と endSel 引数はオブジェクト内のテキストの選択範囲を指定します。 startSelendSel は標準テキストのみをカウントし、スタイルタグは文字数としてはカウントされません。参照は一文字としてカウントされるということに注意して下さい。

  • startSelendSel の両方を渡した場合、 ST COMPUTE EXPRESSIONS コマンドは指定された範囲内の4D式のみ変更します。
  • startSel のみを指定した場合、もしくは endSel の値がオブジェクト内の総文字数より大きい場合は、 startSel の位置からテキストの終わりまでの全ての4D式が変更されます。
  • startSelendSel の両方を省略した場合、指定されたオブジェクト内の全ての4D式は変更されます。

4D では、選択範囲を自動的に指定するために startSel 引数と endSel 引数に渡す定数をご用意しています。これらの定数は "Multistyle Text" テーマ内にあります:

定数コメント
ST End highlight倍長整数-1001オブジェクト内のカレントのテキストセレクションの最後の文字を指定します(*)
ST End text倍長整数0オブジェクトに含まれるテキストの最後の文字を指定します。
ST Start highlight倍長整数-1000オブジェクト内のテキストのカレントセレクションの最初の文字をを指定します (*)
ST Start text倍長整数1オブジェクト内に含まれるテキストの最初の文字を指定します。

(*) これら二つの定数を使用する際には、 object 引数にオブジェクト名を渡してあげる必要があります。フィールドへの参照または変数を渡した場合、コマンドはオブジェクト内の全てのテキストに適用されます。

注: もし startSel 引数が endSel 引数より大きい場合、コマンドは何も行わず、OK変数は0に設定されます。(ただし endSel が0である場合を除く)

例題

テキストの選択範囲に含まれる参照を更新する場合を考えます:

 ST COMPUTE EXPRESSIONS(*;"myText";ST Start highlight;ST End highlight)

参照

ST FREEZE EXPRESSIONS
ST INSERT EXPRESSION