6 ADFデスクトップ統合フォーム・タイプ・コンポーネントの使用

ADFデスクトップ統合には、エンド・ユーザーがFusion Webアクションから取得したデータを管理できるようにするためのフォーム・コンポーネント(ラベル、入力テキスト、出力テキスト、値リストなど)が用意されています。Excel式を使用してこれらのコンポーネントに計算されたデータを表示する方法について説明します。

この章の内容は次のとおりです。

ADFデスクトップ統合フォーム・タイプ・コンポーネントについて

ADFデスクトップ統合フォーム・タイプ・コンポーネントを使用すると、エンド・ユーザーが統合ExcelワークブックでFusion Webアプリケーションから取得したデータを管理できるようになります。

ADFデスクトップ統合では、次のコンポーネントを使用して、統合Excelワークブックにフォーム・タイプ機能を作成します。

  • ADF入力テキスト

  • ADF入力日

  • ADF出力テキスト

  • ADFラベル

  • ADF値リスト

  • ADFイメージ

図6-1に、これらのコンポーネントの一部を示します。図6-1に示すリボン・コマンドは、実行時に統合ExcelワークブックのExcelリボンに表示されるワークシートレベルのリボン・コマンドです。「実行時リボン・タブの構成」を参照してください。

ADF値リスト・コンポーネントの使用は、「Excelワークシートでの値リストの作成」に説明されています。

図6-1 ADFデスクトップ統合フォーム・タイプ・コンポーネント

図6-1の説明が続きます
「図6-1 ADFデスクトップ統合フォーム・タイプ・コンポーネント」の説明

ADFデスクトップ統合フォーム・タイプ・コンポーネントのユース・ケースと例

ADFデスクトップ統合フォーム・タイプ・コンポーネントは、ユーザーの入力やFusion Webアプリケーションからの出力用に統合Excelワークブックでフォームをビルドするときに使用されます。図6-2に示すように、EditWarehouseInventory-DT.xlsxのナビゲーション・フォームに使用されるフォーム・タイプ・コンポーネントにより、エンド・ユーザーはデータを容易にナビゲートおよび更新できます。

図6-2 ADFデスクトップ統合フォーム・タイプ・コンポーネントの使用

図6-2の説明が続きます
「図6-2 ADFデスクトップ統合フォーム・タイプ・コンポーネントの使用」の説明

ADFデスクトップ統合フォーム・タイプ・コンポーネントの追加機能

ワークシートにコンポーネントを追加した後、イベントやエンド・ユーザーのアクションに対する応答など、機能を追加しなければならないことがあります。フォーム・コンポーネントで使用可能な他の機能へのリンクは次のとおりです。

ADFラベル・コンポーネントの挿入

ADFラベル・コンポーネントは、静的な文字列値を表示するために、アクティブなワークシートに挿入できるコンポーネントです。

プロパティ・インスペクタのLabelの入力フィールドに値を指定するか、式ビルダーを起動して、実行時に文字列に解決されるEL式を記述します。取得される文字列は、リソース・バンドルまたはエンティティあるいはビュー・オブジェクトの属性コントロールのヒント内で定義できます。たとえば、次のEL式は実行時にCountryId属性のラベルの値に解決されます。

#{bindings.CountryId.label}

ADFラベル・コンポーネントや他のOracle ADFコンポーネントでLabelプロパティに指定する値は、Oracle ADFコンポーネントをホストするワークシートが初期化(初めて開く)されるときに評価されます。

プロパティ・インスペクタを使用して、スタイルや位置などのコンポーネントのプロパティをワークシートで構成できます。

図6-3に、ADFラベル・コンポーネントのプロパティ・インスペクタが最前面に表示された状態を示します。ADFラベル・コンポーネントは、実行時にCountryId属性のラベルに解決されるEL式を参照します。

図6-3 設計モードのADFラベル・コンポーネント

この図は周囲のテキストで説明しています

