2011/02/08

画像の切り替え (swiching images)

BI Publisherで動的に画像を切り替える方法を説明します。
以下のサンプルでは、SAL列の値によって右端の列の画像(矢印)を切り替えています。

【IFフィールドの設定】
画像の表示/非表示の切り替えはブロック単位のIFフィールドを使用します。今回使用したRTFテンプレートは以下のように設定されています。


切り替えに関わる設定は「Performance」列のフィールドに記載されています。それぞれの内容は以下の通りです。
[if-1]: <?if:SAL>=2000?>
[if-2]: <?if:SAL>=1000 and SAL<2000 ?>
[if-3]: <?if:SAL<1000 ?>
[eif]:  <?end if?>



【図の配置について】
テンプレートの作成においては画像(またはシェイプ)とIFフィールドの位置関係が厳密に問われます。
精緻な配置は手間がかかるため、「図の書式設定」または「オートシェイプの書式設定」ダイアログにて「行内」のレイアウトを選択し、左右位置はインデントと空白文字で調整することをお勧めします。これにより、実作業における手間(トライ&エラー)を減らすことができます。
今回の例では、「Performance」列のインデントと、矢印の前にスペースを1つ入力することで位置を調整しています。



【図の配置について:補足】
レイアウトに「行内」ではなく「前面」などを選択した場合にはIFフィールドと画像の位置関係に注意が必要です。具体的には、画像の左上の頂点(Top-Left)がifフィールドよりも下に位置しなければなりません。
以下の例では、1番目と2番目は表示が切り替わりません。3番のみが意図した通りに表示が切り替わります。
※赤い線が画像の境界です。





今回の元ネタ: より詳細なサンプルがあります。
http://blogs.oracle.com/xmlpublisher/2008/08/competent_shapes_1.html


次回は表示する画像の動的な切り替えを検証します。



[ Summary ]
If you want to switch images with data, see the second figure.  The first figure shows the result.  This sample switches three auto-shapes (green, gray, and red).  The settings are:
[if-1]: <?if:SAL>=2000?>
[if-2]: <?if:SAL>=1000 and SAL<2000 ?>
[if-3]: <?if:SAL<1000 ?>
[eif]:  <?end if?>

You need to put shapes exactly between each "if" and "end if".  To avoid irritation, "In line with text" layout option is recommended.


0 件のコメント:

コメントを投稿