Visual LANSA フレームワーク ガイド > アドバンスド・トピック > Visual LANSAフレームワークのオブジェクトに関するクエリーの記述 > > UF_QRY01 - 一般的なフレームワーク・オブジェクトのリスニング方法およびそのプロパティの表示方法
UF_QRY01 - 一般的なフレームワーク・オブジェクトのリスニング方法およびそのプロパティの表示方法

*=============================================================================
*
* コンポーネント   :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