4D v17

WP Get position

ホーム

 
4D v17
WP Get position

WP Get position 


 

WP Get position ( targetObj {; layout} ) -> 戻り値 
引数   説明
targetObj  Object in 4D Write Pro ドキュメント、レンジ または 要素の参照
layout  倍長整数 in 評価の際に使用される4D Write Pro ドキュメントのレイアウト: 0(デフォルト)=4D Write Pro レイアウト、 1=HTML WYSIWYG
戻り値  Object in 位置情報

説明   

WP Get position コマンドは、targetObj 引数で指定したターゲットのカレントの位置を説明するオブジェクトを返します。

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

  • レンジ
  • 要素参照(表 / 行 / 段落 / 本文 / ヘッダー / フッター / ピクチャー)
  • 4D Write Pro ドキュメント

このコマンドは位置の情報を、以下のプロパティを持つオブジェクトとして返します:

プロパティ名詳細
section数値targetObj 引数と交錯する最初のセクションの番号
page数値targetObj 引数と交錯する最初のページの番号
column数値targetObj 引数と交錯する最初のカラムのインデックス(1-based)
line数値targetObj 引数と交錯する最初の行のインデックス(カラム(あるいはカラムがない場合にはページ)に対して相対的 - 1-based)
position数値targetObj 引数の最初の文字の、行の中での位置(1-based)

targetObj 引数が空レンジの場合、WP Get position はレンジの開始位置情報を返します。
targetObj 引数がヘッダーあるいはフッター内のテキストを参照する場合、WP Get position はヘッダー/フッターが最初のセクション/ページ内にて表示されている位置情報を返します。
targetObj 引数が(複数のページに複製可能な)アンカーされた画像を参照する場合、WP Get position は画像が最初のセクション/ページ内にてアンカーされている位置情報を返します。

任意のlayout 引数を使用すると、targetObj の評価にHTML wysiwyg ビューを設定することができます。"4D Write Pro"テーマ内にある、以下の定数のいづれか1つを渡すことができます:

定数 コメント
wk 4D Write Pro layout 倍長整数 0 標準の4D Write Proレイアウト。いくつかの特定のスタイル属性を含める事ができます。
wk html wysiwyg 倍長整数 1 このレイアウトでは、4D Write Proの高度な属性のうち、全てのブラウザで互換性があるもの以外は除去されます。

layout 引数が省略された場合、デフォルトでは4D Write Pro レイアウトが使用されます。

WP Get position では、WP PRINT コマンドと同じビュー設定が使用されます:

  • ヘッダー: 表示
  • フッター: 表示
  • 式: 計算されて表示
  • ページモード: ページあるいは下書き(HTML wysiwyg ビューはコマンドによって定義された通りです)

targetObj が4D Write Pro フォームエリアに表示されている場合、必ずエリアのビュー設定とコマンドのビュー設定が同じ情報を返すように設定が一致しているようにしてください。また、これらの情報がエリア内で異なっていた場合、4D Write Pro はコマンドを呼び出すたびにレイアウトを計算するためにドキュメントを"クローン"しなければならず、そのため時間がかかる可能性があることに注意してください。パフォーマンス上の理由から、こういった場合にはドキュメントをオフラインでビルドし、ビルドが完成したあとにドキュメントをフォームオブジェクトにコピーすることが推奨されます。

レンジのページ番号を調べたい場合を考えます:

 C_OBJECT($range;$rangePosition)
 $range:=WP Get selection(WParea) //ユーザーセレクションからレンジを取得
 $rangePosition:=WP Get position($range;wk 4D Write Pro layout)
 ALERT("First page number in selection is "+String($rangePosition.page))

ドキュメントの最初のページと最後のページにおいて、テキストカラーを青に設定したい場合を考えます:

 C_LONGINT($nbPages)
 C_OBJECT($body)
 C_COLLECTION($_paragraphs)
 
 $nbPages:=WP Get page count([DOC]Sample)
 $body:=WP Get body([DOC]Sample)
 $_paragraphs:=WP Get elements($body;wk type paragraph)
 For each($paragraph;$_paragraphs)
    $info:=WP Get position($paragraph)
    If($info.page=1)|($info.page=$nbPages//最初のページと最後のページのテキストカラーは青に
       WP SET ATTRIBUTES($paragraph;wk text color;"blue")
    Else //他のページはテキストカラーは黒に
       WP SET ATTRIBUTES($paragraph;wk text color;"black")
    End if
 End for each

ドキュメントをビルドする際、段落がページで分割されることを避けたい場合を考えます:

 C_OBJECT(WParea;$body)
 C_COLLECTION($_paragraphs)
 WParea:=WP New
 
 $body:=WP Get body([DOC]Sample)
 $_paragraphs:=WP Get elements($body;wk type paragraph)
 
 For each($paragraph;$_paragraphs)
    $insert:=WP New($paragraph)
 
  //カレントのレンジとページ番号を記憶
    $rangeBefore:=WP Create range(WParea;wk end text;wk end text)
    $info:=WP Get position($rangeBefore)
    $memoPage:=$info.page
 
  //コンテンツを挿入、レンジには含めない
    WP INSERT DOCUMENT($rangeBefore;$insert;wk append;wk exclude from range)
 
  //挿入後の位置をチェック
    $rangeAfter:=WP Create range(WParea;wk end text;wk end text)
    $info:=WP Get position($rangeAfter)
 
    If($memoPage#$info.page) // ページが変化していた場合、改ページを追加
       WP INSERT BREAK($rangeBefore;wk page break;wk replace)
    End if
 
 End for each



参照 

WP PRINT

 
プロパティ 

プロダクト: 4D
テーマ: 4D Write Proランゲージ
番号: 1577

This command can be run in preemptive processes

 
履歴 

New
初出: 4D v17

 
ARTICLE USAGE

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