| 4D v20.1Print form | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
 | 
    4D v20.1
 Print form 
         | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Print form ( {aTable ;} form {; formData} {; area1{; area2}} ) -> 戻り値 | ||||||||
| 引数 | 型 | 説明 | ||||||
| aTable | テーブル |   | フォームが属するテーブル, または 省略した場合は、デフォルトテーブル | |||||
| form | 文字, オブジェクト |   | (プロジェクトまたはテーブル)フォーム名(文字列)、 あるいはフォームを定義した.jsonファイルへのPOSIXパス(文字列)、 あるいは印刷するフォームを定義したオブジェクト | |||||
| formData | オブジェクト |   | フォームに割り当てるデータ | |||||
| area1 | 倍長整数 |   | 印刷マーカ、または開始エリア(area2が指定された場合) | |||||
| area2 | 倍長整数 |   | 終了エリア(area1が指定された場合) | |||||
| 戻り値 | 倍長整数 |   | 印刷されたエリアの高さ | |||||
Print form は、aTableのフィールドや変数の現在の値を使用してformを印刷します。通常は、印刷処理を完全に制御する必要のある非常に複雑なレポートを印刷するために使用します。Print form はレコード処理、ブレーク処理、改ページ処理を全く行いません。これらの処理はすべて開発者が行います。Print form は固定されたサイズの枠のなかにフィ-ルドや変数を印刷します。
form 引数には、以下のいづれかを渡すことができます:
Print form は、フォームの印刷後に改ページを行わないため、同じページに異なるフォームを容易に配置することができます。したがって、Print form は、異なるテーブルや異なるフォームを含む複雑な印刷処理に最適です。フォーム間で改ページを強制的に行うにはPAGE BREAK コマンドを使用してください。印刷可能領域を超える高さのフォームの印刷を次のページに持ち越すには、PAGE BREAK コマンドを使用する前にCANCEL コマンドを呼び出してください。
3つの異なるシンタックスを使用できます:
詳細エリアの印刷
シンタックス:
 height:=Print form(myTable;myForm)この場合、Print form はフォームの詳細エリア (ヘッダマーカと詳細マーカの間のエリア) だけを印刷します。
フォームエリアの印刷
シンタックス:
 height:=Print form(myTable;myForm;marker)この場合コマンドはmarkerで示されるセクションを印刷します。以下のForm Area テーマの定数のうちの1つをmarker引数に渡します:
| 定数 | 型 | 値 | 
| 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 | 
任意のエリア部分の印刷
シンタックス:
 height:=Print form(myTable;myForm;areaStart;areaEnd)この場合、コマンドはareaStartおよびareaEnd引数間に含まれる部分を印刷します。値はピクセル単位で入力しなければいけません。
formData
オプションとして、form 引数のフォームに、formData オブジェクトを使用してパラメーターを渡すことができます。formData オブジェクトのプロパティは、Form コマンドを通してフォームコンテキスト内から利用することが可能です。例えば、formData に{"version","12"} というデータを格納しているオブジェクトを渡した場合、フォーム内から以下のようなコードを呼び出すことで、"version" プロパティの値の取得・設定が可能です:
formData オブジェクトは、On Printing Detail フォームイベント内で利用可能です。formData オブジェクトを使用すると、呼び出しコンテキストに関わらず、フォームに安全にパラメーターを渡すことができます。具体的には、同じプロセス内で同じフォームが異なる場所から呼び出されていた場合、Form.myProperty と呼び出すだけで特定の値にアクセスすることが可能です。
注意: 引数を渡さなかった場合、あるいは未定義のオブジェクトを渡した場合、Print form はform 引数のフォームに紐づいた空のオブジェクトを自動的に作成します。このオブジェクトにはForm コマンドを使用してアクセス可能です。
Print form によって返される値は印刷可能範囲の高さを表します。この値は、Get printed height コマンドに自動的に考慮されます。
Print form を使用する場合、印刷ダイアログボックスは表示されません。レポートはデザインモードでフォームに割り当てられた用紙設定を使用しません。Print form を実行する前に用紙設定を指定する方法は2通りあります:
Print form は、印刷するページをそれぞれメモリ中に作成します。各ページはメモリ中のページがいっぱいになるか、PAGE BREAK コマンドを実行すると印刷されます。Print form の使用後、最後のページの印刷を確実に行うためには、PAGE BREAK コマンドで終了しなければなりません。そうでないと、最後のページはメモリ中に残り印刷されません。
警告: このコマンドが OPEN PRINTING JOB で開かれた印刷ジョブのコンテキストで呼び出された場合、 PAGE BREAK を使用して最後のページを印刷しようとしてはいけません。なぜなら、最後のページはCLOSE PRINTING JOB コマンドによって自動的に印刷されるからです。この状況で PAGE BREAK を使用した場合、空のページが印刷されます。
このコマンドは外部エリアとオブジェクト(例えば 4D Write や 4D Viewエリアなど)を印刷します。エリアはコマンドの実行の際に毎回リセットされます。
警告: サブフォームは、Print form では印刷はされません。そのようなオブジェクトを含んだフォームを一つだけ印刷したい場合は、代わりにPRINT RECORD を使用して下さい。
Print form は、1回だけフォームメソッドのOn Printing Detailイベントを生成します。
4D Server: このコマンドは、ストアドプロシージャのフレームワークにおいて4D Server上で実行することができます。この状況では、次の制約があります:
以下の例はPRINT SELECTIONコマンドをエミュレートします。しかし、レコードが小切手用かデポジット用であるかによって2種類のフォームの1つを使用します:
 QUERY([Register]) ` レコードを選択
 If(OK=1)
    ORDER BY([Register]) ` レコードをソート
    If(OK=1)
       PRINT SETTINGS ` 印刷設定ダイアログを表示
       If(OK=1)
          For($vlRecord;1;Records in selection([Register]))
             If([Register]Type ="Check")
                Print form([Register];"Check Out") ` 小切手用のフォーム
             Else
                Print form([Register];"Deposit Out") ` デポジット用のフォーム
             End if
             NEXT RECORD([Register])
          End for
          PAGE BREAK ` 最後のページを印刷
       End if
    End if
 End ifSET PRINT MARKER コマンドの例題参照
このフォームはダイアログとして使用され、変更されたあと印刷されます:

フォームメソッド:
 If(Form event code=On Printing Detail)
    Form.lastname:=Uppercase(Form.lastname)
    Form.firstname:=Uppercase(Substring(Form.firstname;1;1))+Lowercase(Substring(Form.firstname;2))
    Form.request:=Lowercase(Form.request)
 End ifダイアログを表示し、その後印刷するコードは以下のようなものになります:
 $formData:=New object
 $formData.lastname:="Smith"
 $formData.firstname:="john"
 $formData.request:="I need more COFFEE"
 $win:=Open form window("Request_obj";Plain form window;Horizontally centered;Vertically centered)
 DIALOG("Request_obj";$formData)
 $h:=Print form("Request_var";$formData;Form detail)
	プロダクト: 4D
	テーマ: 印刷
	番号: 
        5
        
        
        
	

	変更: 4D 2004.5 
	変更: 4D v16 R6
	変更: 4D v20
	ランゲージリファレンス ( 4D v20)
	
	ランゲージリファレンス ( 4D v20.1)
	
	
 コメントを追加
コメントを追加