ADFラベル・コンポーネントを挿入するには:

  1. 統合Excelワークブックを開きます。
  2. コンポーネントを配置するExcelワークシートのセルを選択します。
  3. コンポーネント・パレットで「ADFラベル」を選択して、コンポーネントの挿入をクリックします。または、「Oracle ADF」タブで、「コンポーネントの挿入」ドロップダウン・リストから「ADFラベル」を選択します。
  4. プロパティ・インスペクタで、コンポーネントの外観、設計およびレイアウトを決定するプロパティを構成します。
  5. 「OK」をクリックします。

図6-4は、実行時のADFラベル・コンポーネント(黒線の枠内)の例を示しています。

図6-4 実行時のADFラベル・コンポーネント

この図は周囲のテキストで説明しています

注意:

ADFラベル・コンポーネントは1回のみレンダリングされ、Worksheet.DownSyncのコール後は更新されません。表示される値をWorksheet.DownSyncのコール後に変更する場合は、かわりにADF出力テキスト・コンポーネントを使用することを検討してください。

統合Excelワークブックでのラベルの使用の詳細は、「統合Excelワークブックでのラベルの使用」を参照してください。

ADF入力テキスト・コンポーネントの挿入

ADF入力テキスト・コンポーネントは、コンポーネント・パレットを使用して、アクティブなワークシートに挿入するコンポーネントです。

コンポーネントを挿入したワークシートのアクティブなセルには、実行時に、ワークシートDownSyncアクションが起動された後のコンポーネントのバインディングの現在の値が表示されます。エンド・ユーザーは実行時にこの値を編集できます。エンド・ユーザーが行った値の変更がFusion Webアプリケーションに転送されるように、ワークシートUpSyncアクションを構成します。Fusion Webアプリケーションの変更をコミットするように、Commitアクション・バインディングを構成します。

ユーザーがプロパティ・インスペクタを使用してワークシートのセル(DoubleClickActionSetプロパティ)をダブルクリックすると、位置やスタイル、動作といったコンポーネントのプロパティの多くを構成できます。DoubleClickActionSetの詳細は、「アクション・セットの使用」を参照してください。

図6-5に、ADF入力テキスト・コンポーネントのプロパティ・インスペクタが最前面に表示された状態を示します。ADF入力テキスト・コンポーネントは、ADFデスクトップ統合のSummitサンプル・アプリケーションのCity属性バインディングへバインドされます。ユーザーは、このコンポーネントに市の名前を入力します。

ADF入力テキスト・コンポーネントのプロパティの詳細は、「ADF入力テキスト・コンポーネントのプロパティ」を参照してください。

図6-5 設計モードのADF入力テキスト・コンポーネント

この図は周囲のテキストで説明しています

ADF入力テキスト・コンポーネントを挿入するには:

  1. 統合Excelワークブックを開きます。
  2. コンポーネントを配置するExcelワークシートのセルを選択します。
  3. コンポーネント・パレットで「ADF入力テキスト」を選択して、コンポーネントの挿入をクリックします。または、「Oracle ADF」タブで、「コンポーネントの挿入」ドロップダウン・リストから「ADF入力テキスト」を選択します。
  4. プロパティ・インスペクタで、コンポーネントの外観、レイアウトおよび動作を決定するプロパティを構成します。表6-1は、値を指定する必要のあるいくつかのプロパティの概要を示します。

    表6-1 ADF入力テキストのプロパティ

    プロパティ 指定する内容

    InputText.Value

    コンポーネントが参照するバインディングを決定するValueプロパティのEL式。

    ValueプロパティにExcel式を指定する場合、コンポーネントはReadOnlyプロパティがTrueに設定されているかのように動作します。コンポーネントは、ReadOnlyプロパティの実際の値を無視します。

    InputText.ReadOnly

    エンド・ユーザーが加える変更がアップロードされるようにFalseに解決されるEL式。コンポーネントで変更を無視する場合は、Trueに解決されるEL式を記述してください。デフォルト値はFalseです。

  5. 「OK」をクリックします。

    注意:

    コンポーネントのプロパティを後から変更するには、コンポーネントを配置するワークシートのセルを選択して、プロパティ・インスペクタを表示します。または、セルで右クリックして、「ADFコンポーネント・プロパティの編集」を選択し、プロパティ・インスペクタを開きます。

    コンポーネントを削除するには、「削除」リボン・コマンドを使用します。「ADFデスクトップ統合コンポーネントの削除」を参照してください。

