4D View Pro:ドキュメントの読み込み終了

4D View Pro (特にオフスクリーンモード) で複雑なドキュメントを扱う場合、すべてのフォーミュラの計算に時間がかかるため、いつ読み込みが完了したかを知ることが難しい場合があります (エクスポートや印刷などのコマンドを呼び出す前に読み込みは完了していなくてはなりません)。

その解決策として、2つの新しいイベントを導入しました。そのうちの 1つは、計算/式の都度呼び出され、タイマーを起動するために使用することができます。もし、次のフォーミュラ計算が終了しないまま時間切れになった場合、ドキュメントの読み込みが完了していると判断することができます。

HDI 4DVPのエンドローディング

最初のイベントは 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フォーマットでエクスポートする方法をご覧ください。

詳細については、ドキュメントセンターをご参照ください。

Fabrice Mainguené
- Product Owner -Fabrice Mainguenéは、2016年11月に4D Programチームに参加しました。プロダクトオーナーとして、彼はユーザーストーリーを書き、それを機能仕様に変換する役割を担っています。CNAMでコンピュータサイエンスの学士号を取得した後、FabriceはWindev開発者として小さなソフトウェア出版社に入社しました。その後、彼は産業および貿易分野のさまざまな企業で、Windev および Web 開発者として、また新機能の技術アドバイザーとして働きました。