4D View Pro (特にオフスクリーンモード) で複雑なドキュメントを扱う場合、すべてのフォーミュラの計算に時間がかかるため、いつ読み込みが完了したかを知ることが難しい場合があります (エクスポートや印刷などのコマンドを呼び出す前に読み込みは完了していなくてはなりません)。
その解決策として、2つの新しいイベントを導入しました。そのうちの 1つは、計算/式の都度呼び出され、タイマーを起動するために使用することができます。もし、次のフォーミュラ計算が終了しないまま時間切れになった場合、ドキュメントの読み込みが完了していると判断することができます。
最初のイベントは On VP Range Changed です。このイベントは、計算が終了するたびに起動します。計算が複数ある場合もあるので、2つ目のイベントは on Timer イベントです。このイベントにより、次の計算が完了するまで待つことができます。タイマー終了前に On VP Range Changed イベントが投げられた場合はタイマーを再起動し、そうでない場合は読み込み完了となります。
たとえば、大きな文書を読み込んで、すべての計算の終了後にエクスポートしたい場合は、このようなクラスを作成する必要があります:
Class constructor($pdfPath : Text)
This.pdfPath:=$pdfPath
This.autoQuit:=False
This.isWaiting:=False
Function onEvent
Case of
: (FORM Event.code=On VP Ready)
// ドキュメントの読み込み
VP IMPORT DOCUMENT(This.area; $largeDocument4VP)
This.isWaiting:=True
// 計算がすべて終了するのを確認するためのタイマーを開始します
// この間に "On VP Range Changed" が発生すると、タイマーが再開されます
// この時間はコンピューターの設定に準じて定義しなければなりません
SET TIMER(60)
: (FORM Event.code=On VP Range Changed)
// 計算の終了を検知しました。タイマーを再開します
If (This.isWaiting)
SET TIMER(60)
End if
: (FORM Event.code=On Timer)
// 以降に使用する VP コマンドが "On VP Range Changed" イベントを発生させる可能性があるため、
// タイマーが再開するのを防止します
This.isWaiting:=False
// タイマーを停止します
SET TIMER(0)
// PDFへの書き出しを開始します
VP EXPORT DOCUMENT(This.area; This.pdfPath; New object("formula"; Formula(ACCEPT)))
: (FORM Event.code=On URL Loading Error)
CANCEL
End case
上記の HDI をダウンロードして、これらのイベントを使用して、大きな 4D View Pro ファイルを PDFフォーマットでエクスポートする方法をご覧ください。
詳細については、ドキュメントセンターをご参照ください。