図6-6は、実行時のADF入力テキスト・コンポーネント(黒線の枠内)の例を示します。

図6-6 実行時のADF入力テキスト・コンポーネント

この図は周囲のテキストで説明しています

ADF出力テキスト・コンポーネントの挿入

ADF出力テキスト・コンポーネントは、コンポーネント・パレットを使用して、アクティブなワークシートに挿入できるコンポーネントです。コンポーネントの挿入時、ワークシートのアクティブなセルには、ワークシートDownSyncアクションを起動した後のコンポーネントのバインディングの現在の値が表示されます。

コンポーネントにより表示される値は読取り専用です。エンド・ユーザーがセルの値に加える変更で、コンポーネントを配置するものは、変更がFusion Webアプリケーションに送信される際に無視されます。セルの内容をエンド・ユーザーが変更できないようにするには、「ワークシート保護の使用」の説明に従って、ワークシート・プロパティで自動シート保護を有効にします。

また、このコンポーネントはADF表コンポーネントおよびADF読取り表コンポーネントのサブコンポーネントとして機能することができます。ADF表コンポーネントおよびADF読取り専用コンポーネントの列は、ADF出力テキスト・コンポーネントを使用するように構成できます。

スタイル、セルをダブルクリックしたときの動作(DoubleClickActionSetプロパティ)および位置など、コンポーネントの様々なプロパティを、プロパティ・インスペクタを使用してワークシートで構成できます。

図6-7に、ADF出力テキスト・コンポーネントのプロパティ・インスペクタが最前面に表示された状態を示します。

図6-7 設計モードのADF出力テキスト・コンポーネント

この図は周囲のテキストで説明しています

ADF出力テキスト・コンポーネントを挿入するには:

  1. 統合Excelワークブックを開きます。
  2. コンポーネントを配置するExcelワークシートのセルを選択します。
  3. コンポーネント・パレットで「ADF出力テキスト」を選択して、コンポーネントの挿入をクリックします。または、「Oracle ADF」タブで、「コンポーネントの挿入」ドロップダウン・リストから「ADF出力テキスト」を選択します。
  4. プロパティ・インスペクタで、コンポーネントの外観、レイアウトおよび動作を決定するプロパティを構成します。

    たとえば、ADF出力テキスト・コンポーネントが何を参照するかを決定するために、ValueプロパティにEL式を記述または指定する必要があります。ADF出力テキスト・コンポーネントのプロパティに指定する値の詳細は、「ADF出力テキスト・コンポーネントのプロパティ」を参照してください。

  5. 「OK」をクリックします。

    注意:

    コンポーネントのプロパティを後から変更するには、コンポーネントを配置するワークシートのセルを選択して、プロパティ・インスペクタを表示します。または、セルで右クリックして、「ADFコンポーネント・プロパティの編集」を選択し、プロパティ・インスペクタを開きます。

    コンポーネントを削除するには、「削除」リボン・コマンドを使用します。「ADFデスクトップ統合コンポーネントの削除」を参照してください。

図6-8は、実行時のADF出力テキスト・コンポーネント(黒線の枠内)の例を示します。

図6-8 実行時のADF出力テキスト・コンポーネント

この図は周囲のテキストで説明しています

ADF入力日コンポーネントの挿入

ADF入力日コンポーネントでは、エンド・ユーザーが日付型フィールドで日付値を選択できる日付ピッカーが実行時に表示されます。

実行時に「値」.の入力フィールドの日付/時刻の値に解決される、属性バインディングまたはEL式を設計時に指定できます。その他の日付/時刻の値はサポートされていません。

図6-9に、設計時のADF入力日コンポーネントを示します。

図6-9 設計モードのADF入力日コンポーネント

この図は周囲のテキストで説明しています

ADF入力日コンポーネントをフォーム内のフィールドまたは表コンポーネント内の列として挿入できます。日付属性を含むモデルドリブン列として、ADF入力日コンポーネントを追加することもできます。

