ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com

ホーム

 
4D v19
フォーミュラの管理

フォーミュラの管理  


 

概要  

4D Write Pro ドキュメントには、変数やフィールドに加え、式やプロジェクトメソッド、4D コマンドなどの動的な4Dフォーミュラへの参照を含めることができます。ページ番号などの特定の変数も参照することができます(以下の式の挿入 を参照してください)。

フォーミュラはWP INSERT FORMULA コマンドを使用することで4D Write Pro エリアに挿入することができ、WP Get formulas コマンドを使用して読み出しもできますが、WP Get text コマンドを使用することでも返されます。

フォーミュラは以下のタイミングで評価されます:

  • 計算された値を表示するフォームオブジェクト内に挿入されたとき
  • 計算された値を表示するフォームオブジェクト内に4D Write Pro オブジェクトが読み込まれたとき
  • WP COMPUTE FORMULAS コマンドが呼び出された時
  • WP FREEZE FORMULAS コマンドを使用して値が"固定化"(計算)されたとき(ただし事前に計算されていない場合)
  • 印刷の前(ただし事前に計算されていない場合)
  • .docx 形式に書き出される前(ただしフォーミュラがMS Word フォーミュラにマップすることができない場合)
  • 固定化、印刷、フォーミュラの計算、の標準アクションが呼び出された時。詳細は標準アクションを参照してください。

フォーミュラはドキュメントが(WP NewWP INSERT DOCUMENT を使用して、あるいはwpArea:=[table]field などで)読み込まれたときでも、以下の場合には評価されません:

  • ドキュメントが画面外にある場合
  • ドキュメントが画面内に表示されているが、フォームオブジェクトが参照しか表示していない場合

フォーミュラはWP FREEZE FORMULAS コマンドを呼び出すと、静的な値になります(ただしページ番号とページ数は除く、以下参照)。

互換性に関する注意: ST INSERT EXPRESSIONST Get expressionST COMPUTE EXPRESSIONS、およびST FREEZE EXPRESSIONS コマンドを使用して式を管理するのは、廃止予定となっていますが、4D Write Pro の互換性のために引き続きサポートはされます。

例題  

4D Write Pro エリアの選択範囲を、変数の中身で置き換えたい場合を考えます:

 C_TEXT(fullName)
 C_OBJECT($sel)
 fullName:="John Smith"
 $sel:=WP Selection range(4DWPArea)
 Case of
    :(Form event code=On Clicked)
       WP INSERT FORMULA($sel;Formula(fullName);wk replace)
 End case

WP INSERT FORMULA コマンドを使用することで、任意のドキュメントエリア(本文、ヘッダー、フッター)にドキュメント属性やページ属性に関連した特殊な式を挿入することができます。

 

フォーミュラのシンタックス 詳細
This.title テキスト タイトルはwk title 属性で定義されています。
This.author  テキスト 作者はwk author 属性で定義されています。
This.subject  テキスト 主題はwk subject 属性で定義されています。
This.company テキスト 会社はwk company 属性で定義されています。
This.notes テキスト 注記はwk notes 属性で定義されています。
This.dateCreation 日付 作成日はwk date creation 属性で定義されています。
This.dateModified 日付 変更日はwk date modified 属性で定義されています。
This.pageNumber(*) 倍長整数 ページ番号は、以下のように定義されます:
  • ドキュメントの開始(デフォルト)からカウント
  • ページ数がセクションの開始ページから定義されている場合にはセクションの開始ページからカウント

このフォーミュラは常に動的に計算され、WP FREEZE FORMULASコマンドの影響は受けません。

This.pageCount(*) 倍長整数 ページ数: ページの総数

この式は常に動的に計算され、WP FREEZE FORMULAS コマンドの影響は受けません。
This.document オブジェクト 4D Write Pro ドキュメント

 

(*) 重要: This.pageNumber および This.pageCount は4D Write Pro フォーミュラ内でのみ直接使用できます(formula.source の文字列内に入っていなければなりません)。フォーミュラが呼び出したメソッド内の4D ランゲージ内で使用されていた場合には、返される値は不正確なものになります。しかしながらこれらを、フォーミュラから直接呼び出されるメソッドに引数として渡すことはできます:

  • この形なら使用可能: « formatNumber(This.pageNumber) »
  • この形は使用不可能: « formatNumber » formatNumber メソッド内でThis.pageNumber を処理する

例えば、ページ番号をフッターエリアに挿入したい場合:

 $footer:=WP Get footer(4DWP;1)
 WP INSERT FORMULA($footer;Formula(This.pageNumber);wk append)

互換性に関する注意: 4D v18 R2 以前のバージョンからのドキュメント内にある既存の$wp_ 変数は、引き続きサポートされ、評価されます。

日付

Current date コマンド、日付変数、日付を返すメソッドがフォーミュラに挿入された場合、それはsystem date short フォーマットを使用して自動的にテキストへと変換されます。

時間

Current time コマンド、時間変数、時間を返すメソッドがフォーミュラに挿入された場合、それはString コマンドに入れてあげる必要があります。なぜなら、時間型はJSON ではサポートされていないからです。以下のフォーミュラの例を参考にして下さい:

  // このコードが最適な例です
 $formula1:=Formula(String(Current time)) //OK 
 
  // このコードは動作しますが、"Edit formula" の直後を除いて通常は推奨されません。
 $formula2:=Formula from string("String(Current time)") //OK
 
  // 以下のコードは間違いです。時間値は秒数(またはミリ秒数)の倍長整数として表示され、時間としては表示されないからです。
 $formula3:=Formula from string("Current time") // 有効ではない
 $formula4:=Formula(Current time// 有効ではない

4D Writ Pro ドキュメントの挿入されたテーブルおよびフィールド式は、データベースのバーチャルストラクチャー定義をサポートします。フォーミュラに公開されるバーチャルストラクチャーは、SET FIELD TITLES(...;*) および SET TABLE TITLES(...;*) コマンドを通して定義されます。

バーチャルストラクチャーが定義されている場合:

  • 4D Write Pro ドキュメントが値ではなく参照を表示する場合、フィールドを格納する式への参照はバーチャルな名前を表示します。
  • WP Get text は、expressions 引数にwk expressions as source オプションが設定されている場合、バーチャルストラクチャー名を返します。
  • WP INSERT FORMULA は、バーチャルストラクチャーを無視し、常に実際のテーブル/フィールド名を受け付けます。

注: ドキュメントが"式を表示"モードで表示されているとき、バーチャルストラクチャーに属していないテーブルまたはフィールドへの参照は"?"文字付きで表示されます。例えばあるフィールドがバーチャルストラクチャー内で定義されていなければ、 [VirtualTableName]? と表示されます。



参照 

Download HDI database
スタイル付テキストテーマのコマンドの使用

 
プロパティ 

プロダクト: 4D
テーマ: フォーミュラの管理

 
ページの目次 
 
履歴 

初出: 4D v16
変更: 4D v17 R4
変更: 4D v18 R2
名称変更: 4D v18 R2

 
ARTICLE USAGE

4D Write Proリファレンス ( 4D v19)