ItemChangedAccept イベント

LANSA

ItemChangedAccept イベント

ItemChangedAcceptイベントは項目が変更されようとすると起動します。

項目が変更されようとする時に、ItemChangedAcceptイベントが起動します。

ItemChangedAcceptイベントにより、プログラムで変えられようとしている変更を受け入れるかどうかを事前に制御することができます。 この処理は、accept(受理)とcommit(実行)という2つの部分に分けることができます。 変更が受け入れられない場合、この変更は行われません。

次のようなケースでこの機能がよく利用されます:

  • ユーザーが無効なデータを入力
  • ItemChangedAcceptイベントが起動
  • プログラムによりメッセージ・ボックスが表示され、入力データが有効かどうかユーザーに確認
  • データが無効の場合、ContinueにFalseが設定され、ユーザーがデータを再入力できるようフォーカスが編集場所に残る

ItemChangedAcceptイベントの典型的な使用例としては、ユーザーがフィールド#EMPNOの編集可能な欄に、000000の値を入力し、その後グリッド内の別のところでクリックして選択を変更します。そうすると、ItemChangedAcceptイベントが起動し、入力された値を受理するかどうかの確認が行われます。 その後の処理は以下の通りです:

  • 値を受理(AcceptパラメータをTrueに設定)
  • 値を受理しない(AcceptパラメータをFalseに設定)
  • 処理を引き続き実行(ContinueパラメータをTrueに設定) クリックされた項目が選択されます。
  • 処理を停止(ContinueパラメータをFalseに設定) クリックされた項目は選択されず、フォーカスは現在の編集場所に残ります。

次のサンプル・アプリケーションはItemChangedAccept処理の使い方を示しています。 このコードをコピーして貼り付けることもできます。 この例を実行するには、デモンストレーション・ファイルPSLMSTが必要です。

Function Options(*DIRECT) 

Begin_Com Role(*EXTENDS #PRIM_FORM) Caption('Accept Processing Example') Formposition(ScreenCenter) Height(434) Left(308) Top(119) Width(568)
* Grid Definition
Define_Com Class(#PRIM_GRID) Name(#LIST) Columnbuttonheight(33) Displayposition(2) Height(241) Left(8) Parent(#COM_OWNER) Showselection(True) Tabposition(2) Top(8) Visualstyle(#VS_NORM) Width(545)
Define_Com Class(#PRIM_GDCL) Name(#COL1) Displayposition(1) Parent(#LIST) Source(#STD_NUM) Width(18)
Define_Com Class(#PRIM_GDCL) Name(#COL2) Displayposition(2) Parent(#LIST) Readonly(False) Source(#EMPNO) Width(20)
Define_Com Class(#PRIM_GDCL) Name(#COL3) Displayposition(3) Parent(#LIST) Readonly(False) Source(#ADDRESS1) Width(34)
Define_Com Class(#PRIM_GDCL) Name(#COL4) Displayposition(4) Parent(#LIST) Readonly(False) Source(#SALARY) Width(28)
* The rest....
Define_Com Class(#PRIM_GPBX) Name(#GPBX_7) Caption('Edit Events') Displayposition(1) Height(118) Left(8) Parent(#COM_OWNER) Tabposition(1) Tabstop(False) Top(264) Width(201)
Define_Com Class(#PRIM_CKBX) Name(#CKBX_ACCEPT) Buttonstate(Checked) Caption('Accept Value') Displayposition(1) Left(16) Parent(#GPBX_7) Tabposition(1) Top(19) Width(161)
Define_Com Class(#STD_NUM) Name(#STD_NUM)
Define_Com Class(#PRIM_CKBX) Name(#CKBX_CONTINUE) Buttonstate(Checked) Caption('Continue') Displayposition(2) Left(16) Parent(#GPBX_7) Tabposition(2) Top(48)
Define_Com Class(#PRIM_VAR) Name(#NEW_VALUE)
Define_Com Class(#PRIM_STBR) Name(#STBR_1) Displayposition(3) Height(24) Left(0) Messageposition(1) Parent(#COM_OWNER) Tabposition(3) Tabstop(False) Top(383) Width(560)
* ===========================================================================================
*
* Form Operations
*
* ===========================================================================================
Evtroutine Handling(#COM_OWNER.Initialize) Options(*NOCLEARMESSAGES *NOCLEARERRORS)
* Populate grid
Select Fields(*ALL) From_File(PSLMST)
Add_Entry To_List(#LIST)
Endselect
Endroutine
* ===========================================================================================
*
* Grid Accept Event Testing
*
* ===========================================================================================
Evtroutine Handling(#LIST.ItemChangedAccept) Accept(#ACCEPT) Continue(#CONTINUE) Value(#NEW)
Set Com(#NEW_VALUE) Value(#NEW)
Use Builtin(BCONCAT) With_Args('Accept value of' #NEW_VALUE.STRING '?') To_Get(#STD_TEXT)
Message Msgid(DCM9993) Msgf(DC@M01) Msgdta(#STD_TEXT)
If Cond('#CKBX_ACCEPT.ButtonState = unChecked')
Set Com(#ACCEPT) Value(false)
Endif
If Cond('#CKBX_CONTINUE.ButtonState = unChecked')
Set Com(#CONTINUE) Value(false)
Endif
Endroutine
End_Com

 

パラメータ

Accept パラメータ

Reason パラメータ

Continue パラメータ

Value パラメータ