メインコンテンツまでスキップ
バージョン: 20 R8 BETA

WP Insert formula

WP Insert formula ( targetObj ; formula ; mode {; rangeUpdate} ) : Object

引数説明
targetObjObjectレンジまたは要素または4D Write Pro ドキュメント
formulaObjectフォーミュラオブジェクト、またはformula とname プロパティを持つオブジェクト
modeNumber挿入モード
rangeUpdateNumber挿入されたコンテンツをレンジ内に含めるか含めないかを指定
戻り値Objectフォーミュラの結果を表すテキストレンジオブジェクト

説明

WP Insert formula コマンドは、targetObj 引数で指定したターゲット内にformula 引数のフォーミュラを、mode 引数で指定したモードで挿入しその結果のテキストレンジを返します。

targetObj 引数には、以下のものを渡すことができます:

  • レンジ
  • 要素(表組 / 行 / セル / 段落 / 本文 / ヘッダー / フッター / セクション / サブセクション / インライン画像)
  • 4D Write Pro ドキュメント

formula 引数には、評価される4D フォーミュラを渡します。 以下のものを渡すことができます:

プロパティDescription
nameTextドキュメント内で表示するフォーミュラの名前
formulaObjectFormula または Formula from string コマンドで作成されたフォーミュラオブジェクト

フォーミュラのname プロパティがあるオブジェクトを使用する場合、ドキュメント内で、フォーミュラが参照として表示される場合にはフォーミュラ参照ではなくそのname の名前が表示され、値または記号として表示される場合にはフォーミュラtip に名前が表示されます。 name プロパティが空の文字列を格納しているか省略されている場合、それはオブジェクトから削除され、デフォルトでフォーミュラが表示されます。 詳細な情報については、フォーミュラの管理 のページを参照してください。

mode 引数には、使用する挿入モードを指定する、以下の定数のいずれか一つを渡します:

定数説明
wk appendInteger2コンテンツをターゲットの終わりに挿入する
wk prependInteger1コンテンツをターゲットの始めに挿入する
wk replaceInteger0ターゲットのコンテンツを置き換える
  • targetObj がレンジである場合、オプションのrangeUpdate 引数に以下の定数のいづれか一つを渡すことで挿入されたformula 引数のフォーミュラが結果のレンジに含まれるかどうかを指定することができます:
定数説明
wk exclude from rangeInteger1挿入されたコンテンツを更新されたレンジに含めない
wk include in rangeInteger0挿入されたコンテンツを更新されたレンジに含める(デフォルト)

rangeUpdate 引数を渡さなかった場合、デフォルトでは挿入されたformula 引数のフォーミュラは結果のレンジに含まれます。

  • targetObj がレンジではない場合、rangeUpdate は無視されます。

フォーミュラオブジェクトは、呼び出されたときに、そのフォーミュラオブジェクトを作成したデータベースまたはコンポーネントのコンテキスト内で評価されるという点に注意してください。

例題 1

全てのCurrent date フォーミュラを、フォーマットされた文字列で置き換えたい場合を考えます:

 var $_formulas : Collection
var $find;$newFormula : Object

// 検索するフォーミュラを定義
$find:=Formula(Current date)

// 置換するフォーミュラを定義
$newFormula:=Formula(String(Current date;System date long))

// ドキュメント内にあるフォーミュラを全て検索
$_formulas:=WP Get formulas(WriteProArea)

// WP Get formulas から取得したコレクション内をクエリする
$_formulas:=$_formulas.query("formula.source =:1";$find.source)

// WP Get formulas から取得したコレクション内をクエリする
For each($formula;$_formulas)
WP Insert formula($formula.range;$newFormula;wk replace)
End for each

例題 2

顧客の名前にフォーミュラによる名前を使用したい場合を考えます:

  // データを追加する
$data:=New object("customer";New object("lastname";"Smith";"firstname";"John"))
WP SET DATA CONTEXT(WPArea;$data)

// name プロパティを持つフォーミュラオブジェクトを作成する
$o:=New object
$o.formula:=Formula(This.data.customer.firstname+" "+This.data.customer.lastname)
$o.name:="Customer name"

// テキストとして挿入
$range:=WP Text range(WPArea;wk start text;wk end text)
WP SET TEXT($range;"Dear ";wk append)
WP Insert formula($range;$o;wk append)

結果:

例題 3

フォーミュラを黄色でハイライトしたい場合を考えます:

WParea:=WP New
WP SET TEXT(WParea; "The project was completed on: "; wk append)
$range1:=WP Insert formula(WParea; Formula(Current date); wk append)

WP SET ATTRIBUTES($range1; wk background color; "yellow")

結果:

参照

Managing formulas
WP COMPUTE FORMULAS
WP FREEZE FORMULAS
WP Get formulas