UF_QRY01 - 一般的なフレームワーク・オブジェクトのリスニング方法およびそのプロパティの表示方法の例
· =============================================================================
*
* Component :UF_QRY01
* Type :Reusable Component
* Ancestor :VF_AC010 (Command Handler)
*
* PLEASE NOTE:This UF_ (User Framework) component is the shipped version.You
* may choose to modify it.You should do this by copying the source
* code of this component into your own component and then change
* the copied version.This will prevent the accidental loss of your
* changes if you upgrade your Visual LANSA framework version.Refer
* to the end of this component for more details about making your
* own version of this component.
*
* This is example code only - No warranty is expressed or implied.
* Neither this program, nor any derivative of it, should be ever be used in
* production or end user environments.
*
* =============================================================================
*
* This is the simplest example of how to listen for general Framework objects and view their properties
* =============================================================================
Function Options(*DIRECT)
Begin_Com Role(*EXTENDS #VF_AC010) Height(336) Layoutmanager(#ATLM_2) Width(552)
* ================================================================================
* Simple Field and Group Definitions
* ================================================================================
* ================================================================================
* Component definitions
* ================================================================================
* Body and Button arrangement panels
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)
* Attachment and flow layout managers
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)
* The report button
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)
* The Traverse component
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)
* List of the GUIDs of all the Commands
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')
* List of the GUIDs of all the Command References
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)
* ================================================================================
* Events Definitions
* ================================================================================
* ================================================================================
* Property Definitions
* ================================================================================
* ================================================================================
* Method Definitions
* ================================================================================
* --------------------------------------------------------------------------------
* Handle Command Execution
* --------------------------------------------------------------------------------
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
* ================================================================================
* Subroutines
* ================================================================================
* ================================================================================
* Event Handlers
* ================================================================================
* --------------------------------------------------------------------------------
* Handle the save button
* --------------------------------------------------------------------------------
EVTROUTINE HANDLING(#PHBN_REPORT.Click)
* Clear Lists
clr_list #listCmdGD
clr_list #listCmRGD
* Tell the Traverse reusable part to read through the entire system in no particular order
* This program listens for the signals for each new object,
* Collect all the information
invoke #UF_TRVRS.uTraverseFramework
* Now display a list of any commands that are not referenced by anything
invoke #Com_Owner.Check_Unused
ENDROUTINE
* Listen for a Business Object - An example of storing ordinary objects
EVTROUTINE HANDLING(#UF_TRVRS.BusinessObject) Reference(#TempVF_FP003)
* Store all the business objects in a collection
Set_ref Com(#collBusObj<#TempVF_FP003.uIdentifier>) to(#TempVF_FP003)
endroutine
* Listen for a Command Definition Object
EVTROUTINE HANDLING(#UF_TRVRS.CommandDefinition) Reference(#TempVF_FPM09)
* All the Command Definitions are stored as internal members of a single object, #VF_FPM09.
* There is only one object reference that needs to be stored
set_ref #TheVF_FPM09 #TempVF_FPM09
* But to access the information about a particular Command Definition, we need to know
* the value of a special property called .CurrentMemberGUID.
* So, store that value in a list
Change #cmdGUID #TempVF_FPM09.CurrentMemberGUID
Change #cmdUID #TempVF_FPM09.uIdentifier
Add_entry #ListCmdGD
endroutine
* Listen for a Command Usage (Command Reference) Object
EVTROUTINE HANDLING(#UF_TRVRS.CommandReference) Reference(#TempVF_FPM10) CommandDefinition(#TempVF_FPM09)
* All the Command References are stored as internal members of a single object, #VF_FPM10.
* There is only one object that needs to be stored
set_ref #TheVF_FPM10 #TempVF_FPM10
* But to access the information about a particular Command Reference, we need to know
* the value of a special property called .CurrentMemberGUID.
* So, store that value in a list
Change #cmdRefGUD #TempVF_FPM10.CurrentMemberGUID
* Store the uIdentifier of the command that is refered to
Change #cmdRefUID #TempVF_FPM09.uIdentifier
Add_entry #ListCmRGd
ENDROUTINE
* Check which commands are not used anywhere
mthroutine Check_Unused
clr_list #LTVW_1
selectlist #ListCmdGD
* Which commands do not have a Command Reference that uses them?
Loc_Entry In_List(#ListCmRGd) Where(#cmdUID *eq #cmdrefUID)
if_status is_not(*Okay)
* Get Details of the command definition being processed
* (Set the GUID property first)
set #TheVF_FPM09 CurrentMemberGUID(#cmdGUID)
#df_eltxtl := 'Command:' + #TheVF_FPM09.uCaption + ' is not used anywhere'
* To see what other command definition properties you can view, click on #TheVF_FPM09 above and press F2, and look at the properties of the VF_FPM09 class
add_entry #LTVW_1
endif
endselect
endroutine
End_Com