検索
HOME
.NET/ActiveX
Java
LeySer
What's New
イベント
キャンペーン
ニュースリリース
DevClub
.NET 製品
ActiveX 製品
Java 製品
開発支援 製品
ダウンロード
ダウンロード
見る・聞く
ご質問窓口一覧
ユーザーサービス
ライセンスについて
製品FAQ サーチ
バグレポート サーチ
メールマガジン
対応環境一覧
使用許諾契約書
買う
オンラインショップ
直販
バージョンアップ
旧バージョンの購入
パートナーショップ
GrapeCity Enterprise Focus 2005年8月10日号
特集 : [Elixir Report]
JavaScriptでの特殊なプロパティアクセス
Elixir Report(以下Elixir)には、実行時のデザイン変更を柔軟に行うため、スキームスクリプトとJavaScriptという2つのスクリプト言語が用意されています。このうちJavaScriptは、開発者に馴染み深いインタフェースを採用することで、新たな言語を習得する手間を省けます。
スクリプト言語による動的なデザイン変更で重要になるのが、データへのアクセス方法です。ElixirのJavaScriptには、レポート外のデータへのアクセス方法として、マスターデータソースへのアクセスするDataオブジェクトや、レポートパラメータにアクセスするPropertiesオブジェクトが用意されています。
これらに加えて、同一テンプレート上の他のコントロールにアクセスしたり、いったん出力したコントロールの表示結果を参照することもできます。今回の特集では、フレキシブルなレポート出力を、より少ないコードで実現可能にする、JavaScriptの2つのプロパティアクセス方法を紹介します。
1.他のコントロールへのアクセス
レポートテンプレート上の他のコントロールへのアクセスには
[名前]
プロパティを利用します。
Renderer
オブジェクトの
getRawElementByName()
メソッドの引数に、各コントロールの[名前]プロパティの値を指定することで、他のコントロールのプロパティを参照または設定できます。
◆サンプル
サンプルプロジェクト(samples.report)の日本語サンプル、医療費テンプレート(iryohi.template)を使用します。 「区分」のフィールドに設定された値を元に、このテンプレートの医療費の各値の文字色を一気に変えてみましょう。
事前の準備として、医療費を表示するテキストコントロールのうち、薬剤負担額を表示しているコントロールの[名前]プロパティ("Text23")を"Text11"に変更してください。これはフィールド名を連番にすることで、ループを使ってプロパティの変更を行うためです。
上記の設定が終わったら、詳細セクションの[On Render Begin]プロパティに以下のスクリプトを追加してください。
○詳細セクションの[On Render Begin]プロパティ
if( Data.getString('区分')=='薬 局'){
Color = 'Red';
}else{
Color = 'Black';
}
for(i = 0 ; i < 4 ; i++ ){
Renderer.getRawElementByName('Text1' + i ).setFontColor(Color);
}
最初のifブロックでは、DataオブジェクトのgetString()メソッドで取得したデータソースの値によって、フォント色として設定する色名を切り替えています。後半のforブロックではgetRawElementByName()メソッドで参照したコントロールに対し、フォント色をセットしています。
○出力結果
2.コントロールの出力結果へのアクセス
データが実際にレポートに設定されるまで、出力するレポートのデザインが確定しないこともよくあります。
たとえば表形式のレポートを出力する場合の改ページのタイミングを考えてみましょう。単純に固定の行数を表示するのであれば、ページブレークコントロールで毎回レコードインデックスをチェックするだけで簡単に実現できます。
しかし、個々のレコード内で改行する可能性があるようなデータであればどうでしょう。この場合、レコードの出力が終わるごとに通算の高さをチェックし、一定の値以上であれば改ページ、などとする必要があります。
こういったケースでは、JavaScript内で
result
変数を参照します。この変数は、コントロールが出力された後、その出力結果に対してアクセスできます。なお、result変数を利用できるのは
[On Render End]プロパティ内のみ
です。
◆サンプル
一定の高さを超えると改ページするレポートを実際に作成してみましょう。 今回も医療費テンプレート(iryohi.template)を使用します。
まずはレポートヘッダーセクションの[On Render Begin]プロパティで高さを保持するための変数を定義しましょう。
○レポートヘッダーセクションの[On Render Begin]プロパティ
TotalHeight = 0;
次に詳細セクションの[On Render End]プロパティでセクションの出力結果の高さを変数に加算します。
○レポートヘッダーセクションの[On Render End]プロパティ
TotalHeight = result.getHeight() + TotalHeight;
今度は詳細セクションにページブレークコントロールを追加し、[Render If]プロパティで高さを保持する変数の値を改ページの条件に設定します。また、後ろのif文では変数をリセットしています。
○ページブレークコントロールの[Render If]プロパティ
TotalHeight >= 3000;
if(TotalHeight>3000)TotalHeight = 0;
これで、詳細セクションが一定の高さを超えた場合に改ページが行われるようになりました。
今回紹介した2つのプロパティアクセスはいずれも汎用性が高く、システムの形態やレポートのデザインに関わらず幅広く利用できます。 データソースやユーザーアプリケーションと連携した、動的なレポートを開発される際には、これらの機能をぜひ活用してください。
この記事についてのご質問・ご感想は
こちらへ
TOP
Copyright © 2009 GrapeCity inc. All rights reserved.
|
プライバシーポリシー