*=============================================================================
*
* コンポーネント :UF_QRY01
* タイプ :再利用コンポーネント
* 祖先 :VF_AC010 (コマンド・ハンドラー)
*
* 注意事項: この UF_ (ユーザー・フレームワーク) コンポーネントは、フレームワーク提供のバージョンです。
* 修正することも可能ですが、その場合はこのコンポーネントのソースコードを自分のコンポーネントにコピーし、
* そのコピーを変更するようにしてください。
* そうすることで、Visual LANSA フレームワークをアッップグレードした場合に、自分が加えた変更が
* 意に反して失われてしまうことを防げます。
* このコンポーネントの独自のバージョンを作成する際の詳細は、このコンポーネントの最後の部分を
* 参照してください。
*
* 以下はサンプル・コードです。 - 明示的にも暗示的にも保証されません。
* このプログラムやこの派生物のいずれも、実稼働やエンドユーザーの環境で使用することは一切できません。
*
* =============================================================================
*
* 以下は、一般的なフレームワーク・オブジェクトをリッスンして、そのプロパティを確認する方法が示された最も簡素な例です。
* =============================================================================
Function Options(*DIRECT)
Begin_Com Role(*EXTENDS #VF_AC010) Height(336) Layoutmanager(#ATLM_2) Width(552)
* ================================================================================
* 簡素なフィールドとグループ定義
* ================================================================================
* ================================================================================
* コンポーネント定義
* ================================================================================
* 本体およびボタン配置パネル
Define_Com Class(#PRIM_PANL) Name(#BUTTON_PANEL) Displayposition(2) Height(336) Layoutmanager(#BUTTON_FLOW) Left(464) Parent(#COM_OWNER) Tabposition(2) Tabstop(False) Top(0) Width(88)
Define_Com Class(#PRIM_PANL) Name(#BODY_HEAD) Displayposition(1) Height(336) Layoutmanager(#ATLM_1) Left(0) Parent(#COM_OWNER) Tabposition(1) Tabstop(False) Top(0) Verticalscroll(True) Width(464)
* 添付およびフロー・レイアウト・マネージャー
Define_Com Class(#PRIM_ATLM) Name(#MAIN_LAYOUT)
Define_Com Class(#PRIM_ATLI) Name(#BUTTON_ATTACH) Attachment(Right) Manage(#BUTTON_PANEL) Parent(#MAIN_LAYOUT)
Define_Com Class(#PRIM_FWLM) Name(#BUTTON_FLOW) Direction(TopToBottom) Flowoperation(Center) Marginbottom(4) Marginleft(4) Marginright(4) Margintop(4) Spacing(4) Spacingitems(4)
Define_Com Class(#PRIM_ATLI) Name(#BODY_ATTACH) Attachment(Center) Manage(#BODY_HEAD) Parent(#MAIN_LAYOUT)
* レポート・ボタン
Define_Com Class(#PRIM_PHBN) Name(#PHBN_REPORT) Buttondefault(True) Caption('Report') Displayposition(1) Left(4) Parent(#BUTTON_PANEL) Tabposition(1) Top(4)
Define_Com Class(#PRIM_FWLI) Name(#FWLI_SAVE_BUTTON) Manage(#PHBN_REPORT) Parent(#BUTTON_FLOW)
* トラバース・コンポーネント
Define_Com Class(#UF_TRVRS) Name(#UF_TRVRS)
Define_Com Class(#PRIM_ATLM) Name(#ATLM_1) Marginbottom(2) Marginleft(2) Marginright(2) Margintop(2)
Define_Com Class(#PRIM_ATLI) Name(#ATLI_1) Attachment(Center) Parent(#ATLM_1)
Define_Com Class(#PRIM_ATLM) Name(#ATLM_2)
Define_Com Class(#PRIM_ATLI) Name(#ATLI_2) Attachment(Center) Manage(#BODY_HEAD) Parent(#ATLM_2)
Define_Com Class(#PRIM_ATLI) Name(#ATLI_3) Attachment(Right) Manage(#BUTTON_PANEL) Parent(#ATLM_2)
Define_Com Class(#Prim_kCol<#VF_FP003 #VF_ELIDN>) Name(#collBusObj)
* すべてのコマンドの GUID リスト
Def_List Name(#ListCmdGd) Fields(#cmdGUID #cmdUID) Type(*Working) Entrys(*MAX)
define #cmdGUID reffld(#vf_elidn) desc('GUID for a command definition')
define #cmdUID reffld(#vf_elidn) desc('uIdentifier for a command definition')
* すべてのコマンド参照の GUID リスト
Def_List Name(#ListCmRGd) Fields(#cmdRefGUD #cmdRefUID) Type(*Working) Entrys(*MAX)
define #cmdRefGUD reffld(#vf_elidn) desc('GUID for a command reference')
define #cmdRefUID reffld(#vf_elidn) desc('uIdentifier for a command definition')
Define_com #VF_FPM09 #TheVF_FPM09 Reference(*Dynamic)
Define_com #VF_FPM10 #TheVF_FPM10 Reference(*Dynamic)
Define_Com Class(#PRIM_LTVW) Name(#LTVW_1) Componentversion(2) Displayposition(1) Fullrowselect(True) Height(332) Left(2) Parent(#BODY_HEAD) Showsortarrow(True) Tabposition(1) Top(2) Width(460)
Define_Com Class(#PRIM_ATLI) Name(#ATLI_4) Attachment(Center) Manage(#LTVW_1) Parent(#ATLM_1)
Define_Com Class(#PRIM_LVCL) Name(#LVCL_1) Caption('Unused Commands') Captiontype(Caption) Displayposition(1) Parent(#LTVW_1) Source(#DF_ELTXTL) Width(100)
* ================================================================================
* イベント定義
* ================================================================================
* ================================================================================
* プロパティ定義
* ================================================================================
* ================================================================================
* メソッド定義
* ================================================================================
* --------------------------------------------------------------------------------
* コマンド実行処理
* --------------------------------------------------------------------------------
Mthroutine Name(uExecute) Options(*REDEFINE)
* The return code field and testing condition
Define #Ret_Code reffld(#IO$STS)
Def_cond Name(*RetOkay) Cond('#Ret_Code = OK')
* Do any execution logic defined in the ancestor
Invoke #Com_Ancestor.uExecute
Endroutine
* ================================================================================
* サブルーチン
* ================================================================================
* ================================================================================
* イベント・ハンドラー
* ================================================================================
* --------------------------------------------------------------------------------
* 保存ボタンの処理
* --------------------------------------------------------------------------------
EVTROUTINE HANDLING(#PHBN_REPORT.Click)
* リストのクリア
clr_list #listCmdGD
clr_list #listCmRGD
* トラバース再利用可能パーツに特別な順序なしに全システムを読み込むよう指示
* このプログラムは各新規オブジェクトに対する信号をリッスンし、
* すべての情報を収集。
invoke #UF_TRVRS.uTraverseFramework
* どこからも参照されていないコマンドのリストを表示
invoke #Com_Owner.Check_Unused
ENDROUTINE
* ビジネス・オブジェクトをリッスン - 通常のオブジェクトの保管例
EVTROUTINE HANDLING(#UF_TRVRS.BusinessObject) Reference(#TempVF_FP003)
* すべてのビジネス・オブジェクトをコレクションに保管
Set_ref Com(#collBusObj<#TempVF_FP003.uIdentifier>) to(#TempVF_FP003)
endroutine
* コマンド定義をリッスン オブジェクト
EVTROUTINE HANDLING(#UF_TRVRS.CommandDefinition) Reference(#TempVF_FPM09)
* すべてのコマンド定義を1 つのオブジェクト #VF_FPM09 の内部メンバーとして保管
* 保管する必要のあるオブジェクト参照は 1 つだけ
set_ref #TheVF_FPM09 #TempVF_FPM09
* 特定のコマンド定義についての情報にアクセスするためには、
* 特別なプロパティ.CurrentMemberGUID の値を知る必要があります。
* そのため、この値をリストに保管します。
Change #cmdGUID #TempVF_FPM09.CurrentMemberGUID
Change #cmdUID #TempVF_FPM09.uIdentifier
Add_entry #ListCmdGD
endroutine
* コマンド使用法 (コマンド参照) をリッスン オブジェクト
EVTROUTINE HANDLING(#UF_TRVRS.CommandReference) Reference(#TempVF_FPM10) CommandDefinition(#TempVF_FPM09)
* すべてのコマンド参照は1 つのオブジェクト #VF_FPM10 の内部メンバーとして保管
* 保管する必要のあるオブジェクトは 1 つだけ
set_ref #TheVF_FPM10 #TempVF_FPM10
* 特定のコマンド参照についての情報にアクセスするためには、
* 特別なプロパティ.CurrentMemberGUID の値を知る必要があります。
* そのため、この値をリストに保管します。
Change #cmdRefGUD #TempVF_FPM10.CurrentMemberGUID
* 参照されているコマンドの uIdentifier を保管
Change #cmdRefUID #TempVF_FPM09.uIdentifier
Add_entry #ListCmRGd
ENDROUTINE
* もう利用されていないコマンドはどれかチェック
mthroutine Check_Unused
clr_list #LTVW_1
selectlist #ListCmdGD
* コマンドを使用するコマンド参照がないコマンドはどれか?
Loc_Entry In_List(#ListCmRGd) Where(#cmdUID *eq #cmdrefUID)
if_status is_not(*Okay)
* 処理されているコマンド定義の詳細を取得
* (先に GUID プロパティを設定)
set #TheVF_FPM09 CurrentMemberGUID(#cmdGUID)
#df_eltxtl := 'Command:' + #TheVF_FPM09.uCaption.AsNativeString + ' is not used anywhere'
* 確認できるその他のコマンド定義プロパティを知るには、上の VF_FPM09 クリックして F2 を押下し、クラス VF_FPM09 のプロパティを見てください
add_entry #LTVW_1
endif
endselect
endroutine
End_Com