更新された Print form & FORM LOAD コマンドを紹介

4D v16 R5 では、DIALOG コマンドが大幅に改良され、オブジェクト型新しいパラメーター “formData” を渡すことができるようになりました。この新機能が 4Dデベロッパーの皆様に好評であることを聞いて、とても嬉しく思います。

4D v20 では、もう 2つのコマンドがアップグレードされました: Print formFORM LOAD です! そのメリットは、同じように大きいでしょう。引数として渡されたオブジェクトは、印刷されるフォームや、メモリにロードされるフォームで直接利用することができます。

コードサンプル

Print form

PRINT FORM コマンドは、最近の改良により、4Dデベロッパーに広く使用されています。

PRINT FORM コマンドには、呼び出したフォームにおいて Form 関数でアクセスできるオブジェクト型の任意パラメーターを渡すことができるようになりました。具体的には、フォームオブジェクトの式として Form 関数を直接使用できるほか (Form.firstnameForm.lastname など)、on printing detail イベントが実行されたときにも使用できます。

$formData:=New object()
$formData.lastname:="Smith"
$formData.firstname:="john"
$formData.request:="I need more COFFEE"
$h:=Print form("Print_obj"; $formData; Form detail)

呼び出している “Print_obj” フォームの例です:

 

FORM LOAD

同じ原理で、FORM LOAD コマンドは、オブジェクト引数を受け取ることができるようになりました。この任意の引数が渡された場合、オブジェクトの中身は、on load イベントの実行中に利用したり変更したりすることができます (on load イベント以外は無視されます。また、OPEN PRINTING JOB / CLOSE PRINTING JOB のシーケンス内でのみ使用可)。

OPEN PRINTING JOB

$formData.LBcollection:=New collection()
$formData.LBcollection.push(New object("reference"; "alpha"; "quantity"; 3; "total"; 120.99))
$formData.LBcollection.push(New object("reference"; "bravo"; "quantity"; 2; "total"; 599.99))

FORM LOAD("GlobalForm"; $formData)  // $formData が新しく受け渡し可能になりました

$over:=False
Repeat 
	$full:=Print object(*; "LB")  // この "LB" リストボックスのデータソースは Form.LBcollection です
	LISTBOX GET PRINT INFORMATION(*; "LB"; lk printing is over; $over)
	If (Not($over))
		PAGE BREAK
	End if 
Until ($over)
CLOSE PRINTING JOB

…この例題の “GlobalForm” は、データソースとして Form.LBcollection を使用するリストボックス “LB” を含んでいます:

blank

まとめ

この新しいプログラミングの可能性は、時間を節約し、コードを “軽く” します。

4Dフォーラムで気軽にフィードバックをシェアしてください。ご意見をお待ちしています!

 

Roland Lannuzel
- プロダクトオーナー&4Dエキスパート -電子工学を学んだ後、産業用ITの分野で開発者兼コンサルタントとして、さまざまなデータベースやテクノロジーを使って顧客のためのソリューションを構築。80年代後半に4Dに惚れ込み、会計、請求書作成、メールシステムなどのビジネスアプリケーションの作成に4Dを使用してきました。現在も、新機能やデータベース開発ツールの定義など、4Dの未来を積極的に切り開いています。