ADF入力日コンポーネントを挿入する手順:

  1. 統合Excelワークブックを開きます。
  2. コンポーネントを配置するExcelワークシートのセルを選択します。
  3. コンポーネント・パレットで「ADF入力日」を選択して、「コンポーネントの挿入」をクリックします。または、「Oracle ADF」タブで、「コンポーネントの挿入」ドロップダウン・リストから「ADF入力日」を選択します。
  4. プロパティ・インスペクタで、コンポーネントが実行時に起動するアクションと、コンポーネントの外観、設計およびレイアウトを決定するプロパティを構成します。表6-2は、値を指定する必要のあるいくつかのプロパティの概要を示します。このコンポーネントの他のプロパティの詳細は、「ADF入力日コンポーネントのプロパティ」を参照してください。

    表6-2 ADF入力日コンポーネントのプロパティ

    プロパティ 指定する内容

    ReadOnly

    エンド・ユーザーの変更を更新するには、このプロパティをFalseに変更します(または、EL式を書き込みます)。アップロード中にエンド・ユーザーの変更を無視するには、このプロパティをTrueに設定します。Trueに設定されている場合、日付ピッカーは実行時に表示されません。

    デフォルト値はFalseです。

    Value

    日付属性。実行時に日付/時刻の値に解決されるEL式を指定することもできます。実行時に日付/時刻の値に解決されない属性またはEL式は、エラーの原因になります。

    日付/時刻の値が設計時に指定されていない場合、カレンダには、実行時にセルの現在値に対応する日付が表示されます。セルが空(日付値が含まれていない)場合、カレンダは今日の日付にデフォルトで設定されます。

  5. 「OK」をクリックします。

図6-10に、実行時のADF入力日コンポーネントの例を示します。

図6-10 実行時のADF入力日コンポーネント

この図は周囲のテキストで説明しています

選択した場合、ADF入力日コンポーネントでは、実行時にカレンダがモードレス・ウィンドウに表示されます。エンド・ユーザーは、表示されている月から日付を選択したり、矢印アイコンを使用して他の月に移動したりできます。月または年をクリックして、他の月や年に移動したり、10年単位で移動することもできます(図6-11を参照)。

エンド・ユーザーは、ADF入力日コンポーネントをホストするセルに、時刻を手動で入力できます。エンド・ユーザーからのこの入力を受け入れるには、ADF入力日コンポーネントをホストするセルに時刻値と日付値を入力できるように、Excelの「セルの書式設定」のプロパティを構成します。ADFバインディング・タイプにより、使用される時刻値が決定されます。デフォルトでは、時刻値は0:00になっています。

図6-11 実行時のADF入力日コンポーネントでのナビゲーション

この図は周囲のテキストで説明しています

ADFイメージ・コンポーネントの挿入

ADFイメージ・コンポーネントを使用して、統合Excelワークシートにイメージを挿入できます。設計時にSourceにイメージ・ファイルのURLを指定すると、ADFイメージ・コンポーネントが実行時にイメージをレンダリングします。イメージは、実行時に元のサイズでレンダリングされます。

実行時に、ADFイメージ・コンポーネントがレンダリングされるときに、ADFデスクトップ統合によってSourceプロパティ値が絶対URLか相対URLかが判断されます。ソースURLは、httpおよびhttpsで開始する場合は絶対とみなされます。これらのスキームのみサポートされます。URLが絶対の場合は、イメージをフェッチするためにそのまま使用され、そのイメージがワークシートに挿入されます。URLが絶対でない場合、部分的なURIがワークブックのWebAppRootの相対と想定されます。このような場合、WebAppRoot値およびSource値は完全なイメージURLを形成するために連結されます。

どのような理由でもイメージが実行時にレンダリングされない場合(例: 無効なURL)、設計時に構成した短い説明テキストがイメージのかわりに表示され、ADFデスクトップ統合でログ・エントリが作成されます。失敗に関する技術的な詳細は、クライアント・ログにレポートされます。ADFデスクトップ統合は、ワークシートの初期化を中断せず、警告またはエラー・メッセージをエンド・ユーザーに表示しません。エンド・ユーザーには、成功した場合に、イメージが表示されるセル位置にイメージの短い説明が表示されます。

図6-12に、設計時のADFイメージ・コンポーネントを示します。

図6-12 設計モードのADFイメージ・コンポーネント

この図は周囲のテキストで説明しています

