Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

このステップでは、リスト・ビューに値を入れるコードを追加していきます。

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

  2. #myscreen

[ Image Removed |../../index.htm#lansa/lansa050fp_0255.htm]
現在地: RAMP-TSガイド > RAMP VLF-WIN のチュートリアル > 上級 RAMP Womdows チュートリアル > RAMP-WINAD09 ステップ 3. リスト・ビューに値を入れるコードを追加する

...

  1. _wrapper.RampTSAvailable イベント・ルーチンを見つけて、以下のコードを追加し、画面が到着したときに画面ラッパーのフィールドとサブファイルをクリアします。
    Clr_List Named(#skills)
    #XG_HEAD := *null

...


  1. コードは次のようになるはずです。

...

  1. Image Added

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

...



  1. Define_Map For(*result) Class(#prim_boln) Name(#NextPage)
    Define Field(#MoreVal) Type(*char) Length(1)

...


  1. #listcount := 1
    #NextPage := false

...


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

...


  1. #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)

...


  1. * You can put some tracing
    #com_owner.avframeworkmanager.avRecordTrace Component(#com_owner) Event("Adding entry = " + #vf_eltxts + ", " + #skilcode + ", " + #skildesc + ", " + #grade)

...



  1. Add_Entry To_List(#skills)

...



  1. #listcount += 1

...


  1. Endwhile

...


  1. * 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.

...



  1. #listcount -= 1

...


  1. If (#myscreen_wrapper.check_field_exists( "moreindicator" #listcount ))
    #myscreen_wrapper.getvalue From("moreindicator") Value(#MoreVal) Index(#listcount)
    #NextPage := (#MoreVal.trim *NE "")
    Endif

...


  1. Endroutine

...


  1. このコードは、まずDATEACQフィールドに対応する最初の列が存在するかどうかをチェックして、資格サブファイルを解析します。画面に存在する場合、このルーチンはすべてのサブファイル列の値を取得します。
    RAMP-TS サブファイルのフィールドには 1 から始まるインデックスが付いています。7 行のサブファイル・ページ.には、サブファイルの各フィールドに 7 つのインスタンスが存在します。ここでは、#listcount を増加させ、これを使ってフィールドの値を取得します。
    getvalue メソッドを使用する際、デフォルト値を指定できることに注意してください。

...

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

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

...


  1. 資格サブファイルにさらにレコードがあるかどうかを確認するためにラッパーが使用するブール値クラス #MoreRecords を定義します。
    Define_Com Class(#prim_boln) Name(#MoreRecords)

...



  1. 次に、以下のコードを追加して、uGetSubfilePage メソッドで返される値をチェックし、さらにレコードがある場合は、次のサブファイル・ページに進むための PageDown キーを送信します。
     
    #MoreRecords := #com_owner.uGetSubfilePage
    If (#MoreRecords)
    if (#previousscreen = 'DisplayEmployee')
    #myscreen_wrapper.sendkey Key(#myscreen_wrapper.KeyPageDown)

...


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

    コードは次のようになるはずです。

...


  1. Image Added

...


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

...


  1. フレームワークを起動し、社員の詳細ラッパー・コマンド・ハンドラーを表示します。

    Image Added