ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
SET PRINT MARKER
|
SET PRINT MARKER ( markNum ; position {; *} ) | ||||||||
引数 | 型 | 説明 | ||||||
markNum | 倍長整数 |
![]() |
マーカ番号 | |||||
position | 倍長整数 |
![]() |
マーカの新しい位置 | |||||
* | 演算子 |
![]() |
指定時 = 後続のマーカを移動する 省略時 = 後続のマーカを移動しない | |||||
SET PRINT MARKER コマンドを使用し、印刷時にマーカ位置を指定することができます。このコマンドをGet print marker、OBJECT MOVE、Print formコマンドと組み合わせて使用することにより、印刷エリアのサイズを調節することができます。
SET PRINT MARKERは次の2つの状況において使用可能です:
コマンドの有効範囲は印刷に限定され、画面上には変更が表示されません。フォームに対して行った変更は保存されません。
markNum引数には、テーマ内の定数のいずれかを渡します:
定数 | 型 | 値 |
Form break0 | 倍長整数 | 300 |
Form break1 | 倍長整数 | 301 |
Form break2 | 倍長整数 | 302 |
Form break3 | 倍長整数 | 303 |
Form break4 | 倍長整数 | 304 |
Form break5 | 倍長整数 | 305 |
Form break6 | 倍長整数 | 306 |
Form break7 | 倍長整数 | 307 |
Form break8 | 倍長整数 | 308 |
Form break9 | 倍長整数 | 309 |
Form detail | 倍長整数 | 0 |
Form footer | 倍長整数 | 100 |
Form header | 倍長整数 | 200 |
Form header1 | 倍長整数 | 201 |
Form header10 | 倍長整数 | 210 |
Form header2 | 倍長整数 | 202 |
Form header3 | 倍長整数 | 203 |
Form header4 | 倍長整数 | 204 |
Form header5 | 倍長整数 | 205 |
Form header6 | 倍長整数 | 206 |
Form header7 | 倍長整数 | 207 |
Form header8 | 倍長整数 | 208 |
Form header9 | 倍長整数 | 209 |
positionには、新しい位置をピクセル単位で渡します。
オプション引数 * を渡すと、このコマンドの実行時に、markNumで指定したマーカより下側に位置するすべてのマーカが、指定したマーカと同じピクセル数だけ、同じ方向へ移動します。
警告: このマーカより下側にあるエリア内のオブジェクトもすべて移動します。
引数 * を使用すると、後続の各マーカの最初の位置より下側にmarkNumで指定したマーカを配置することができます。これら後続のマーカも同時に移動します。
Notes:
この例は、3つのカラムがあるレポートを作成します。各行の高さは、フィールド内容に応じて実行中に計算されます。
印刷に使用する出力フォームは次の通りです:
このフォームに対してOn Printing Detailフォームイベントが選択されています(印刷されるエリアに関係なく、Print form コマンドはこのタイプのフォームイベントだけを生成する点に留意してください)。
レコードごとに、(多くの内容を保持する) “Actors”または“Summary”カラムの内容に応じて行の高さを調整しなくてはなりません。目的とする結果を次に示します:
印刷用のプロジェクトメソッドは次の通りです:
C_LONGINT(vLprint_height;$vLheight;vLprinted_height)
C_STRING(31;vSprint_area)
PAGE SETUP([Film];"Print_List3")
GET PRINTABLE AREA(vLprint_height)
vLprinted_height:=0
ALL RECORDS([Film])
vSprint_area:="Header" `ヘッダエリアの印刷
$vLheight:=Print form([Film];"Print_List3";Form header)
$vLheight:=21 `固定高
vLprinted_height:=vLprinted_height+$vLheight
While(Not(End selection([Film])))
vSprint_area:="Detail" `詳細エリアの印刷
$vLheight:=Print form([Film];"Print_List3";Form detail)
`詳細の計算はフォームメソッドで実行
vLprinted_height:=vLprinted_height+$vLheight
If(OK=0) `CANCEL がフォームメソッドで実行された
PAGE BREAK
vLprinted_height:=0
vSprint_area:="Header" `ヘッダエリアの再印刷
$vLheight:=Print form([Film];"Print_List3";Form header)
$vLheight:=21
vLprinted_height:=vLprinted_height+$vLheight
vSprint_area:="Detail"
$vLheight:=Print form([Film];"Print_List3";Form detail)
vLprinted_height:=vLprinted_height+$vLheight
End if
NEXT RECORD([Film])
End while
PAGE BREAK `最後のページの印刷
Print_List3のフォームメソッド:
C_LONGINT($l;$t;$r;$b;$fixed_wdth;$exact_hght;$l1;$t1;$r1;$b1)
C_LONGINT($final_pos;$i)
C_LONGINT($detail_pos;$header_pos;$hght_to_print;$hght_remaining)
Case of
:(vSprint_area="Detail") `詳細印刷実行中
OBJECT GET COORDINATES([Film]Actors;$l;$t;$r;$b)
$fixed_wdth:=$r-$l ` Actors テキストフィールドサイズの計算
$exact_hght:=$b-$t
OBJECT GET BEST SIZE([Film]Actors;$wdth;$hght;$fixed_wdth)
`内容に基づく最適なフィールドのサイズ
$movement:=$hght-$exact_hght
OBJECT GET COORDINATES([Film]Summary;$l1;$t1;$r1;$b1)
$fixed_wdth1:=$r1-$l1 `Summaryテキストフィールドサイズの計算
$exact_hght1:=$b1-$t1
OBJECT GET BEST SIZE([Film]Summary;$wdth1;$hght1;$fixed_wdth1)
`内容に基づく最適なフィールドのサイズ
$movement1:=$hght1-$exact_hght1
If($movement1>$movement)
`最も高いフィールドの取得
$movement:=$movement1
End if
If($movement>0)
$position:=Get print marker(Form detail)
$final_pos:=$position+$movement
`詳細マーカとそれより下のオブジェクトを移動
SET PRINT MARKER(Form detail;$final_pos;*)
`テキストエリアのサイズ変更
OBJECT MOVE([Film]Actors;$l;$t;$r;$hght+$t;*)
OBJECT MOVE([Film]Summary;$l1;$t1;$r1;$hght1+$t1;*)
`分離線のリサイズ
OBJECT GET COORDINATES(*;"H1Line";$l;$t;$r;$b)
OBJECT MOVE(*;"H1Line";$l;$final_pos-1;$r;$final_pos;*)
For($i;1;4;1)
OBJECT GET COORDINATES(*;"VLine"+String($i);$l;$t;$r;$b)
OBJECT MOVE(*;"VLine"+String($i);$l;$t;$r;$final_pos;*)
End for
End if
`利用可能なスペースの計算
$detail_pos:=Get print marker(Form detail)
$header_pos:=Get print marker(Form header)
$hght_to_print:=$detail_pos-$header_pos
$hght_remaining:=vLprint_height-vLprinted_height
If($hght_remaining<$hght_to_print) `Insufficient height
CANCEL `次のページに移動
End if
End case
Get print marker
OBJECT GET BEST SIZE
OBJECT GET COORDINATES
OBJECT MOVE
PAGE BREAK
Print form
PRINT RECORD
PRINT SELECTION
プロダクト: 4D
テーマ: 印刷
番号:
709
変更: 4D 2003
ランゲージリファレンス ( 4D v20 R7)