ADFイメージ・コンポーネントを挿入する手順:

  1. 統合Excelワークブックを開きます。
  2. コンポーネントを配置するExcelワークシートのセルを選択します。
  3. コンポーネント・パレットで「ADFイメージ」を選択して、「コンポーネントの挿入」をクリックします。または、「Oracle ADF」タブで、「コンポーネントの挿入」ドロップダウン・リストから「ADFイメージ」を選択します。
  4. プロパティ・インスペクタで、コンポーネントの外観、レイアウトおよび動作を決定するプロパティを構成します。表6-3は、値を指定する必要のあるいくつかのプロパティの概要を示します。このコンポーネントの他のプロパティの詳細は、「ADFイメージ・コンポーネントのプロパティ」を参照してください。

    表6-3 ADFイメージ・コンポーネントのプロパティ

    プロパティ 指定する内容

    Source

    イメージ・ファイルのURL。

    絶対または相対URLをイメージのソースとして使用できます。URLが絶対でない場合、部分的なURIがワークブックのWebAppRootの相対と想定されます。

    例:

    /images/myLogo.png

    /resourceServlet?image=myLogo

    http://www.oracle.com/ocom/groups/public/@otn/documents/digitalasset/110224.gif

    Sourceプロパティでは、EL式はサポートされません。

    サポートされるイメージ形式のリストは、Microsoft Excelのドキュメントを参照してください。

    ShortDesc

    イメージが見つからないかレンダリングできない場合のイメージの代替テキストとしての文字列メッセージ。イメージ・コンポーネントの代替テキストに解決されるEL式も指定できます。

    ShortDescプロパティでは、バインディング式はサポートされません。

  5. 「OK」をクリックします。

    注意:

    コンポーネントのプロパティを後から変更するには、コンポーネントを配置するワークシートのセルを選択して、プロパティ・インスペクタを表示します。または、セルで右クリックして、「ADFコンポーネント・プロパティの編集」を選択し、プロパティ・インスペクタを開きます。

    コンポーネントを削除するには、「削除」リボン・コマンドを使用します。「ADFデスクトップ統合コンポーネントの削除」を参照してください。

図6-13に、実行時のADFイメージ・コンポーネントの例を示します。

図6-13 実行時のADFイメージ・コンポーネント

この図は周囲のテキストで説明しています

注意:

ワークシートが保護されていない場合、エンド・ユーザーは実行時にイメージをサイズ変更または移動できます。イメージのサイズによっては、他のADFデスクトップ統合コンポーネントなど、他のワークシート・コンテンツの上に表示され、そのコンテンツを非表示にすることがあります。

ADFコンポーネントのマネージドBeanからの出力の表示

ADFコンポーネントを構成して、マネージドBeanからの出力をFusion Webアプリケーションで表示できます。

統合Excelワークブック内のマネージドBeanはEL式を通じて参照します。Excelワークシートに関連付けるページ定義ファイルにメソッド・アクション・バインディングを追加して、マネージドBeanの値を取得し、それを属性バインディングに割り当てます。EL式を使用して、実行時に属性バインディングの値を取得します。

Fusion WebアプリケーションでマネージドBeanを使用する方法の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』Fusion WebアプリケーションでのマネージドBeanの使用に関する項を参照してください。

マネージドBeanからの出力の表示方法

EL式は、EL式をサポートするプロパティ(Labelプロパティなど)に記述します。

始める前に:

マネージドBeanに関する知識が役立つ場合があります。「ADFコンポーネントのマネージドBeanからの出力の表示」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「ADFデスクトップ統合フォーム・タイプ・コンポーネントの追加機能」を参照してください。

マネージドBeanからの出力を表示するには:

  1. 統合Excelワークブックを開きます。
  2. マネージドBeanからの出力を表示するADFコンポーネントを選択し、そのプロパティ・インスペクタを開きます。

    図6-14に、ADFラベル・コンポーネントが、アクション・バインディングにより移入された値を持つ属性バインディングからの出力を表示するように構成されている例を示します。

    図6-14 実行時にマネージドBeanからの出力を表示するADFラベル・コンポーネント

    この図は周囲のテキストで説明しています
  3. 実行時にマネージドBeanからの出力を取得するEL式を記述します。

    図6-14の例は、resリソース・バンドルからの文字列キー(excel.connectionPrefix)の値とloggedInUser属性バインディングの値を取得するEL式を示します。この属性バインディングは、マネージドBeanからの出力を参照します。

  4. 「OK」をクリックします。

