RAMP-TSAD09 ステップ3. リスト・ビューの値を設定するコードの追加

LANSA RAMP-TS

RAMP-TSAD09 ステップ3. リスト・ビューの値を設定するコードの追加


このステップでは、リスト・ビューの値を設定するコードを追加します。

1.    画面ラッパーのソース・コードを表示します。

2.    #myscreen_wrapper.RampTSAvailableイベント・ルーチンを見つけて、このコードを追加し、画面が到着したときに画面ラッパーのフィールドとサブファイルをクリアします。

Clr_List Named(#skills)

#XG_HEAD := *null

 

コードは、以下のようになります。

 

3.    画面ラッパー・ソースの最後に以下のメソッド・ルーチンを追加します。

Mthroutine Name(uGetSubfilePage)

 

Define_Map For(*result) Class(#prim_boln) Name(#NextPage)

Define Field(#MoreVal) Type(*char) Length(1)

 

#listcount := 1

#NextPage := false

 

Dowhile (#myscreen_wrapper.check_field_exists( "dateacq" #listcount ))

 

#myscreen_wrapper.getvalue From("dateacq") Value(#vf_eltxts) Defaultvalue(#ddmmyy) Index(#listcount)

#myscreen_wrapper.getvalue From("skillcode") Value(#skilcode) Index(#listcount)

#myscreen_wrapper.getvalue From("skilldesc") Value(#skildesc) Index(#listcount) Defaultvalue("Defalt value")

#myscreen_wrapper.getvalue From("comment") Value(#comment) Index(#listcount)

#myscreen_wrapper.getvalue From("grade") Value(#grade) Index(#listcount)

 

* You can put some tracing

#com_owner.avframeworkmanager.avRecordTrace Component(#com_owner) Event("Adding entry = " + #vf_eltxts + ", " + #skilcode + ", " + #skildesc + ", " + #grade)

 

Add_Entry To_List(#skills)

 

#listcount += 1

 

Endwhile

 

* when identifying this screen we set the name of the "+" sign = "moreindicator". The presence of that field in the last row of the subfile tells us whether there is another page. The last row is one less than the current value of #listcount.

 

#listcount -= 1

 

If (#myscreen_wrapper.check_field_exists( "moreindicator" #listcount ))

#myscreen_wrapper.getvalue From("moreindicator") Value(#MoreVal) Index(#listcount)

#NextPage := (#MoreVal.trim *NE "")

Endif

 

Endroutine

このコードは、まずDATEACQフィールドに対応する最初の列が存在するかどうかをチェックして、資格サブファイルを解析します。画面に存在する場合、このルーチンはすべてのサブファイル列の値を取得します。

RAMP-TSサブファイルのフィールドには、1から始まるインデックスが付けられます。7つの行を含むサブファイル・ページは、サブファイルの各フィールドに7つのインスタンスを含みます。ここでは、#listcountを増やして使用し、フィールドの値を取得します。

getvalueメソッドを使用するときは、デフォルト値を指定できることに注意してください。

moreindicatorは、画面のプラス記号に付けた名前です。

 

4.    ここで、#myscreen_wrapper.vHandleArriveイベント・ルーチンを見つけます。

5.    資格サブファイルにさらにレコードがあるかどうかを確認するラッパーで使用される、ブール型クラス#MoreRecordsを定義します。

 

Define_Com Class(#prim_boln) Name(#MoreRecords)

 

  

6.    次に、このコードを追加して、uGetSubfilePageメソッドで返される値をチェックし、さらにレコードがある場合は、次のサブファイル・ページを取得するPageDownキーを送信します。

#MoreRecords := #com_owner.uGetSubfilePage

If (#MoreRecords)

if (#previousscreen = 'DisplayEmployee')

#myscreen_wrapper.sendkey Key(#myscreen_wrapper.KeyPageDown)

 

(以前の画面のチェックにより、画面ラッパーの処理が遅くなります。このため、高速なマシン上でSENDKEY要求を繰り返し実行すると、これらの要求は適切に待ち行列に入れられます。)

コードは、以下のようになります。


 

7.    画面ラッパーをコンパイルします。

8.    フレームワークを起動し、従業員の[Details Wrapper]コマンド・ハンドラーを表示します。