Oracle® Fusion Middleware Oracle Application Development Frameworkデスクトップ統合開発者ガイド 11gリリース1 (11.1.1.7.0) B66694-02 |
|
前 |
次 |
この章では、Excelでの定義済スタイルおよびカスタム・スタイルを使用して統合Excelワークブックの外観を構成する方法、EL式を使用して実行時にワークブックのOracle ADFコンポーネントにスタイルを動的に適用する方法、ラベルを使用してExcelワークブックをブランディングする方法、およびワークシート保護機能を使用する方法についても説明します。
この章の内容は次のとおりです。
Excel機能とOracle ADF機能の両方を使用して、統合Excelワークブックの外観を構成できます。ワークブックの外観を構成すると、エンド・ユーザーにとってのワークブックの使い勝手をよくすることができます。たとえば、実行時にADF出力テキスト・コンポーネントをレンダリングするセルに特定のスタイルを適用して、そのセルが読取り専用であることをエンド・ユーザーに示すことができます。また、会社のスタイル・シートやExcelワークブックが統合するFusion Webアプリケーションの色のスキームと一致するように、統合Excelワークブックの外観を構成する場合もあります。
統合Excelワークブックでスタイルを使用してデータを構成することには、様々な利点があります。たとえば、ADF出力テキスト・コンポーネントに特定のスタイルを使用し、ADF入力テキスト・コンポーネントには異なるスタイルを使用できます。
ADFデスクトップ統合には、ワークブックで構成するADFデスクトップ統合コンポーネントに適用する事前定義済のExcelスタイルがいくつか用意されています。デスクトップ統合プロジェクトのニーズを満たすために、追加のスタイルを定義することもできます。その場合は、ロケールや地域、言語に応じて様々にレンダリングされるExcelワークブックの形式を十分に理解しておいてください。
ADFデスクトップ統合には、Excelで定義されたスタイルを実行時に一部のOracle ADFコンポーネントに適用するメカニズムが用意されています。スタイルの適用をサポートするOracle ADFコンポーネントには、名前にStyleNameを含むプロパティがあります。たとえば、ADF表コンポーネントとADF読取り専用表コンポーネントの列プロパティは、実行時に適用されるスタイルを決定するプロパティHeaderStyleName
およびCellStyleName
をサポートします。
多くのプロパティには、ADFデスクトップ統合モジュールのスタイルの事前定義済リストから引き出されるデフォルトの値があります。たとえば、HeaderStyleName
プロパティのデフォルト値は、ADFデスクトップ統合で事前定義されたスタイルの1つである_ADFDI_HeaderStyle
です。ADFデスクトップ統合は、ExcelワークブックがADFデスクトップ統合との併用が有効になっている場合、これらの事前定義済スタイルをExcelワークブックに自動的に追加します。
次に、事前定義済スタイルを示します。
_ADFDI_FormBottomStyle
_ADFDI_FormDoubleClickCellStyle
_ADFDI_FormTopStyle
_ADFDI_HeaderStyle
_ADFDI_InputTextStyle
_ADFDI_LabelStyle
_ADFDI_OutputTextStyle
_ADFDI_ReadOnlyTableStyle
_ADFDI_TableCellROStyle
_ADFDI_TableCellStyle
_ADFDI_TableChangedColumnStyle
_ADFDI_TableDoubleClickCellStyle
_ADFDI_TableFlagColumnStyle
_ADFDI_TableKeyCellStyle
_ADFDI_TriangleHeaderStyle
自分で定義するこれらのスタイルや他のスタイルを、統合ExcelワークブックからFusion Webアプリケーションと統合する予定の別のExcelワークブックにマージできます。追加で使用するスタイルをExcelワークブックで作成することもできます。たとえば、日付に固有の形式を追加するには、_ADFDI_TableCellStyle
eを複製して、MyTableCellDateStyle
という名前を付け、日付に固有の形式を追加します。図9-1にEditWarehouses-DT.xlsx
の事前定義済のスタイルを示します。
実行時にADFデスクトップ統合のコンポーネントに適用するスタイルを決定したら、EL式を記述してスタイルをコンポーネントに関連付けることができます。StyleNameを名前に含むADFデスクトップ統合コンポーネントのプロパティは、EL式を値として受け入れます。他のADFコンポーネントのADFラベル・コンポーネントとLabel
プロパティでも、EL式がサポートされます。これらのEL式は、リソース・バンドルで定義された文字列キーの値やFusion Webアプリケーションで定義された属性コントロール・ヒントの値を取得できます。
新しいスタイルの作成と、ワークブックへのスタイルのマージの詳細は、Excelのドキュメントを参照してください。
Excelでセルに適用できる、「数値」スタイルの「日付」に分類される表示形式の一部は、ユーザーがMicrosoft Windowsの「コントロール パネル」からアクセスできる「地域と言語のオプション」を使用してローカル・システムのロケールを変更すると変わります。「タイプ」リストのこれらの形式の先頭に*文字が付きます。図9-2に示す日付の種類の例では、「フランス語(フランス)」の表記規則を使用してセルの日付書式が設定されています。
エンド・ユーザーが、図9-3にあるように「英語 (米国)」を使用するようにシステムの地域オプションを変更した場合、 図9-2のスタイルでフォーマットされるセルは、「英語 (米国)」の表記規則を使用します。
Oracle ADFコンポーネントにスタイルを適用するには、プロパティ・インスペクタを使用して、StyleNameを名前に持つプロパティの値を設定します。
スタイルを適用するには:
統合Excelワークブックで、変更するOracle ADFコンポーネントを参照するセルを選択して、「Oracle ADF」タブの「プロパティの編集」ボタンをクリックします。
StyleNameプロパティを選択し、参照(...)アイコンをクリックして「式の編集」ダイアログを表示します。
Stylesノードを展開して、実行時にセルに適用するスタイルを選択します。
たとえば、見出しスタイル(Heading 4
スタイル)をバインディング・ウェアハウスID出力テキスト・フィールドに適用します。一般的なスタイルではなくHeading 4スタイルをフィールドに適用することで、データが青色の太字で表示されます。
「式に挿入」をクリックして、選択したスタイルを「式」フィールドに挿入します。
図9-4に、「式の編集」ダイアログを示します。
「OK」をクリックします。
名前にStyleNameが付いているプロパティの値として入力したEL式は、実行時に評価されます。これが事前定義済スタイルまたは開発者が定義したスタイルに対応する場合、そのスタイルはプロパティを設定したADFコンポーネントに適用されます。
ADFコンポーネントを参照するセルに、ADFのプロパティで定義されたものとは異なるスタイルが適用されている場合、ADFコンポーネントは既存のスタイルを実行時に上書きして、プロパティで定義されたスタイルを適用します。
たとえば、図9-5は、Heading 4
スタイルが適用されてデフォルトの_ADFDI_OutputTextStyle
スタイルが上書きされた後のバインディング・ウェアハウスIDの実行時の値を示しています。
StyleNameを名前に含むOracle ADFコンポーネントのプロパティは、EL式を値として受け入れます。記述するEL式は、実行時に指定されたADFコンポーネントに適用されるExcelスタイルに解決することができます。記述するEL式は、ADFデータ・バインディング式などを使用するExcel式です。ADFデスクトップ統合は、ユーザーがセル間を移動するときやアップロード時には、結果を評価または適用しません。
次の例は、EL式を使用して、実行時の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-6に、ADFボタン・コンポーネントのプロパティ・インスペクタ・ウィンドウから起動された「式の編集」ダイアログを示します。
実行時にスタイルを適用するEL式を記述するには:
統合Excelワークブックを開きます。
EL式を記述する、Oracle ADFコンポーネントを参照するExcelワークシートのセルを選択します。
「Oracle ADF」タブの「プロパティの編集」ボタンをクリックして、プロパティ・インスペクタを表示します。
EL式を関連付けるプロパティ・インスペクタのプロパティを選択し、参照(...)アイコンをクリックして「式の編集」ダイアログを表示します。
注意: 「式の編集」ダイアログは、手順2で選択したOracle ADFコンポーネントがEL式をサポートする場合のみ表示されます。コンテキストによっては、参照(...)アイコンで「アクションの編集」ダイアログなどの他のエディタが起動する場合があります。 |
図9-6に示すように「式の編集」ダイアログには、EL式で参照できるOracle ADFコンポーネント、バインディング、スタイル、リソース、Excel機能の階層リストが表示されます。このダイアログに入力するEL式の構文の詳細は、付録B「ADFデスクトップ統合のEL式」を参照してください。
スタイルに評価されるEL式は、次の場合に適用されます。
ADF表コンポーネントがDownload
アクションまたはDownloadForInsert
アクションを起動する場合
行がADF表コンポーネントに挿入される場合
ワークシートがDownSync
アクションを起動する場合
スタイルに評価されるEL式は、次の場合には適用されません。
ADF表コンポーネントがRowDownSync
アクションを起動する場合
エンド・ユーザーがセルの形式のプロパティを編集する場合
また、エンド・ユーザーがセルの値を編集すると、スタイルに評価されるEL式は再評価されない点にも注意してください。
EL式の実行時の値は、エンド・ユーザーの統合Excelワークブックで定義されたスタイルには一致しません。
このシナリオでは、対象セルのスタイルの形式は変わりません。既存のスタイル形式が保持されます。クライアントサイドのロギングを構成した場合、EL式がエンド・ユーザーの統合Excelワークブックで定義されていないスタイルに評価されると、ADFデスクトップ統合はログ・ファイルにエントリを生成します。クライアントサイドのロギングの詳細は、C.3項「統合Excelワークブックのログ・ファイルの生成」を参照してください。
ラベルを使用して、統合Excelワークブックの機能をどのように使用するかについての情報をエンド・ユーザーに提供します。リソース・バンドルで定義された文字列キーの値あるいは属性コントロール・ヒントを取得するEL式を記述できます。統合Excelワークブックは、ワークブックが初期化されるときにのみLabel
プロパティの値を評価します。
図9-7に、ADFデスクトップ統合のSummitサンプル・アプリケーションのEditWarehouses-DT.xlsx
ワークブックの設計時の表示の部分を示します。対応するLabel
プロパティにEL式が指定されている、ADFラベル・コンポーネントとADF入力テキスト・コンポーネントの例を示します。
実行時にこれらのEL式は、ADFデスクトップ統合のSummitサンプル・アプリケーションに登録されたres
リソース・バンドルに定義された文字列キーに解決されます。リソース・バンドルは、「ワークブック・プロパティ」ダイアログで定義します。リソース・バンドルからの文字列キーの参照の詳細は、10.2項「統合Excelワークブックでのリソース・バンドルの使用」を参照してください。
図9-8は、図9-7に設計モードで示されているADFラベル・コンポーネントとAD入力テキスト・コンポーネントに相当する実行時の表示を示しています。
リソース・バンドルからの文字列キーの他に、ADFラベル・コンポーネントと他のADFコンポーネントのLabel
プロパティは、JDeveloperプロジェクトのエンティティ・オブジェクトとビュー・オブジェクトに定義する属性コントロール・ヒントを参照できます。図9-9は、EditCustomers-DT.xlsx
ワークブックのADF表コンポーネントにあるPhone
列の式ビルダーを示しています。式ビルダーは、実行時に属性コントロール・ヒントに定義される値(Phone
)を取得する、Phone
列のHeaderLabel
プロパティに対するEL式を含みます。
属性コントロールのヒントは、ビュー・オブジェクトとエンティティ・オブジェクトの両方に構成できます。エンティティ・オブジェクトに属性コントロール・ヒントを追加する方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のエンティティ・オブジェクトの属性コントロール・ヒントの定義に関する項を参照してください。ビュー・オブジェクトに属性コントロール・ヒントを追加する方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のビュー・オブジェクトのコントロール・ヒントの定義に関する項を参照してください。
統合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ラベル・コンポーネントを使用して、統合Excelワークブックのエンド・ユーザーに、ワークブックで他のADFコンポーネントを使用する方法に関する情報を提供できます。たとえば、便宜上は多くのフォームで*を使用して、入力フィールドへの値の入力が必須であることをエンド・ユーザーに示します。図9-10は、2つのADF入力テキスト・コンポーネントと隣接するセルのADFラベル・コンポーネントを示しています。それぞれのADFラベル・コンポーネントは、実行時にリソース・バンドルから文字列キーの値を取得するEL式を参照します。各文字列キーは、値の入力が必須であることをエンド・ユーザーに示すために、*文字を含めます。
リソース・バンドルの使用の詳細は、10.2項「統合Excelワークブックでのリソース・バンドルの使用」を参照してください。
統合Excelワークブックの読取り専用プロパティに関して、次の点に注意してください。
ADF出力テキスト、ADFラベルおよびADF表ヘッダー行には、読取り専用のプロパティはありません。ただし、これらのコンポーネントは読取り専用の動作を意味してきました。また、エンド・ユーザーはこれらのコンポーネントをホストするセルに値を入力でき、これらのセルに表示される値を一時的に変更できます。ADFデスクトップ統合は、ワークシートからアップロードする際はこれらの変更を無視し、Fusion Webアプリケーションからデータをダウンロードする際にこれらを上書きします。
ADF入力テキスト・コンポーネント、ADF値リスト・コンポーネント、TreeNodeListサブコンポーネントには、それぞれに読取り専用のプロパティ(ReadOnly
)があります。
注意: ADF入力テキスト・コンポーネントの |
実行時に読取り専用セルの値を保護するには、ワークシート保護を自動に設定します。ワークシート保護を有効にした後で読取り専用セルの編集を試みた場合、Excelで警告メッセージが表示され、編集はブロックされます。ワークシート保護の詳細は、9.7項「ワークシート保護の使用」を参照してください。
Excelのシートの保護機能やブックの保護機能は、統合Excelワークブックで直接使用しないでください。また、エンド・ユーザーがこれらの機能を使用しないようにしてください。
エンド・ユーザーの混乱を避けるため、ADF出力テキスト・コンポーネントなどのコンポーネントに対して、コンポーネントが読取り専用か編集可能かをエンド・ユーザーに示すスタイルを適用してください。デフォルトでは、ADF出力テキスト・コンポーネントは事前定義済のスタイル、_ADFDI_OutputTextStyle
を使用します。この章の説明にあるように、独自のスタイルを定義してそれをコンポーネントに適用できます。
ADFデスクトップ統合のコンポーネントがサポートするプロパティの詳細は、付録A「ADFデスクトップ統合コンポーネントのプロパティとアクション」を参照してください。
ADFデスクトップ統合には、アプリケーション名やバージョン情報、著作権情報などの情報によって構成して統合Excelワークブックのブランディングに使用できるいくつかの機能があります。この情報を統合Excelワークブックに関連付けるために、ワークブックのBrandingItems
プロパティ・グループを使用できます。エンド・ユーザーがViewAboutDialog
ワークブック・アクションを実行時に起動するリボン・ボタンをクリックすればこのブランディング情報を閲覧できるように、8.3項「実行時リボン・タブの構成」の説明に従って、リボン・タブを構成する必要があります。ワークブック・アクションの詳細は、表A-17を参照してください。
また、リソース・バンドルに文字列キーを定義して、タイトルなどの情報を1つの場所に定義しておくと、実行時、EL式がこれらの文字列キーの値を取得する際に、統合Excelワークブック内の複数の場所でこの情報を使用できます。文字列キーの定義の詳細は、10.2項「統合Excelワークブックでのリソース・バンドルの使用」を参照してください。
ワークブックBrandingItems
プロパティ・グループの値を定義します。
統合Excelワークブックをブランディングするには:
統合Excelワークブックを開きます。
「Oracle ADF」タブの「ワークブック」グループで、「ワークブック・プロパティ」をクリックします。
「ワークブック・プロパティの編集」ダイアログで、BrandingItemsの入力フィールドの横にある参照(...)アイコンをクリックします。
「BrandingItemsの編集」ダイアログで、「追加」をクリックして、新しい要素に次のように値を指定します。
Name
定義するブランディング項目の名前、またはEL式を指定します。
Value
リテラル文字列を指定するか、または参照(...)アイコンをクリックして、式ビルダーを起動し、実行時に値を取得するEL式を記述します。BrandingItems
は、リテラル文字列またはリソース式を使用しなければならず、バインディング式を一切含むことはできません。
図9-11に、ADFデスクトップ統合のSummitサンプル・アプリケーションのブランディング項目の設計時の表示を示します。
「OK」をクリックします。
実行時には、BrandingItems
プロパティ・グループに定義する名前の値の組合せが、「Oracle ADF」タブの「情報」ボタンからエンド・ユーザーが起動するダイアログに表示されます。これは、8.3項「実行時リボン・タブの構成」の説明に従って、表示するように構成済です。 図9-12に、ADFデスクトップ統合のEditCustomers.xlsx
ワークブックのSummitサンプル・アプリケーションにおけるブランディング項目の実行時の表示を示します。
デフォルトでは、ロックされたセルおよびADFデスクトップ統合の読取り専用コンポーネント(ADFラベルおよびADF出力テキストなど)の値をエンド・ユーザーが実行時に編集できます。データをアップロードする際、Fusion Webアプリケーションからデータをダウンロードするときに、ADFデスクトップ統合はこれらの変更を無視して上書きします。
ロックされたセルが実行時に編集されるのを防ぐため、ワークシート保護を有効にする必要があります。オプションで、エンド・ユーザーがワークシート保護をオフにしないように、パスワードを提供できます。
ワークシート保護を使用すると、ロックされたセルおよび読取り専用セルについて正真正銘の読取り専用モードを有効化し、実行時に編集されないようにします。
ワークシート保護を有効化するには:
統合Excelワークブックを開きます。
「Oracle ADF」タブの「ワークブック」グループで、「ワークブック・プロパティ」をクリックします。
「ワークシート・プロパティの編集」ダイアログで、Protectionプロパティを展開して次のように値を構成します。
実行時にワークシートの保護を有効化するには、「モード」を「自動」に設定します。
必要があれば、「パスワード」・フィールドに値を入力します。エンド・ユーザーは、この値を知らなければ実行時にシートの保護をオフにできません。
パスワードは暗号化されず、Excelで有効なパスワードの長さは最大255文字です。これより長いパスワードを指定すると、シート保護を切り替える際に実行時に警告なしで切り捨てられます。
図9-13に、ADFデスクトップ統合のSummitサンプル・アプリケーションのワークシート保護の設計時の表示を示します。
「OK」をクリックします。
実行時にエンド・ユーザーが読取り専用のセルやADFデスクトップ統合の読取り専用コンポーネントを編集しようとすると、Excelに図9-14に示すような警告メッセージが表示されます。
ワークシート保護が有効化されている場合、ADFデスクトップ統合はADFデスクトップ統合コンポーネントの範囲にあるセルのLockedプロパティを制御します。ADFデスクトップ統合コンポーネントの範囲外にあるLockedプロパティは、影響を受けません。ADFデスクトップ統合コンポーネントの範囲外にあるLockedプロパティは、影響を受けません。
実行時には、ADFデスクトップ統合はコンポーネントの読取り専用動作を評価します。ADFラベルやADF出力テキストなど一部のコンポーネントは常に読取り専用で、ADF入力テキストのような他のコンポーネントは読取り専用のプロパティを持っています。実行時には、読取り専用コンポーネントがtrueに評価されると、Lockedプロパティはtrueに設定されます。ADF表コンポーネントのヘッダー・ラベルは常に読取り専用ですが、列のサブコンポーネントはADF出力テキストやADF入力テキストである場合があります。実行時には、各コンポーネントの読取り専用の動作が評価され、対応するセルのLockedプロパティは適切な値に設定されます。
ワークシートの保護はデフォルトでは有効化されておらず、特定のワークシートに使用する場合は設計時に有効化する必要があります。また、ワークシートの保護が有効化された後は、セルのLockedプロパティは設計時ではなく、実行時に設定されます。
ワークシート保護に使用するパスワードは暗号化されず、安全な場所に保存されない点にも注意してください。ワークシートの保護は、ワークシートの操作性を向上するためのものであり、重要なデータを保護するものではありません。
ワークシート保護を有効化した後は、Excelの動作が異なります。主な動作の違いは次のとおりです。
ADF表コンポーネントはKey列に読取り専用セルを含むため、ソートできません。
エンド・ユーザーは行全体または列全体を挿入できます。ただし、一度挿入すると削除はできません。
エンド・ユーザーは行や列を部分的には挿入できません。