メインコンテンツまでスキップ
バージョン: 開発中

Print form

Print form ( {aTable ;} form {; formData} {; areaStart{; areaEnd}} ) : Integer

引数説明
aTableテーブルフォームが属するテーブル, または 省略した場合は、デフォルトテーブル
formText, Objectフォーム名(文字列)、あるいはフォームを定義した.jsonファイルへのPOSIXパス(文字列)、あるいは印刷するフォームを定義したオブジェクト
formDataObjectフォームに関連づけるデータ
areaStartInteger印刷マーカ、または開始エリア(areaEndが指定された場合)
areaEndInteger終了エリア(areaStartが指定された場合)
戻り値Integer印刷されたエリアの高さ

このコマンドはスレッドセーフではないので、プリエンプティブなコードでは使用できません。

説明

Print form simply prints form with the current values of fields and variables of aTable.Print form simply prints form with the current values of fields and variables of aTable.Print form は、aTable のフィールドや変数の現在の値を使用してform 引数で指定したフォームを印刷します。 通常は、印刷処理を完全に制御する必要のある非常に複雑なレポートを印刷するために使用します。 Print form はレコード処理、ブレーク処理、改ページ処理を全く行いません。 これらの処理はすべて開発者が行います。 Print form は固定されたサイズの枠のなかにフィ-ルドや変数を印刷します。 通常は、印刷処理を完全に制御する必要のある非常に複雑なレポートを印刷するために使用します。 Print form はレコード処理、ブレーク処理、改ページ処理を全く行いません。 これらの処理はすべて開発者が行います。 Print form は固定されたサイズの枠のなかにフィ-ルドや変数を印刷します。

form 引数には、以下のいづれかを渡すことができます:

  • フォーム名
  • 使用するフォームの詳細を格納している有効な.josn ファイルへのパス(POSIX シンタックス、Form file path 参照)
  • フォームの詳細を格納しているオブジェクト

Print form は、フォームの印刷後に改ページを行わないため、同じページに異なるフォームを容易に配置することができます。 したがって、Print form は、異なるテーブルや異なるフォームを含む複雑な印刷処理に最適です。 フォーム間で改ページを強制的に行うにはPAGE BREAK コマンドを使用してください。 印刷可能領域を超える高さのフォームの印刷を次のページに持ち越すには、PAGE BREAK コマンドを使用する前にCANCEL コマンドを呼び出してください。 したがって、Print form は、異なるテーブルや異なるフォームを含む複雑な印刷処理に最適です。 フォーム間で改ページを強制的に行うにはPAGE BREAK コマンドを使用してください。 印刷可能領域を超える高さのフォームの印刷を次のページに持ち越すには、PAGE BREAK コマンドを使用する前にCANCEL コマンドを呼び出してください。

3つの異なるシンタックスを使用できます:

  • 詳細エリアの印刷

シンタックス:

 height:=Print form(myTable;myForm)

この場合、Print form はフォームの詳細エリア (ヘッダマーカと詳細マーカの間のエリア) だけを印刷します。

  • フォームエリアの印刷

シンタックス:

 height:=Print form(myTable;myForm;marker)

この場合コマンドはmarker で示されるセクションを印刷します。 この場合コマンドはmarker で示されるセクションを印刷します。 以下のForm Area テーマの定数のうちの1つをmarker引数に渡します:

定数
Form break0Integer300
Form break1Integer301
Form break2Integer302
Form break3Integer303
Form break4Integer304
Form break5Integer305
Form break6Integer306
Form break7Integer307
Form break8Integer308
Form break9Integer309
Form detailInteger0
Form footerInteger100
Form headerInteger200
Form header1Integer201
Form header10Integer210
Form header2Integer202
Form header3Integer203
Form header4Integer204
Form header5Integer205
Form header6Integer206
Form header7Integer207
Form header8Integer208
Form header9Integer209
  • セクション印刷

シンタックス:

 height:=Print form(myTable;myForm;areaStart;areaEnd)

この場合、コマンドはareaStart およびareaEnd 引数間に含まれる部分を印刷します。 値はピクセル単位で入力しなければいけません。 値はピクセル単位で入力しなければいけません。

formData

