UF_QRY01 - 一般的なフレームワーク・オブジェクトのリスニング方法およびそのプロパティの表示方法の例

Visual LANSA

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