UB_xxxxxユーザー・ボタン

Visual LANSA

UB_xxxxxユーザー・ボタン


フレームワークにはUB_xxxxxというフィールドとウェブレットのセットが組み込まれています。そこにはWAMベースのフィルターやコマンド・ハンドラーで使用できるウェブレットが集まっています。

各UB_xxxxxフィールドにそれぞれのUB_xxxxxウェブレットがあります。

さらに、各UB_xxxxxフィールドには対応するウェブレットのビジュアライゼーション属性が組み込まれています。

UB_xxxxxウェブレット内のコードがフォーム上にUB_xxxxxボタンを描きます。

使用方法

フィルターやコマンド・ハンドラーにボタンを配置し、そのボタンを使用して、例えば保存のような機能を起動します。一般的に良く使われるボタン・ウェブレット、例えばOK、保存、削除などのボタンは用意されています。スペアのボタンは詳細情報の表示や計算など独自の用途にフォーマットします。

キャプションの変更方法

特定の機能にまだ割り当てられていないボタンは好きなキャプションを表示することができます。これを簡単に実現するには、フィールド定義をオーバーライドします。

OVERRIDE FIELD(#UB_PUSHB1) DEFAULT('''Show Details''')

 

またアプリケーションが複数言語対応なら、他言語のテキストが使用できます。

OVERRIDE FIELD(#UB_PUSHB1) DEFAULT(*MTXTDF_SHOWDETAILS)

 

ボタンをWebフォームに配置する方法

Webフォームにユーザー・ボタンを配置するには、それをフィルターやコマンド・ハンドラーのWeb_Map For(*both)ステートメントに入れます。

一度UB_xxxxxフィールドをWeb_Mapで使用すると、WAMにXSLを生成するよう選択できます。このような場合、フィールドはページのどこかにボタンとして表示されます。

しかし、通常フォームのエレメントがすべて表示されている上に、さらにコントロールを描きたくなる場合があります。このような場合、UB_xxxxxウェブレットをドラッグし、フォーム上の描きたい位置にドロップするだけで描けます。

 

ボタンのタブの順序の制御

avSetButtonメソッドのTabIndexプロパティを使用します。

例えば以下のようになります。

Invoke Method(#ThisHandler.avSetButton) ButtonName(UB_SAVE) TabIndex(‘1’)

Invoke Method(#ThisHandler.avSetButton) ButtonName(UB_SAVE) TabIndex(‘2’)

 

ユーザー・ボタンの表示/非表示

ユーザー・ボタンはWebフォームに追加でき、意味を持たない時は非表示または無効になります。

ボタンを非表示または無効にするにはコマンド・ハンドラーやフィルターのavSetButtonメソッドをキーワードVisibleEnabledと共に使用します。例えば、保存ボタンを非表示にするには、コマンド・ハンドラーで以下のように定義します。

Define_Com Class(#vf_aw010) Name(#ThisHandler) Reference(*Dynamic)

 

以下を実行します。

Invoke Method(#ThisHandler.avSetButton) Buttonname(UB_SAVE) Visible(FALSE)

 

無効にする方法

Invoke Method(#ThisHandler.avSetButton) Buttonname(UB_SAVE) Enabled(FALSE)

 

ボタンが押されたことを感知する方法

WamイベントをuHandleEventWebルーチンに登録する必要があります。ここでキーワードNamedは通常、以下のフォーマットになっています。

<field name>.CLICK

例えば、保存ボタンをクリックすると起動するWamイベントを登録するには、以下のようにします。

#avFrameworkManager.avRegisterEvent Named(UB_SAVE.CLICK) Signalaswamevent(n)

 

イベント・ルーチンにそのイベントの処理を要求します。

Evtroutine Handling(#avFrameworkManager.uWAMEvent_n) Options(*noclearmessages *noclearerrors)

 

ユーザー・ボタンを使う簡単なWAMコマンド・ハンドラーの例

Begin_Com Role(*EXTENDS #PRIM_WAM) Layoutweblet('vlf_layout')

Define_Com Class(#vf_sw100) Name(#avFrameworkManager)
Define_Com Class(#vf_aw010) Name(#ThisHandler) Reference(*Dynamic)
Define_Com Class(#vf_lw002) Name(#avListManager) Reference(*Dynamic)
Define_Com Class(#fp_in001) Name(#FastPart) Reference(*Dynamic)

* VL Framework map fields. DO NOT CHANGE.

Web_Map For(*both) Fields((#VF_FRAMEI *private) (#VF_FRAMEW *private) (#VF_FRAMES *private) (#VF_ELXTOF *private) (#VF_ELXN01 *private) (#VF_ELXN02 *private) (#VF_ELXN03 *private) (#VF_ELXN04 *private) (#VF_ELXN05 *private) (#VF_ELXN06 *private) (#VF_ELXN07 *private) (#VF_ELXN08 *private) (#VF_ELXN09 *private) (#VF_ELXN10 *private) (#VF_ELXA01 *private) (#VF_ELXA02 *private) (#VF_ELXA03 *private) (#VF_ELXA04 *private) (#VF_ELXA05 *private) (#VF_ELXA06 *private) (#VF_ELXA07 *private) (#VF_ELXA08 *private) (#VF_ELXA09 *private) (#VF_ELXA10 *PRIVATE) (#VF_ELMETA *PRIVATE))

* Map fields used in this form.
Web_Map For(*both) Fields((#empno *ouput) #surname #givename #salary (#UB_SAVE *noid))

Webroutine Name(UHandleEvent)

* Register the event that will execute when clicking on the Save button in this filter as wam event number 1.

Invoke Method(#avFrameworkManager.avRegisterEvent) Named(UB_SAVE.CLICK) Signalaswamevent(1)

* Standard WAM initialisation.

Invoke Method(#avFrameworkManager.avInitializeWAM) Type(COMMAND) Invoker(#com_owner) Listmanager(#avListManager) Handlermanager(#ThisHandler) Fastpartmanager(#FastPart)
Invoke Method(#avFrameworkManager.avHandleWAMEvent) Anchorblock(#vf_framew) Event(#vf_event) Designmode(#vf_framed) Skin(#VF_Frames) Metatag(#vf_elmeta) Tof(#vf_elxtof) N01(#vf_elxn01) N02(#vf_elxn02) N03(#vf_elxn03) N04(#vf_elxn04) N05(#vf_elxn05) N06(#vf_elxn06) N07(#vf_elxn07) N08(#vf_elxn08) N09(#vf_elxn09) N10(#vf_elxn10) A01(#vf_elxA01) A02(#vf_elxA02) A03(#vf_elxA03) A04(#vf_elxA04) A05(#vf_elxA05) A06(#vf_elxA06) A07(#vf_elxA07) A08(#vf_elxA08) A09(#vf_elxA09) A10(#vf_elxA10) Ssiname(#VF_FRAMEI)
Endroutine

* Initialize the command handler
Evtroutine Handling(#avFrameworkManager.uInitialize) Options(*noclearmessages *noclearerrors)
* Get the current employee number from the instance list
Invoke Method(#avListManager.getCurrentInstance) Akey1(#Empno)
Endroutine

* Handle execution of the command handler
Evtroutine Handling(#avFrameworkManager.uexecute) Options(*noclearmessages *noclearerrors)

Fetch Fields(#SURNAME #GIVENAME #SALARY) From_File(PSLMST) With_Key(#EMPNO)

Endroutine

* Handle click of the save button
Evtroutine Handling(#avFrameworkManager.uWAMEvent_1) Options(*noclearmessages *noclearerrors)

Update Fields(#GIVENAME #SURNAME #SALARY) In_File(PSLMST) With_Key(#EMPNO)

Endroutine
End_Com