Oracle® Fusion Middleware Oracle Application Development Frameworkデスクトップ統合開発者ガイド 11gリリース1(11.1.1.6.0) B66694-01 |
|
前 |
次 |
この章では、Excelの事前定義済スタイルとカスタム・スタイルを使用して統合Excelワークブックの外観を構成する方法や、実行時にEL式を使用してワークブックのOracle ADFコンポーネントにスタイルを動的に適用する方法、Excelワークブックでのラベルとブランドの使用方法、ワークシート保護機能の使用方法について説明します。
この章の内容は次のとおりです。
Excel機能とOracle ADF機能の両方を使用して、統合Excelワークブックの外観を構成できます。ワークブックの外観を構成すると、ワークブックの使い勝手がエンド・ユーザーにとってよりよくなることがあります。たとえば、実行時にADF出力テキスト・コンポーネントをレンダリングするセルに特定のスタイルを適用して、そのセルが読取り専用であることをエンド・ユーザーに示すことができます。また、会社のスタイル・シートやExcelワークブックが統合するFusion Webアプリケーションの色のスキームと一致するように、統合Excelワークブックの外観を構成する場合もあります。
ADFデスクトップ統合には、ワークブックで構成するADFデスクトップ統合コンポーネントに適用する事前定義済のExcelスタイルがいくつか用意されています。デスクトップ統合プロジェクトのニーズを満たすために、その他のスタイルを定義した方がよい場合もあります。その場合は、ロケールや地域、言語に応じて様々にレンダリングされるExcelワークブックの形式を十分に理解しておいてください。
実行時にADFデスクトップ統合コンポーネントに適用するスタイルを決定したら、EL式を記述してスタイルをコンポーネントに関連付けます。StyleNameを名前に含むADFデスクトップ統合コンポーネントのプロパティは、EL式を値として受け入れます。他のADFコンポーネントのADFラベル・コンポーネントとLabel
プロパティでは、EL式もサポートされます。これらのEL式は、リソース・バンドルで定義された文字列キーの値やFusion Webアプリケーションで定義された属性コントロール・ヒントの値を取得できます。
最後に、Excelワークブックの外観を構成可能なスタイルに加えて、ADFデスクトップ統合にはプロパティのコレクション(BrandingItems
)が用意されています。これを使用して、アプリケーション名やアプリケーションのバージョン詳細、著作権情報を使用して、Excelワークブックをブランディングできます。
ADFデスクトップ統合には、Excelで定義されたスタイルを実行時に一部のOracle ADFコンポーネントに適用するメカニズムが用意されています。スタイルのアプリケーションをサポートするOracle ADFコンポーネントには、名前にStyleNameを含むプロパティがあります。たとえば、ADF表コンポーネントとADF読取り専用表コンポーネントの列プロパティは、実行時に適用されるスタイルを決定するプロパティHeaderStyleName
およびCellStyleName
をサポートします。
ADFデスクトップ統合により事前定義されたスタイル
プロパティには多くの場合、ADFデスクトップ統合モジュールのスタイルの事前定義済リストから引き出されるデフォルトの値があります。たとえば、HeaderStyleName
プロパティのデフォルト値は、ADFデスクトップ統合で事前定義されたスタイルの1つである_ADFDI_HeaderStyle
です。ADFデスクトップ統合は、ExcelワークブックがADFデスクトップ統合との併用が有効になっている場合、これらの事前定義済スタイルをExcelワークブックに自動的に追加します。
次に、事前定義済スタイルを示します。
自分で定義するこれらのスタイルや他のスタイルを、統合ExcelワークブックからFusion Webアプリケーションと統合する予定の別のExcelワークブックにマージできます。追加で使用するスタイルをExcelワークブックで作成してもかまいません。たとえば、日付に固有の形式を追加するには、_ADFDI_TableCellStyle
を複製して、MyTableCellDateStyle
という名前を付け、日付に固有の形式を追加します。
新しいスタイルの作成と、ワークブックへのスタイルのマージの詳細は、Excelのドキュメントを参照してください。
Excelの日付形式とMicrosoft Windowsの地域と言語のオプション
Excelがセルに適用できる「数値」スタイルの「日付」カテゴリにある形式の一部は、ユーザーがMicrosoft Windowsのコントロール パネルからアクセス可能な地域と言語のオプションを使用してローカル・システムのロケールを変更すると変わります。「タイプ」・リストのこれらの形式の先頭に* 文字が付きます。図9-1は、フランス語(フランス)の表記規則を使用してセルの日付形式を設定する日付タイプの例を示します。
エンド・ユーザーが、図9-2にあるように「英語 (米国)」を使用するようにシステムの地域設定オプションを変更した場合、 the cells that are formatted with the style in 図9-1のスタイルでフォーマットされるセルは、「英語 (米国)」の表記規則を使用します。
Oracle ADFコンポーネントにスタイルを適用するには、プロパティ・インスペクタを使用して、StyleNameを名前に持つプロパティの値を設定します。
スタイルを適用する手順:
統合Excelワークブックで、変更するOracle ADFコンポーネントを参照するセルを選択して、「Oracle ADF」タブの「コンポーネントの編集」ボタンをクリックします。
たとえば、ADF表コンポーネントを参照するセルを選択します。
「列」に続いて、実行時にセルの形式を変更する列の配列にある列の値をクリックします。
CellStyleNameプロパティを選択し、省略記号ボタン(...)をクリックして「式の編集」ダイアログを表示します。
Stylesノードを展開して、実行時に列のセルに適用するスタイルを選択します。
たとえば、通貨に基づいたスタイル(Currency[0]
)をCurrencyタイプのCost Priceデータ・バインド列に適用します。汎用のスタイルではなく、Currency[0]
スタイルをCurrencyタイプのデータ・バインド列に適用すると、実行時のデータ(価格の値)が通常の値(小数桁数2桁)ではなく、小数桁数ゼロに切り捨てられた値として表示されます。
「式に挿入」をクリックして、Currency[0]
を「式」フィールドに挿入します。
図9-3は、「式の編集」ダイアログを示します。
「OK」をクリックします。
名前にStyleNameが付いているプロパティの値として入力したEL式は、実行時に評価されます。これが事前定義済のスタイルであるか、または定義したスタイルの場合、そのスタイルはプロパティを設定したOracle ADFコンポーネントに適用されます。
Oracle ADFコンポーネントを参照するセルに、Oracle ADFのプロパティで定義されたものとは異なるスタイルが適用されている場合、Oracle ADFコンポーネントは既存のスタイルを実行時に上書きして、プロパティで定義されたスタイルを適用します。
たとえば、図9-4は、Currency[0]
スタイルが適用されてデフォルトのTableCellCurrency
スタイルが上書きされた後のCost Price列の実行時の値を示します。
StyleNameを名前に含むOracle ADFコンポーネントのプロパティは、EL式を値として受け入れます。記述するEL式は、実行時に指定されたOracle ADFコンポーネントに適用されるExcelスタイルに解決することができます。記述するEL式は、Oracle ADFデータ・バインディング式などを使用するExcel式です。ADFデスクトップ統合は、ユーザーがセル間を移動するときやアップロード時には、結果を評価または適用しません。
次の例は、EL式を使用して、実行時のOracle ADFコンポーネントの動作および外観を決定できる様々なコンテキストを示します。例9-1では、ダウンロード時にスタイルを動的に適用します。バインディングのステータス値がClosed
の場合、読取り専用スタイル(MyReadOnlyStyle
)を適用します。それ以外のときは、別のスタイル(MyReadWriteStyle
)を適用します。
例9-1 ダウンロード時にスタイルを動的に適用する場合
=IF("#{bindings.Status}" = "Closed", "MyReadOnlyStyle", "MyReadWriteStyle")
例9-2では、Excel式とADFバインディング式を取り混ぜて使用し、エラーおよびタイプ変換を処理します。
例9-2 エラーをタイプ変換を処理するEL式
=IF(ISERROR(VALUE("#{bindings.DealSize}")), "BlackStyle", IF(VALUE("#{bindings.DealSize}") > 300, "RedStyle", "BlackStyle"))
実行時にEL式を評価する際、ADFデスクトップ統合はEL式が参照する値を決定します。そしてExcel式のEL式を、その値に置換します。例9-1では、まずADFデスクトップ統合は次のExcel式でEL式、#{bindings.Status}
の値を決定します。
=IF("#{bindings.Status}" = "Closed", "MyReadOnlyStyle", "MyReadWriteStyle")
続いて、次の例にあるようにEL式を実行時の値に置換します。ここでは、式はClosed
に評価されます。
=IF("Closed" = "Closed", "MyReadOnlyStyle", "MyReadWriteStyle")
Excelは式を評価し、この例ではMyReadOnlyStyle
スタイルに適用します。
Oracle ADFコンポーネントのプロパティ・インスペクタからアクセスできる「式の編集」ダイアログに、EL式をサポートするOracle ADFコンポーネントのプロパティのEL式を記述します。図9-5に、ADFボタン・コンポーネントのプロパティ・インスペクタ・ウィンドウから起動された「式の編集」ダイアログを示します。
実行時にスタイルを適用するEL式を記述する手順:
統合Excelワークブックを開きます。
「Oracle ADF」タブの「コンポーネントの編集」ボタンをクリックして、プロパティ・インスペクタを表示します。
EL式を関連付けるプロパティ・インスペクタのプロパティを選択し、省略記号ボタン(...)をクリックして「式の編集」ダイアログを表示します。
注意: 「式の編集」ダイアログは、手順2で選択したOracle ADFコンポーネントがEL式をサポートする場合のみ表示されます。コンテキストに応じて、省略記号ボタン(...)で、アクション・コレクション・エディタなど他のエディタも起動できます。 |
図9-5に示すように「式の編集」ダイアログには、EL式で参照できるOracle ADFコンポーネント、バインディング、スタイル、リソース、Excel機能の階層リストが表示されます。このダイアログに入力するEL式の構文の詳細は、付録B「ADFデスクトップ統合のEL式」を参照してください。
実行時にスタイルを適用するEL式を記述する際は、次の点に注意してください。
ADFデスクトップ統合がどのようにスタイルを適用するか
スタイルに評価されるEL式は、次の場合に適用されます。
ADF表コンポーネントがDownload
アクションまたはDownloadForInsert
アクションを起動する場合
行がADF表コンポーネントに挿入される場合
ワークシートがDownSync
アクションを起動する場合
スタイルに評価されるEL式は、次の場合には適用されません。
ADF表コンポーネントがRowDownSync
アクションを起動する場合
エンド・ユーザーがセルの形式のプロパティを編集する場合
また、エンド・ユーザーがセルの値を編集すると、スタイルに評価されるEL式は再評価されない点にも注意してください。
EL式の実行時の値は、エンド・ユーザーの統合Excelワークブックで定義されたスタイルには一致しません。
このシナリオでは、対象セルのスタイルの形式は変わりません。かわりに、既存のスタイル形式が保持されます。クライアントサイドのロギングを構成した場合、EL式がエンド・ユーザーの統合Excelワークブックで定義されていないスタイルに評価されると、ADFデスクトップ統合はログ・ファイルにエントリを生成します。クライアントサイドのロギングの詳細は、C.3項「統合Excelワークブックのログ・ファイルの生成」を参照してください。
ラベルを使用して、統合Excelワークブックの機能をどのように使用するかについての情報をエンド・ユーザーに提供します。リソース・バンドルで定義された文字列キーの値あるいは属性コントロール・ヒントを取得するEL式を記述できます。統合Excelワークブックは、ワークブックが初期化されるときにのみLabel
プロパティの値を評価します。
リソース・バンドルからの文字列キーの値の取得
図9-6は、 of tMaster Price ListモジュールのEditPriceList-DT.xlsx
ワークブックの設計時の表示の一部を示します。Label
プロパティにEL式が指定されている、ADFラベル・コンポーネントとADFボタン・コンポーネントの例を示します。
実行時には、これらのEL式はMaster Price Listモジュールに登録されたres
リソース・バンドルで定義された文字列キーに解決されます。リソース・バンドルは、「ワークブック・プロパティ」ダイアログで定義します。リソース・バンドルからの文字列キーの参照の詳細は、10.2項「統合Excelワークブックでのリソース・バンドルの使用」を参照してください。
図9-7は、図9-6に設計モードで示されているADFラベル・コンポーネントとADFボタン・コンポーネントの相当する実行時の表示を示します。
属性コントロール・ヒントの値の取得
リソース・バンドルからの文字列キーの他に、ADFラベル・コンポーネントと他のADFコンポーネントのLabel
プロパティは、JDeveloperプロジェクトのエンティティ・オブジェクトとビュー・オブジェクトに定義する属性コントロール・ヒントを参照できます。図9-8は、EditPriceList-DT.xlsx
ワークブックのADF表コンポーネントにある「製品名」
列の式ビルダーを示します。式ビルダーは、実行時に属性コントロール・ヒントに定義される値(Product Name
)を取得する、ProductName
列のHeaderLabel
プロパティに対するEL式を含みます。
属性コントロールのヒントは、ビュー・オブジェクトとエンティティ・オブジェクトの両方に構成できます。エンティティ・オブジェクトに属性コントロール・ヒントを追加する方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のエンティティ・オブジェクトの属性コントロール・ヒントの定義に関する項を参照してください。ビュー・オブジェクトに属性コントロール・ヒントを追加する方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のビュー・オブジェクトの属性コントロール・ヒントの定義に関する項を参照してください。
統合ExcelワークブックがLabelプロパティをどのように評価するか
統合Excelワークブックは、開発者またはエンド・ユーザーが初めてワークブックを開いた後、ワークブックが初期化されるときにADFコンポーネントのLabel
プロパティを評価します。統合Excelワークブックは、ワークブック自身がシステム上のディレクトリに保存されるときに、Label
プロパティの取得された値を保存します。
Label
プロパティの取得された値は、ワークシートのDownSync
アクションやADF表コンポーネントのDownload
アクションのようなアクションの起動中にリフレッシュされません。表A-17に示されるようにワークブックのアクションClearAllData
またはEditOptions
を起動する場合、Label
プロパティの取得された値を間接的にリフレッシュします。
統合Excelワークブックのエンド・ユーザーに、Fusion Webアプリケーションに統合する目的で提供するADFコンポーネントの使用方法に関するわかりやすい情報を提供することはよい習慣です。これには次のようにします。
ADFボタン・コンポーネントやADF入力テキスト・コンポーネントなど、Oracle ADFコンポーネントの使用方法に関する説明をエンド・ユーザーに提供します。
ADFラベル・コンポーネントと他のADFコンポーネントのLabel
プロパティは、エンド・ユーザーにコンポーネントの使用方法に関する説明を提供するラベルを記述できるため、この作業で役に立ちます。
ADFコンポーネントが読取り専用か読取り/書込みなのかを示すスタイルを適用します。
使い勝手を向上するADFラベル・コンポーネントの使用
ADFラベル・コンポーネントを使用して、統合Excelワークブックのエンド・ユーザーに、ワークブックで他のADFコンポーネントを使用する方法に関する情報を提供できます。たとえば、便宜上は多くのフォームで*を使用して、入力フィールドへの値の入力が必須であることをエンド・ユーザーに示します。図9-9は、3つのADF入力テキスト・コンポーネントと隣接するセルのADFラベル・コンポーネントを示します。それぞれのADFラベル・コンポーネントは、実行時にリソース・バンドルから文字列キーの値を取得するEL式を参照します。各文字列キーは、値の入力が必須であることをエンド・ユーザーに示すために、*文字を含めます。
リソース・バンドルの使用の詳細は、10.2項「統合Excelワークブックでのリソース・バンドルの使用」を参照してください。
統合Excelワークブックの読取り専用プロパティについて
統合Excelワークブックでの読取り専用プロパティに関して、次の点に注意してください。
ADF出力テキスト、ADFラベル、ADF表ヘッダー行には、読取り専用のプロパティはありません。ただし、これらのコンポーネントは読取り専用の動作を意味してきました。さらに、エンド・ユーザーはこれらのコンポーネントをホストするセルに値を入力でき、これらのセルに表示される値を一時的に変更できます。ADFデスクトップ統合は、ワークシートからアップロードする際はこれらの変更を無視し、Fusion Webアプリケーションからデータをダウンロードする際にこれらを上書きします。
ADF入力テキスト・コンポーネント、ADF値リスト・コンポーネント、TreeNodeListサブコンポーネントには、それぞれに読取り専用のプロパティ(ReadOnly
)があります。
注意: ADF入力テキスト・コンポーネントのValue プロパティにExcel式を指定する場合、コンポーネントはReadOnly プロパティがTrue に設定されているかのように動作します。コンポーネントは、ReadOnly プロパティの実際の値を無視します。 |
実行時に読取り専用セルの値を保護するには、ワークシート保護を自動に設定します。ワークシートの保護を有効にした後で読取り専用セルの編集を試みた場合、Excelは警告メッセージを表示して編集はブロックされます。ワークシートの保護の詳細は、9.7項「ワークシート保護の使用」を参照してください。
Excelのシートの保護機能やブックの保護機能は、統合Excelワークブックで直接使用しないでください。また、エンド・ユーザーがこれらの機能を使用しないようにしてください。
エンド・ユーザーの混乱を避けるため、ADF出力テキスト・コンポーネントなどのコンポーネントに対して、コンポーネントが読取り専用か編集可能かをエンド・ユーザーに示すスタイルを適用してください。デフォルトでは、ADF出力テキスト・コンポーネントは事前定義済のスタイル、_ADFDI_OutputTextStyle
を使用します。この章の説明にあるように、独自のスタイルを定義してそれをコンポーネントに適用できます。
ADFデスクトップ統合のコンポーネントがサポートするプロパティの詳細は、付録A「ADFデスクトップ統合コンポーネントのプロパティとアクション」を参照してください。
ADFデスクトップ統合には、アプリケーション名やバージョン情報、著作権情報などの情報によって構成して統合Excelワークブックのブランディングに使用できるいくつかの機能があります。この情報を統合Excelワークブックに関連付けるために、ワークブックのBrandingItems
プロパティ・グループを使用できます。エンド・ユーザーがViewAboutDialog
ワークブック・アクションを実行時に起動するリボン・ボタンをクリックすればこのブランディング情報を閲覧できるように、8.3項「実行時リボン・タブの構成」の説明に従って、リボン・タブを構成する必要があります。ワークブック・アクションの詳細は、表A-17を参照してください。
また、リソース・バンドルに文字列キーを定義して、タイトルのような情報を、EL式がこれらの文字列キーの値を取得する際に、統合Excelワークブックの複数の場所で実行時に使用可能な場所に定義できます。文字列キーの定義の詳細は、10.2項「統合Excelワークブックでのリソース・バンドルの使用」を参照してください。
ワークブックBrandingItems
プロパティ・グループの値を定義します。
統合Excelワークブックをブランディングする手順:
統合Excelワークブックを開きます。
「Oracle ADF」タブで、「ワークブック・プロパティ」をクリックします。
「ワークブック・プロパティの編集」ダイアログで、BrandingItemsの入力フィールドの横にある省略記号ボタン(...)をクリックします。
NameValuePairコレクション・エディタで、「追加」をクリックして、新しい要素に次のように値を指定します。
Name
定義するブランディング項目の名前、またはEL式を指定します。
Value
リテラル文字列を指定するか、または省略記号ボタン(...)をクリックして、式ビルダーを起動し、実行時に値を取得するEL式を記述します。BrandingItems
は、リテラル文字列またはリソース式を使用しなければならず、バインディング式を一切含むことはできません。
図9-10は、Master Price Listモジュールのブランディング項目の設計時の表示を示します。
「OK」をクリックします。
実行時には、BrandingItems
プロパティ・グループに定義する名前の値の組合せが、「Oracle ADF」タブの「情報」ボタンからエンド・ユーザーが起動するダイアログに表示されます。これは、8.3項「実行時リボン・タブの構成」の説明に従って、表示するように構成済です。図9-11は、Master Price ListモジュールのEditPriceList.xlsx
ワークブックにおけるブランディング項目の実行時の表示を示します。
デフォルトでは、ADFラベルおよびADF出力テキストなど、読取り専用セルおよびADFデスクトップ統合読取り専用コンポーネントの値をエンド・ユーザーが編集できます。データをアップロードする際、Fusion Webアプリケーションからデータをダウンロードするときに、ADFデスクトップ統合はこれらの変更を無視して上書きします。
実行時に読取り専用のセルの編集を防止するため、ワークシート保護を有効にする必要があります。オプションで、エンド・ユーザーがワークシートの保護をオフにしないように、パスワードを提供できます。
ワークシート保護を使用すると、読取り専用セルについて正真正銘の読取り専用モードを有効化し、実行時に編集されないようにします。
ワークシート保護を有効化する手順
統合Excelワークブックを開きます。
「Oracle ADF」タブで、「ワークシート・プロパティ」をクリックします。
「ワークシート・プロパティの編集」ダイアログで、Protectionプロパティを展開して次のように値を構成します。
実行時にワークシートの保護を有効化するには、「モード」を「自動」に設定します。
必要があれば、「パスワード」・フィールドに値を入力します。エンド・ユーザーは、この値を知らなければ実行時にシートの保護をオフにできません。
パスワードは暗号化されず、Excelで有効なパスワードの長さは最大255文字です。より長いパスワードを指定すると、シートの保護を切り替える際に実行時に警告なしで切り捨てられます。
図9-12は、Master Price Listモジュールのワークシート保護の設計時の表示を示します。
「OK」をクリックします。
実行時にエンド・ユーザーが読取り専用のセルやADFデスクトップ統合の読取り専用コンポーネントを編集しようとすると、Excelに図9-13に示すような警告メッセージが表示されます。
ワークシート保護が有効化されている場合、ADFデスクトップ統合はADFデスクトップ統合コンポーネントの範囲にあるセルのLockedプロパティを制御します。ADFデスクトップ統合コンポーネントの範囲外にあるLockedプロパティは、影響を受けません。
実行時には、ADFデスクトップ統合はコンポーネントの読取り専用動作を評価します。ADFラベルやADF出力テキストなど一部のコンポーネントは常に読取り専用で、ADF入力テキストのような他のコンポーネントは読取り専用のプロパティを持っています。実行時には、読取り専用コンポーネントがtrueに評価されると、Lockedプロパティはtrueに設定されます。ADF表コンポーネントのヘッダー・ラベルは常に読取り専用ですが、列のサブコンポーネントはADF出力テキストやADF入力テキストである場合があります。実行時には、各コンポーネントの読取り専用の動作が評価され、対応するセルのLockedプロパティは適切な値に設定されます。
ワークシートの保護はデフォルトでは有効化されておらず、特定のワークシートに使用する場合は設計時に有効化する必要があります。また、ワークシートの保護を有効化した後は、セルのLockedプロパティは設計時ではなく、実行時に設定されます。
ワークシートの保護に使用するパスワードは暗号化されず、安全な場所に保存されない点にも注意してください。ワークシートの保護は、ワークシートの操作性を向上するためのものであり、重要なデータを保護するものではありません。
ワークシートの保護を有効化した後は、Excelの動作が異なります。主な動作の違いは次のとおりです。
ADF表コンポーネントはKey列に読取り専用セルを含むため、ソートできません。
エンド・ユーザーは行全体または列全体を挿入できます。ただし、一度挿入すると削除はできません。
エンド・ユーザーは行や列を部分的には挿入できません。