Oracle Applications開発者ガイド リリース12 E06048-01 | 目次 | 前へ | 次へ |
この項では、ユーザーが画面で対話する様々なウィジェットの標準的なプロパティについて説明します。さらに、それらのウィジェットを実装するコーディング方法も説明します。
次の内容が含まれています。
ウィジェットのルック・アンド・フィールドの詳細は、『Oracle Applicationsフォーム・ベース製品のユーザー・インタフェース標準』を参照してください。
次の情報は、すべてのテキスト項目に適用されます。
通常、ほとんどのテキスト項目がTEXT_ITEMプロパティ・クラスを使用します。
ユーザーに入力を許可しないフィールドには、TEXT_ITEM_DISPLAY_ONLYプロパティ・クラスを使用します。ただし、スクロールと問合せはサポートする必要があります。日付フィールドの中には、このプロパティ・クラスを使用するものがあります。一番上に表示されていないキャンバスの一部に置かれている表示専用フィールドにユーザーがタブで移動する必要がある場合、プロパティ・クラスを継承して「キーボードで移動可能」プロパティをオーバーライドできます。
複数行テキスト項目には、すべてTEXT_ITEM_MULTILINEプロパティ・クラスを使用します。
表示専用でないかぎりは、日付フィールドにはTEXT_ITEM_DATEを使用します。
WHO日付情報、CREATION_DATEおよびLAST_UPDATE_DATEを含む項目には、CREATION_OR_LAST_UPDATEプロパティ・クラスを適用します。
最大問合せ長を255に設定することにより、複雑な問合せ基準が使用可能になります。
このトリガーは、フィールド値が変化した場合に起動します。また、必須フィールドはレコード・レベルで検証されるまで実行されません。したがって、NULL値を個別に取り扱う論理を記述する必要がある場合があります。
アラビア語など左右両方向に動きのある言語をサポートするために「左詰め」や「右詰め」を使用しないでください(数字のテキスト項目には、「右詰め」を使用できます)。かわりに「開始」と「終了」を使用してください。適切な場合には、「中央揃え」を使用できます。
「右詰め」または「中央揃え」を指定する必要がある場合以外、通常はプロパティ・クラスにより正しく調整されます。
ユーザーが入力する日付フィールドには、カレンダを使用します。
関連項目: カレンダ
日付フィールドには、ユーザーが時間を入力する必要がある場合以外は、DATEデータ型を使用します。ユーザーに時間の入力を求める場合は、DATETIMEを使用します。
フォーム・フィールドを現在の日付(時間はなし)でデフォルト設定するには、$$DBDATE$$を使用します。フォーム・フィールドを現在の日付と時間でデフォルト設定するには、$DBDATETIME$$を使用します。
日付フィールドは、時間を含めない場合は11文字以内、時間を含める場合は20文字以内で作成します。
テキスト項目で書式マスクを指定する必要はありません。Oracle Formsは、環境変数NLS_DATE_FORMATにより、各言語の書式を適切にデフォルト設定します。
Oracle Applicationsでは現在、DD-MON-RRの設定にNLS_DATE_FORMATが必要です。11文字または20文字の日付フィールドでは、年が自動的に4文字(DD-MON-YYYY)で表示されます。
通常、日付フィールドは項目レベルではなく、レコード・レベルで検証します。
レコード・レベルの検証により、特に開始日/終了日を使用する場合、ユーザーはより簡単にエラーを修正できます。日付を間違えて入力した場合でも(翌年ではなく前年を入力した場合など)、ユーザーは開始日を修正する前に終了日を変更する必要がありません。
表示項目は、どのユーザーも入力を行うことはできず、データを表示するだけでカーソルを置くことはできません。
表示項目を使用するのは次の状況です。
NULLキャンバス・フィールド
コンテキスト・フィールド
タイトルまたはプロンプトとして使用されるフィールド
フィールドでカーソルを使用する必要があり、スクロールまたは問合せを行う場合、表示項目ではなくテキスト項目を使用します。
関連項目: テキスト項目
『Oracle Applicationsフォーム・ベース製品のユーザー・インタフェース標準』
項目を動的タイトルの保持に使用する場合、DYNAMIC_TITLEを使用します。項目がプロンプトを保持する場合、DYNAMIC_PROMPTを使用します。これらのプロパティ・クラスを使用すると、背景色は「キャンバス」(灰色)になります。あるいは、DISPLAY_ITEMプロパティ・クラスを使用して、項目を保持する必要があります(バックグラウンドは凹凸なしの白色になります)。
アラビア語など左右両方向に動きのある言語をサポートするために「左詰め」や「右詰め」を使用しないでください。「左詰め」のかわりに「開始」を、「右揃え」のかわりに「終了」を使用します。数字のフィールドにのみ、「右詰め」を使用できます。適切な場合には、「中央揃え」を使用できます。
多くの場合、プロパティ・クラスを正しく適用すると、文字間調整も適切に設定されます。
表示項目の幅(長さ)が、変換された値を切り捨てずに表示するのに十分な大きさであることを、常に確認してください。DYNAMIC_TITLEまたはDYNAMIC_PROMPTを使用する表示項目は、80文字という最大長を継承します(変更できません)。一般に、表示できる値は英語の場合最長で約60文字です(約30%拡大されている場合、80文字分のフィールドを占めます)。
Oracle Applicationsでは、ポップリストは2つの目的に使用されます。1つは利用可能な値のリストでデータを保持することで、もう1つは表示されたリージョンを別のリージョン・セットに設定することです(下位互換のみ)。
ポップリストのルック・アンド・フィールの詳細は、『Oracle Applicationsフォーム・ベース製品のユーザー・インタフェース標準』を参照してください。
データを保持するポップリストは、LISTプロパティ・クラスを使用します。代替リージョンの制御要素の役目を果たすポップリストでは、LIST_REGION_CONTROLプロパティ・クラスが使用されます(下位互換のみ)
リスト要素の最大幅は、30文字です。ポップリストでの英語の最長値は30文字ですが、言語によっては値が拡張されることを見越して、23文字未満にする必要があります。
実行時に、リストを追加する必要が生じる場合があります。その場合、次の点に注意してください。
15より多くの要素を追加する場合、リスト項目は使用しないでください。
レコードごとに作成されたリストを変更しないでください。
追加した各リストに、デフォルト値と一致する値があることを確認してください。ハードコードされた値の場合とは異なり、他のフィールドへの参照としてデフォルトを動的に変更できます。
ポップリストは、常にそのラベルではなく値に基づいて設定します。値は変換されることがありませんが、ラベルは変換される場合があります。「デフォルト値」プロパティの設定時、Oracle Formsはラベル値(たとえばGoodなど)を受け入れますが、常に非表示の値(たとえばGなど)をかわりに使用してください。
オプション・グループのルック・アンド・フィールの詳細は、『Oracle Applicationsフォーム・ベース製品のユーザー・インタフェース標準』を参照してください。
オプション・グループには、RADIO_GROUPプロパティ・クラスを適用します。
オプション・グループの各ボタンには、RADIO_BUTTONプロパティ・クラスを適用します。
(データを保持するのでなく)モードにフォームを追加するオプション・グループには、各ボタンに指定されたアクセス・キーが必要です。
チェック・ボックスのルック・アンド・フィールの詳細は、『Oracle Applicationsフォーム・ベース製品のユーザー・インタフェース標準』を参照してください。
関連項目: マスター詳細関連(ブロック)
標準の各チェック・ボックス(データ入力に使用)には、CHECKBOXプロパティ・クラスを適用します。各調整チェック・ボックスには、CHECKBOX_COORDINATIONプロパティ・クラスを適用します。
関連項目: ウィンドウの動作のコーディング
ボタンには、テキストまたはアイコンを使用できます。つまり、文字または絵で表示されます。
ボタンは、機能するブロックまたはその一部となるブロックの項目になります(制御ブロックは不可)。たとえば、受入れを実行するブロックで、非データベース・オブジェクトとして「受入れ」ボタンを作成します。「行」ボタンを使用してHEADERブロックからLINESブロックまでナビゲートする場合、ボタンがHEADERブロックの一部となるように作成します。
ボタンのルック・アンド・フィールの詳細は、『Oracle Applicationsフォーム・ベース製品のユーザー・インタフェース標準』を参照してください。
テキストのボタンには、BUTTONプロパティ・クラスを使用します。アイコンのボタンには、BUTTON_ICONICプロパティ・クラスを使用し、通常はツールバーまたはフォルダ・フォームにのみ配置します。
警告: BUTTONプロパティ・クラスで指定されている高さを上書きしないでください。
シングル・レコード・ブロックのボタンは「キーボードで移動可能をはいにする」です。マルチ・レコード・ブロックのボタンは「キーボードで移動可能をいいえにする」です。例外は「消去」ボタンで、常に「キーボードで移動可能をいいえにする」を使用します。これは、ユーザーがデフォルト・ボタンを実行する際に、誤ってレコードを消去してしまわないようにするためです。
ボタンはすべて「マウス・ナビゲートをいいえにする」です。
キーボードからアイコン・ボタンは使用できません。フォームが、キーボードのみでデータを入力するよう設計されている場合、追加するアイコン・ボタンの機能は重要でないか、メニューなど他の実行方法が用意されていることを意味します。
ほとんどのボタンは、問合せ入力モードでは使用できません。このモードの間は、ユーザーは現在のレコードから離れることはできません。問合せ入力モードでは、ボタンを明示的に無効にする必要はありません。かわりに、WHEN-BUTTON- PRESSEDトリガーのトリガー・プロパティ「問合せ入力モードで起動」を「No」に設定してください。
ボタンは、そのアクションの前にAPP_STANDARD.APP_VALIDATEをコールし、有効範囲を渡します。これにより、レコードはアクションを実行する前に有効になり、ボタンは適切なブロックで動作することになります。
使用する値が15より多くなる場合、値リストを使用してテキスト項目の検証を行うことができます。
詳細は、『Oracle Applicationsフォーム・ベース製品のユーザー・インタフェース標準』を参照してください。
すべての値リストに、値リスト・プロパティ・クラスを適用します。
ヒント: 「リスト・タイプ」および「自動最新表示」プロパティは、必要に応じてオーバーライドできます。
値リストは、ビューをベースに作成します。これにより、すべての外部キー参照が非正規化され、ビューをベースにブロックを作成するのと同様のパフォーマンスが提供されます。
値リストのビューは、非正規化列をまったく含まないので、大抵の場合フォーム・ビューよりシンプルです。値リストのビューは、外部キー表に結合して、リストやラジオ・グループ値に関連付けられた意味を取得する必要がないのに対して、フォーム・ビューでは意味がボイラープレート・テキストまたはウィジェットにハードコードされています。
ビューは非常にシンプルですが、バインド変数はSELECTリストに含まれていないので、反対にきわめて複雑になる場合があります。その場合、値リストが必要とするすべてのSQLを、フォームに直接コーディングできます。
値リストのタイトルは、値リストの中のオブジェクトの名前であり、複数形になります。
最初の列のプロンプトは、それを起動した項目のプロンプトと関連または一致しています。
各列の幅は、最大値を表示可能な大きさにする必要があります(キャンバスのフィールドの幅と同様)。値リストの幅は、含まれているすべての列を表示できる大きさにします。最大値は、7.8インチです。
デフォルト値は、ラベルではなく必ず値で指定します。これにより、デフォルト値が正しく変換されます。
どの列を値リストに取り込むかは、自由に決定できます。主キー以外のデータのフェッチに多大な時間を要する場合、主キーのみを取り込んで、その名前を表示するだけで済む場合があります。行を選択した後、WHEN-VALIDATE-ITEMトリガーを使用して他の必要な列を取り込むことができます。VARCHAR(2000)列は、値リストに取り込むことができません。
値リストが「検索」ウィンドウにある場合以外、値リストには現在選択可能な行のみが表示されます(「検索」ウィンドウの値リストは、以前に有効であったすべての行を表示します)。
例外: 検証は、次の状況のいずれかが発生した場合に実行できます。
検証の句がSQLに記述できない。
SQLでの評価に、検証句では手間がかかりすぎる。
ユーザーから見て、リストから除外する理由が不透明である。
このようなケースでは、値を選択した後、値がなぜ選択できないかが明確に示されたエラー・メッセージが表示されます。
「ビュー」->「検索」を使用して、行の値リストをコーディングする方法の詳細は、次の関連項目を参照してください。
関連項目: 「問合せ検索」ウィンドウ
項目に値リストがあり、「リストで妥当性チェック」プロパティが「Yes」に設定され、POST-QUERYトリガーのフィールドに値を割り当てた場合、項目は値リストの使用により変更されたとマークされます。このような複雑な状況を避けるには、POST-QUERYトリガーの最後にあるRECORD_STATUSの設定をQUERYに戻します。
値リストのプロパティを変更して、次の動作を作成できます。
値リストにより表示された値が、セッション中は静的で、行数が過大ではない場合、「自動最新表示」をオフ(「No」)にしてセッションの値リストの値をキャッシュします。値のキャッシュにより、続く値リスト実行でのデータベースのヒットおよびネットワークのラウンドトリップを削減でき、不必要なラウンドトリップの削減はWide Area Network上で動作する製品を製造する上では重要な要因となります。ただし、キャッシュを行うとメモリーを消費し、フォームを閉じるまで回復しません。
値リストに100以上の行がある場合、ユーザーはまず有効な値のリストを減らす(「表示前フィルタ」を「Yes」にする)ように要求されます。
1つの値リストにおいて「表示前フィルタ」を「Yes」に設定した上で、「自動最新表示」を「No」にしないでください。この組合せでは、ユーザーが削減条件ウィンドウで入力を行った場合に、行が削減されたセットのみがキャッシュされます。「自動最新表示」がオフの場合、削減前の行のセットに戻ることはできません。通常は、100行を超える行を返す値リストのキャッシュは賢明ではありません。
EMP表には、EMPNO、ENAME、JOB、MGR、HIREDATE、SAL、COMMおよびDEPTNOといった列が含まれています。DEPTNOは表DEPTへの外部キーで、列DEPTNO、DNAMEおよびLOCを含んでいます。
同様に、EMP表のフォーム・ビューにはEMPの列がすべて含まれており、EMP.DEPTNOは非正規化され、列DEPT.DNAMEは含まれています。さらに、DEPT.LOCATIONと他のDEPT列が含まれ、過去および現在の全従業員のレコードも含まれる場合があります。
CREATE VIEW EMP_V AS
SELECT EMP.EMPNO, EMP.ENAME, EMP.JOB, EMP.MGR,
EMP.HIREDATE, EMP.SAL, EMP.COMM,
EMP.DEPTNO, DEPT.DNAME, DEPT.LOCATION
FROM EMP, DEPT
WHERE DEPT.DEPTNO = EMP.DEPTNO;
反対に、EMPのLOVビューには列EMP.EMPNOおよびEMP.ENAMEのみが含まれます。DEPT情報は、従業員の選択に補助的な情報が必要な場合にのみ含まれます。
Y/N値では、「*」には「Y」を、NULLには「N」をデコードして、FND_LOOKUPSへの結合を回避します。
例
表Tに、列ID、NAMEおよびENABLED_FLAGがあるとします。ENABLED_FLAGはY/N値を含んでいます。ビューを次のように作成します。
CREATE VIEW T_V AS
SELECT ID, NAME,
DECODE(ENABLED_FLAG, 'Y', '*', NULL)
FROM T;
従属フィールドの値リストは、マスター・フィールドの値を使用してリストを削減します。
たとえば、NAMEがTYPEに従属している場合、NAMEのWHERE句のエントリ値リストには次の条件が含まれます。
WHERE TYPE = :MY_BLOCK.TYPE
ユーザーがレコードの場所を特定するには問合せ検索の方が好まれるため、問合せ入力モードの値リストは補助的に使用されます。
これらを使用すると問合せ入力モードの使い勝手が劇的に向上する場合や、問合せ検索ではなくこのモードを主に使用する場合にのみコーディングを行います。
問合せ入力モードの値リストでは、現在有効な値だけではなく、ユーザーが問合せ可能な値がすべて表示されます。
例: 問合せ入力モードの発注フォームにおける仕入先の値リストには、発注に現在記帳可能なベンダーだけではなく、これまで発注に記帳されたすべての仕入先が表示されます。
両方のモードの正確なデータ・セットが表示される場合以外は、問合せ入力モードの値リストを再使用しないでください。
重要: WHEN-VALIDATE-ITEMは、問合せ入力モードでは使用できません。したがって、表示されていないフィールドを問合せ入力モードの値リストから選択したときに、WHEN-VALIDATE-ITEMトリガーを使用して消去はできません。
関連項目: 「問合せ検索」ウィンドウ
項目上で問合せ入力モードの値リストを有効にするには、項目レベルのKEY-LISTVALトリガーを次のように作成します。
Trigger: KEY-LISTVAL
IF (:SYSTEM.MODE != 'ENTER-QUERY') THEN LIST_VALUES;
ELSE SHOW_LOV('query lov');
END IF;
問合せ検索モードの値リストを実装している場合、値リストが起動したフィールド以外のどのフィールドに対しても値を戻さないでください。値リストに非表示のフィールドが含まれている場合でも、非表示のフィールドは消去できません。表示されているフィールドを消去または型指定しても、非表示のフィールドは消去されません。ユーザーは、値リストから他の値を選択するか、問合せを取り消してやり直す必要があります。
Oracle Applicationsでは、Oracle Forms固有の警告オブジェクトは使用されません。かわりに、Oracle Application Object Library Message Dictionary機能が使用されます。これにより、完全な変換機能が提供され、80文字より多くのテキストを処理できます。
関連項目: PL/SQLプロシージャのメッセージ・ディクショナリAPI
エディタのために特別なコードは作成しません。Oracle Forms固有の動作に従ってください。
付加フレックスフィールドの外観の標準についての詳細は、『Oracle Applicationsフォーム・ベース製品のユーザー・インタフェース標準』を参照してください。
フレックスフィールドのフォームへの組込みの詳細は、「フレックスフィールドの概要」を参照してください。
すべてのエンティティで付加フレックスフィールドを提供し、カスタマイズ可能にする必要があります。
複数のフォームで、同じ付加フレックスフィールドの定義を使用しないでください。そのようなフレックスフィールドでは、顧客はすべてのフィールドを参照でき、あるフォームには存在するが他のフォームには存在しないフィールドを参照してしまう場合があるからです。
キー・フレックスフィールドは、「ENABLE_LIST_LAMP」値リストを使用し、「リストで妥当性チェック」プロパティは「No」に設定されます。付加フレックスフィールドは値リストを使用しません。
この項では、Oracle Applicationsが特定の状態のときにユーザーによる項目の設定方法を制御する、項目プロパティについて説明します。Oracle Applicationsは、Oracle Formsのビルトイン・ルーチンSET_ITEM_PROPERTYに、カバー・ルーチンを提供します。このカバー・ルーチンAPP_ITEM_PROPERTY.SET_PROPERTYにより、特定のプロパティによるOracle Forms固有の動作を調整または補強できます。
APP_ITEM_PROPERTY.SET_PROPERTYを使用すると、フォームをOracle Applicationsのユーザー・インタフェースの標準に従って作成でき、コーディングを簡略化できます。さらに、このルーチンを使用すると、Oracle Forms固有のビルトイン・ルーチンSET_ITEM_PROPERTYが変更された際に、フォームを保護できます。
APP_ITEM_PROPERTY.SET_PROPERTYカバー・ルーチンにより、次のプロパティを変更できます。
ALTERABLE
ALTERABLE_PLUS
ENTERABLE
DISPLAYED
ENABLED
REQUIRED
他のすべてのプロパティは、Oracle Forms固有の機能により処理されます。将来変更が加えられた場合に備え、現在特別な動作をしていないプロパティについてもこのカバー・ルーチンをコールすることをお薦めします。
APP_ITEM_PROPERTY.SET_PROPERTYをコールし、示された項目には有効でないプロパティを指定すると、Oracle Forms固有のビルトイン・ルーチンSET_ITEM_PROPERTYと同じエラーが発生する点に注意してください。ただし、次にあげるように特定の条件が隠ぺいされている場合は例外です。
ALTERABLEプロパティは、レコードが新規または問合せによるものであるかどうかに関係なく、項目の特定のインスタンス(1行)への変更を許可または禁止するのに使用します。変更が許可されていない場合でも、項目をキーボードにより操作できます。
次のコードを使用します。
app_item_property.set_property(itemid, ALTERABLE,
PROPERTY_ON);
これは次のコードと同等です。
set_item_instance_property(itemid, CURRENT_RECORD,
INSERT_ALLOWED, PROPERTY_ON);
set_item_instance_property(itemid, CURRENT_RECORD,
UPDATEABLE, PROPERTY_ON);
set_item_property(itemid, INSERT_ALLOWED, PROPERTY_ON);
set_item_property(itemid, UPDATEABLE, PROPERTY_ON);
項目が表示されていない場合、アクションは生じません。
項目値および項目インスタンス値は、どちらもその効果により、必要な結果を確実に生成するよう設定されています。
次のコードを使用します。
app_item_property.set_property(itemid, ALTERABLE,
PROPERTY_OFF);
これは次のコードと同等です。
set_item_instance_property(itemid, CURRENT_RECORD,
INSERT_ALLOWED, PROPERTY_OFF);
set_item_instance_property(itemid, CURRENT_RECORD,
UPDATEABLE, PROPERTY_OFF);
項目が表示されていない場合、アクションは生じません。
ALTERABLE_PLUSプロパティは、項目のすべてのインスタンス(ブロックのすべての行)への変更を許可または禁止するのに使用します。プロパティにPROPERTY_OFFを設定すると、各レコードが新規または問合せによるものであるかどうかに関係なく、すべての行にある項目にユーザーが変更を加えるのを防止できます。変更が許可されていない場合でも、項目をキーボードにより操作できます。
次のコードを使用します。
app_item_property.set_property(itemid, ALTERABLE_PLUS,
PROPERTY_ON);
これは次のコードと同等です。
set_item_property(itemid, INSERT_ALLOWED, PROPERTY_ON);
set_item_property(itemid, UPDATEABLE, PROPERTY_ON);
項目が表示されていない場合、アクションは生じません。
次のコードを使用します。
app_item_property.set_property(itemid, ALTERABLE_PLUS,
PROPERTY_OFF);
これは次のコードと同等です。
set_item_property(itemid, INSERT_ALLOWED, PROPERTY_OFF);
set_item_property(itemid, UPDATEABLE, PROPERTY_OFF);
項目が表示されていない場合、アクションは生じません。
ENTERABLEプロパティは、項目の特定のインスタンス(1行)の無効化をシミュレートするのに使用します。さらに、NAVIGABLEプロパティを使用することにより、ALTERABLEプロパティの機能を拡張することもできますが、ユーザーが項目をクリックすることを防ぐことはできません。
次のコードを使用します。
app_item_property.set_property(itemid, ENTERABLE,
PROPERTY_ON);
これは次のコードと同等です。
set_item_instance_property(itemid, CURRENT_RECORD,
INSERT_ALLOWED, PROPERTY_ON);
set_item_instance_property(itemid, CURRENT_RECORD,
UPDATEABLE, PROPERTY_ON);
set_item_instance_property(itemid, CURRENT_RECORD,
NAVIGABLE, PROPERTY_ON);
set_item_property(itemid, INSERT_ALLOWED, PROPERTY_ON);
set_item_property(itemid, UPDATEABLE, PROPERTY_ON);
set_item_property(itemid, NAVIGABLE, PROPERTY_ON);
項目が表示されていない場合、アクションは生じません。
項目値および項目インスタンス値は、どちらもその効果により、必要な結果を確実に生成するよう設定されています。
次のコードを使用します。
app_item_property.set_property(itemid, ENTERABLE,
PROPERTY_OFF);
これは次のコードと同等です。
set_item_instance_property(itemid, CURRENT_RECORD,
INSERT_ALLOWED, PROPERTY_OFF);
set_item_instance_property(itemid, CURRENT_RECORD,
UPDATEABLE, PROPERTY_OFF);
set_item_instance_property(itemid, CURRENT_RECORD,
NAVIGABLE, PROPERTY_Off);
項目が表示されていない場合、アクションは生じません。
DISPLAYEDプロパティは、項目の表示および非表示の設定や、項目が非表示の場合にOracle Formsが自動的に設定するプロパティのリセットに使用します。
次のコードを使用します。
app_item_property.set_property(itemid, DISPLAYED,
PROPERTY_ON);
これは次のコードと同等です。
set_item_property(itemid, DISPLAYED, PROPERTY_ON);
項目が表示されていない場合、次のように設定することもできます。
set_item_property(itemid, ENABLED, PROPERTY_ON);
set_item_property(itemid, NAVIGABLE, PROPERTY_ON);
項目とボタンが両方とも表示されていない場合、次のように設定することもできます。
set_item_property(itemid, QUERYABLE, PROPERTY_ON);
set_item_property(itemid, INSERT_ALLOWED, PROPERTY_ON);
set_item_property(itemid, UPDATEABLE, PROPERTY_ON);
次のコードを使用します。
app_item_property.set_property(itemid, DISPLAYED,
PROPERTY_OFF);
これは次のコードと同等です。
set_item_property(itemid, DISPLAYED, PROPERTY_OFF);
ENABLEDプロパティは、主にフォームの全セッションの間に適用されない項目を無効化するのに使用します。これは、項目が再び有効になり、Oracle Formsが自動的に設定するプロパティがリセットされたときの、Oracle Forms固有の動作とは異なります。
次のコードを使用します。
app_item_property.set_property(itemid, ENABLED,
PROPERTY_ON);
これは次のコードと同等です(テキスト項目またはリスト項目にのみ使用可)。
set_item_property(itemid, INSERT_ALLOWED, PROPERTY_ON);
set_item_property(itemid, UPDATEABLE, PROPERTY_ON);
set_item_property(itemid, NAVIGABLE, PROPERTY_ON);
項目がボタンである場合、APP_ITEM_PROPERTY.SET_PROPERTYコールは次のコードと同等です。
set_item_property(itemid, ENABLED, PROPERTY_ON);
項目がテキスト項目、リスト、ボタンではない場合、APP_ITEM_PROPERTY.SET_PROPERTYコールは次のコードと同等です。
set_item_property(itemid, ENABLED, PROPERTY_ON);
set_item_property(itemid, INSERT_ALLOWED, PROPERTY_ON);
set_item_property(itemid, UPDATEABLE, PROPERTY_ON);
項目が表示項目であるか、現在表示されていない場合、アクションは生じません。
次のコードを使用します。
app_item_property.set_property(itemid, ENABLED,
PROPERTY_OFF);
これは次のコードと同等です(テキスト項目またはリスト項目にのみ使用可)。
set_item_property(itemid, INSERT_ALLOWED, PROPERTY_OFF);
set_item_property(itemid, UPDATEABLE, PROPERTY_OFF);
set_item_property(itemid, NAVIGABLE, PROPERTY_OFF);
項目がテキスト項目でもリストでもない場合、次のように設定することもできます。
set_item_property(itemid, ENABLED, PROPERTY_OFF);
項目が表示項目であるか、現在表示されていない場合、アクションは生じません。
REQUIREDプロパティは、フィールドを隠すかどうかを調整する際に、項目が必須であるかどうかの設定に使用します。REQUIREDプロパティは、項目レベルのプロパティです(ブロックのすべての行に影響します)。REQUIREDプロパティが必ずレコード単位で変更される場合、カーソルが行を移動するときにプロパティをリセットする必要があります(通常、WHEN-NEW-RECORD-INSTANCEトリガーにより行います)。あるいは、Oracle Forms固有のビルトイン・ルーチンSET_ITEM_INSTANCE_PROPERTYをコールして、行単位でREQUIREDプロパティを設定することもできます。Oracle Applicationsは、現在のところSET_ITEM_INSTANCE_PROPERTYのカバー・ルーチンは提供していません。
次のコードを使用します。
app_item_property.set_property(itemid, REQUIRED,
PROPERTY_ON);
これは次のコードと同等です。
set_item_property(itemid, REQUIRED, PROPERTY_ON);
項目が表示されていない場合、アクションは生じません。
次のコードを使用します。
app_item_property.set_property(itemid, REQUIRED,
PROPERTY_OFF);
これは次のコードと同等です。
set_item_property(itemid, REQUIRED, PROPERTY_OFF);
Oracle Formsは、項目レベル(すべてのレコード)および項目インスタンス・レベル(特定の行のみ)の両方において、INSERT_ALLOWED、UPDATEABLEおよびNAVIGABLEなどのプロパティの設定をサポートします。これら2つのレベルには優先順位があり、実際にユーザーに及ぼす影響が決まります。つまり、項目レベルでの設定がOFFで、項目インスタンス・レベルではONの場合、実際にはOFFになります。このため、複数のレベルに関係するプロパティを設定する場合は注意が必要です。たとえば、同じウィジェットでALTERABLEコールとENABLEDコールを同時に使用すると、正しい結果とならない場合があります。
Form Builderで作業する際は、ENABLEDプロパティをテキスト項目またはリスト項目において「No」に設定すると、APP_ITEM_PROPERTY.SET_PROPERTYにより設定するランタイムと自動的には同じ動作にはならない点に注意してください。むしろ、項目の「挿入許可」、「更新許可」および「キーボードで移動可能」プロパティを「No」に設定し、ENABLEDプロパティを「Yes」のままにする必要があります。
ALTERABLEおよびENTERABLEなどの動作は、プログラムのみにより設定される項目インスタンス・プロパティに依存しているため、実行時のみ行われます。
プロパティ・クラスの一部として適用される、またはAPPCOREルーチンにより自動的に適用される大部分のOracle Applicationsの視覚属性とは異なり、開発者は次の視覚属性をプログラムにより適用する必要があります。
DATA_DRILLDOWN視覚属性は、下線付きで緑色に表示されるテキスト項目のコンテンツを作成します。プログラムにより適用すると、この視覚属性を使用して、「ドリルダウン」を行うハイパー・テキストをシミュレートできます。これは、テキストの外観のみを変更するもので、リンクの内容を実行するものではありません。
DATA_SPECIALは、ビジネス・ルールに違反する、またはユーザーの細かな注意が必要な値を含んでいるため、特に強調するフィールドを白地の赤色に変更するために使用します。たとえば、金融関係のフォームにおけるマイナスの値は、白地の赤色にする場合があります。通常、この視覚属性は実行時にのみ適用されます。
警告: 色のコーディングを行うと、モノクロの色環境よりもインディケータの機能が強化されることになります。
Oracle Applicationsでは、DATA_REQUIRED視覚属性は使用しません。