よくある質問(カスタム・プロパティ)
カスタム・プロパティのリストをプログラム的に扱うにはどうすればよいですか。
すべてのカスタム・プロパティには「.Count」という特殊なプロパティが関連付けられています。
このプロパティにより現時点で存在するカスタム・プロパティの数がわかります。
例えば、STATESというフレームワーク・レベルのカスタム・プロパティを指定したとします。ここで管理者は固定リストから1つ以上の州を選択できます。
現在のユーザーにいくつの州を選択するか決定するには、以下のようにします。
Invoke Method(#avFrameworkManager.avGetUserProperty) Atlevel(F)
Withname(STATES.Count) Numericvalue(#Tot_State)
#Tot_Stateには州のリスト中の現在のエントリー数が含まれています。
リストから州の値を取得したい場合は、以下のようにコーディングします。
Begin_Loop To(#Tot_sTate) Using(#Index)
Invoke Method(#avFrameworkManager.avGetUserProperty) Atlevel(F)
Withname(STATES) Instance(#Index) AlphaValue(#State_Code)
Add_Entry << possibly some user visible list >>
End_Loop
.COUNTの値はなぜリスト・タイプごとに異なるのですか。
プログラムに返される.COUNTの値は、指定するカスタム・プロパティのタイプとインプット・メソッドによって異なります。
タイプ |
入力方法 |
.COUNTの値/コメント |
All |
単独値 |
常に1 |
英数字、数値 |
値のリスト |
常にリストのエントリー数の最大を返します。プログラム側で返された値に応じて"null"のエントリーを排除する必要があります(例:使用しているアプリケーションではブランクやゼロが"null"の入力とみなされる可能性があります)。 |
Boolean |
値のリスト |
有効なカスタム・プロパティ定義ではありません。このタイプのカスタム・プロパティは定義できません。 |
英数字、数値 |
固定リストから選択 |
管理者が実際に選択した(またはデフォルトの)エントリーの数。デフォルトの振る舞いは、設計者が指定したデフォルトの固定リストの最初のエントリーを選択します。 |
Boolean |
固定リストから選択 |
常に固定リストのエントリー数の最大。次の質問も参照してください。 |
Boolean固定リストとは何ですか。
Boolean固定リストは複数のBoolean値を1つのカスタム・プロパティに整理統合します。通常、これは複数の独立Boolean値をコーディングするよりも簡単でなおかつ効率的で、オプションも一緒に保持できます。
例えば、以下のカスタム・プロパティを保存する必要があるとします。
ユーザーはジャンプできる
ユーザーはホップできる
ユーザーはスキップできる
ユーザーは走ることができる
これは4つの独立した(例:JUMP、HOP、SKIPおよびRUNという名の)Boolean値のプロパティで実現できます。これは管理者に、以下のように表示されます。
これらのプロパティをプログラム的に呼び出すには、以下のようにします。
Invoke Method(#avFrameworkManager.avGetUserProperty) Atlevel(F)
Withname(JUMP) BooleanValue(#CAN_Jump)
Invoke Method(#avFrameworkManager.avGetUserProperty) Atlevel(F)
Withname(HOP) BooleanValue(#CAN_Hop)
Invoke Method(#avFrameworkManager.avGetUserProperty) Atlevel(F)
Withname(SKIP) BooleanValue(#CAN_Skip)
Invoke Method(#avFrameworkManager.avGetUserProperty) Atlevel(F)
Withname(RUN) BooleanValue(#CAN_Run)
これはまた、4つのエントリーを持つ(例:ACTIONSという名の)Boolean固定リストでも行えます。これは管理者に、以下のように表示されます。
この場合、リストの各エントリーはユーザーの状態を表示し、プログラム的に以下のようにアクセスされます。
Invoke Method(#avFrameworkManager.avGetUserProperty) Atlevel(F)
Withname(ACTIONS) Instance(1) BooleanValue(#CAN_Jump)
Invoke Method(#avFrameworkManager.avGetUserProperty) Atlevel(F)
Withname(ACTIONS) Instance(2) BooleanValue(#CAN_Hop)
Invoke Method(#avFrameworkManager.avGetUserProperty) Atlevel(F)
Withname(ACTIONS) Instance(3) BooleanValue(#CAN_Skip)
Invoke Method(#avFrameworkManager.avGetUserProperty) Atlevel(F)
Withname(ACTIONS) Instance(4) BooleanValue(#CAN_Run)
複数言語システムとはなんですか。
カスタム・プロパティ・キャプション、ヘルプ・テキストおよび固定リストのユーザーに見えるキャプションはすべて複数言語に対応しています。管理者に見えるカスタム・プロパティのすべての局面を、標準のフレームワーク翻訳手順により正しい言語で表示できなければなりません。
フレームワークのプロパティ名が固有ではないのはなぜですか。
主に、2つの理由があります。
· これによりPRINTERNAMEのようなプロパティをHuman ResourcesアプリケーションとGeneral Ledgerアプリケーションの両方で定義でき、それぞれのアプリケーションに別に指定した値を持たせることができます。
· プロパティの検索リストを作成できます。例えば、PRINTERNAMEというプロパティをビジネス・オブジェクト・レベルで検索することができます。もし見つからなかった場合はアプリケーション・レベルで検索します。それでも見つからなかった場合は、最後にフレームワーク・レベルで検索します。
カスタム・プロパティに予想していた値が存在しません。
まず確認しなければならないことは、以下のとおりです。
· カスタム・プロパティにデフォルトの値が入っている
· プロパティを定義または変更した後、フレームワークを保存し再起動した
· エンド・ユーザー(つまり、UF_EXECまたはそれに相当するもの)としてサイン・オンした
· レベルA(アプリケーション)のプロパティをコマンド・ハンドラーが参照しているが、現在のアプリケーションが選択されていない
· レベルB(ビジネス・オブジェクト)のプロパティをコマンド・ハンドラーが参照しているが、現在のビジネス・オブジェクトが選択されていない