実行時の処理: ADFコンポーネントによるマネージドBeanからの出力の表示

メソッド・アクション・バインディングは、マネージドBeanからの値を取得して属性バインディングに移入します。記述するEL式は、属性バインディングからの値を取得し、出力を表示するように構成したADFコンポーネントを通じてそれをエンド・ユーザーに表示します。たとえば、図6-15に示す設計モードのADFラベル・コンポーネントは、実行時に次のような文字列を表示します。

Connected as sking

図6-15 実行時のマネージドBeanからの出力

この図は周囲のテキストで説明しています

図6-15では、skingは統合Excelワークブックを介してFusion Webアプリケーションにログオンしているユーザーのユーザー名です。

コンポーネント内での連結または計算されたデータの表示

ADFデスクトップ統合モジュールは、コンポーネント内で、1つのコンポーネントにより、計算または複数のバインディング式の連結に基づいたデータを表示可能なEL式をサポートしています。

計算されたデータを表示するようにコンポーネントを構成する方法

EL式は、入力テキストまたは出力テキスト・コンポーネントのValueプロパティに対して記述します。

図6-16に、ADF出力テキスト・コンポーネントが2つのフィールド、List PriceおよびCost Price間のマージンを表示するように構成されているEL式の例を示します。

図6-16 計算されたデータを表示するADF出力テキスト・コンポーネント

この図は周囲のテキストで説明しています

始める前に:

ADFコンポーネント内での連結または計算されたデータの表示方法を理解しておくと役立ちます。「コンポーネント内での連結または計算されたデータの表示」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「ADFデスクトップ統合フォーム・タイプ・コンポーネントの追加機能」を参照してください。

計算されたデータを表示するEL式を作成するには

  1. 統合Excelワークブックを開きます。
  2. 計算されたデータを表示する、ADF入力テキストまたはADF出力テキストのコンポーネントを選択します。
  3. プロパティ・インスペクタを開き、Valueプロパティの参照(...)アイコンをクリックします。
  4. 2つ以上の式から出力を取得するEL式を記述します。

    次の例は、2つのフィールド、List PriceとCost Priceの値の差異を計算し、それをCost Price列の値で割ってマージンを生成するEL式を示しています。

    =(("#{row.bindings.ListPrice.inputValue}"-"#{row.bindings.CostPrice.inputValue}")/"#{row.bindings.CostPrice.inputValue}")
    
  5. 「OK」をクリックします。

EL式の詳細は、「ADFデスクトップ統合のEL式」を参照してください。

注意:

ADF入力テキスト・コンポーネントのValueプロパティに式が含まれる場合、ReadOnlyプロパティの値に関係なく、ADF入力テキスト・コンポーネントは実行時に読取り専用となります。

フォーム・コンポーネントおよびマージされたセルの使用

フォーム・コンポーネントやバインディングをマージされたセルに挿入、またはフォーム・コンポーネントやバインディングの挿入後にセルをマージすることはできますが、複数のフォーム・コンポーネントをマージされたセルに挿入、または異なるフォーム・コンポーネントがあるセルをマージすることはできません。

コンポーネントをマージされたセルに挿入する前に、次のことに注意してください。

  • ドラッグ・アンド・ドロップ機能は、コンポーネントのマージされたセルへの挿入ではサポートされません。

  • コンポーネント・セルを、上または左にある空白ではないセルとマージしないでください。2つ以上のセルがマージされる場合、Excelでは最も左上のセルのデータおよびスタイルが保持され、残りのセルのデータは破棄されます。そのため、コンポーネント・セルを、上または左にある空白ではないセルとマージすると、コンポーネント・データが上書きされることになります。

  • 値またはバインディングがない空のコンポーネント・セルを、上または左の空白のセルと、マージしないでください。空のコンポーネント・セルを、上または左にある空白のセルとマージすると、コンポーネント・セルのスタイルが上書きされることになります。