オプションとして、form 引数のフォームに、formData オブジェクトを使用してパラメーターを渡すことができます。あるいは、フォームにユーザークラスを割り当てる ことをしていた場合に4D によって自動的にインスタンス化されるフォームクラスオブジェクトを使うこともできます。 form data オブジェクト内のプロパティであればどれもForm コマンドを使用することでフォームコンテキストから利用可能になります。 formData オブジェクトは、On Printing Detail form event フォームイベント内で利用可能です。

form data オブジェクトについての詳細な情報については、DIALOG コマンドを参照してください。

戻り値

Print form によって返される値は印刷可能範囲の高さを表します。 この値は、Get printed height コマンドに自動的に考慮されます。 この値は、Get printed height コマンドに自動的に考慮されます。

Print form を使用する場合、印刷ダイアログボックスは表示されません。 レポートはデザインモードでフォームに割り当てられた用紙設定を使用しません。 Print form を呼び出す前に用紙設定を指定する方法は2通りあります: レポートはデザインモードでフォームに割り当てられた用紙設定を使用しません。 Print form を呼び出す前に用紙設定を指定する方法は2通りあります:

  • PRINT SETTINGS コマンドを使用する。 この場合、ユーザが設定を行います。 この場合、ユーザが設定を行います。
  • SET PRINT OPTION および GET PRINT OPTION コマンドを使用する。 この場合、用紙設定はプログラムで指定します。 この場合、用紙設定はプログラムで指定します。

Print form は、印刷するページをそれぞれメモリ中に作成します。 各ページはメモリ中のページがいっぱいになるか、PAGE BREAK コマンドを実行すると印刷されます。 Print form は、印刷するページをそれぞれメモリ中に作成します。 各ページはメモリ中のページがいっぱいになるか、PAGE BREAK コマンドを実行すると印刷されます。 Print form の使用後、最後のページの印刷を確実に行うためには、PAGE BREAK コマンドで終了しなければなりません(ただしOPEN PRINTING JOB のコンテキスト内の場合を除く、注意参照)。 そうでないと、最後のページが一杯にならないと、それはメモリ中に残り印刷されません。 そうでないと、最後のページが一杯にならないと、それはメモリ中に残り印刷されません。

警告: このコマンドがOPEN PRINTING JOB で開かれた印刷ジョブのコンテキストで呼び出された場合、PAGE BREAK を使用して最後のページを印刷しようとしてはいけません。なぜなら、最後のページはCLOSE PRINTING JOB コマンドによって自動的に印刷されるからです。 この状況でPAGE BREAK を使用した場合、空のページが印刷されます。 この状況でPAGE BREAK を使用した場合、空のページが印刷されます。

このコマンドは外部エリアとオブジェクト(例えば 4D Write や 4D Viewエリアなど) を印刷します。 エリアはコマンドの実行の際に毎回リセットされます。 エリアはコマンドの実行の際に毎回リセットされます。

警告: サブフォームは、Print form では印刷はされません。 警告: サブフォームは、Print form では印刷はされません。 そのようなオブジェクトを含んだフォームを一つだけ印刷したい場合は、代わりにPRINT RECORD を使用して下さい。

Print form は、1回だけフォームメソッドのOn Printing Detail event イベントを生成します。

4D Server: このコマンドは、ストアドプロシージャのフレームワークにおいて4D Server上で実行することができます。 この状況では、次の制約があります: この状況では、次の制約があります:

  • サーバマシン上ではダイアログボックスを一切表示しないでください (特定の必要性がある場合を除く)。
  • プリンタ関連の問題が発生しても (用紙切れ、プリンタ接続切断等) 、エラーメッセージは生成されません。

例題 1

以下の例はPRINT SELECTION コマンドをエミュレートします。 しかし、レコードが小切手用かデポジット用であるかによって2種類のフォームの1つを使用します: しかし、レコードが小切手用かデポジット用であるかによって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 if

例題 2

SET PRINT MARKER コマンドの例題参照

例題 3

このフォームはダイアログとして使用され、変更されたあと印刷されます:

フォームメソッド:

 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)

参照

CANCEL
PAGE BREAK
PRINT SETTINGS
SET PRINT OPTION