テキスト・レポート・エンジンは、レポートの作成中、特定のイベントのセットを認識します。各イベントはエンジンの中の変数によって示されます。
ライブラリー内の変数に代入を行なうときにユーザーが使用しているのと同じドット構文を使用することで、汎用ハンドラーから、これらのどの変数にもカスタム関数を割り当てることができます。例えば、
printPageTotals() という名前の関数がある場合、
onPageTrailerListener 変数にそれを割り当て、ページ・トレーラーが印刷されるときに各ページ上で関数が実行されるようにします。
次のサンプル・コードはその代入を示します。
myReport.onPageTrailerListener = printPageTotals;
これらの各 TextReportListener 変数は、Delegate 型です。これは、シグニチャーが一致する (パラメーターが同じ数値および型である) いずれの関数も、これらの変数の 1 つへ代入できるということを意味します。それぞれの変数は、TextReportEvent 型 (TextReportEvent は別の EGL ExternalType パーツ) の単一の引数を取ります。 ほとんどの場合、このイベント・タイプの詳細に焦点を当てる必要はありません。次の例のように、関数を宣言すると同時に変数を宣言します。
function printPageTotals(myEvent TextReportEvent in)
...
end
関数内で
myEvent を参照する必要はありません。
例外レコード (
例外処理を参照)
同様に、TextReportEvent パラメーターは、レポートの状態と、関数が呼び出された理由に関する情報を提供することができます。
アクセスできる TextReportEvent 変数内には、4 つのフィールドがあります。
最初のフィールドは、関数が呼び出された理由を示す値を保持し、以下に示すその他の
3 つのフィールドは、最初の値と比較される定数値を含みます。
- state
- 関数の呼び出しを起動するイベントに関する情報を含む整数。この変数は、以下のフィールドの 1 つに設定されます (ほとんどの場合、STATE_UNSPECIFIED に設定されます)。
- STATE_UNSPECIFIED
- 1 である整数定数。状態フィールドが STATE_UNSPECIFIED フィールドと同じ
場合は、関数が呼び出された理由に関する情報は提供されません。
- STATE_LASTROW
- 2 である整数定数。状態フィールドが STATE_LASTROW
フィールドと同じ場合は、最終行が印刷されると関数が呼び出されます。
- STATE_FIRSTROW
- 3 である整数定数。状態フィールドが STATE_FIRSTROW フィールドと同じ
場合は、先頭行の印刷が始まるところで関数が呼び出されます。
次のコードは、レポートの印刷を開始したばかりの特殊な場合における、
state フィールドの使用例です。
function beforeGroup (myEvent TextReportEvent in)
if ((currentReportRecord.customerName != previousReportRecord.customerName)||
(myEvent.state == myEvent.STATE_FIRSTROW))
printCustomerName(currentReportRecord);
end
end
以下の変数のいずれにも関数を割り当てることができます。
- onFirstPageHeaderListener
- 先頭ページのヘッダーを印刷する関数を指します。先頭ページに固有のヘッダーがない場合は何も割り当てないでください。
- onPageHeaderListener
- ページ・ヘッダーを印刷する関数を指します。先頭ページのヘッダーが指定されていない場合、これがすべてのページに印刷されます。それ以外の場合は、2 ページ目から印刷が開始されます。
- onEveryRowListener
- 行のデータを印刷する関数を指します。
- onLastRowListener
- 最終行の後のテキストを印刷する関数を指します。これは、最終ページの下部のトレーラー以外で、レポートに最後に印刷されます。
- onPageTrailerListener
- トレーラー・テキストを印刷する関数を指します。
- onBeforeGroupListener
- onEveryRowListener 関数の直前に常時呼び出されます。これは、データのグループを印刷する前にテキストを印刷するメカニズムを提供します。
- onAfterGroupListener
- onBeforeGroupListener 関数の直前に呼び出されます (データの最初の行以外)。 これは、データのグループを印刷した後にテキストを印刷するメカニズムを提供します。これも onLastRowListener 関数の直前に呼び出されます。