UF_QRY02 - Listening for General Framework Objects And View Their Properties
- =============================================================================
*
* Component : UF_QRY02
* 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 demonstrates 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_GRID) Name(#LTVW_1) Displayposition(1) Height(332) Left(2) Parent(#BODY_HEAD) Rowresize(True) Showsortarrow(True) Tabposition(1) Top(2) Width(460)
Define_Com Class(#PRIM_GDCL) Name(#LVCL_1) Caption('Parent Framework') Captiontype(Caption) Displayposition(1) Parent(#LTVW_1) Source(#FP_EKEY1) Width(12)
Define_Com Class(#PRIM_GDCL) Name(#LVCL_2) Caption('Parent Application') Captiontype(Caption) Displayposition(2) Parent(#LTVW_1) Source(#FP_EKEY2) Width(12)
Define_Com Class(#PRIM_GDCL) Name(#LVCL_3) Caption('Parent Business Object') Captiontype(Caption) Displayposition(3) Parent(#LTVW_1) Source(#FP_EKEY3) Width(17)
Define_Com Class(#PRIM_GDCL) Name(#LVCL_4) Displayposition(4) Parent(#LTVW_1) Source(#DF_ELTXTL) Widthtype(Remainder)
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_ATLI) Name(#ATLI_4) Attachment(Center) Manage(#LTVW_1) Parent(#ATLM_1)
* Framework - class #VF_FP001 #TempVF_FP001 Reference(*Dynamic)
* Application - class #VF_FP002 #TempVF_FP002 Reference(*Dynamic)
* Business Object - class #VF_FP003 #TempVF_FP003 Reference(*Dynamic)
* Command - class #VF_FPM09 #TempVF_FPM09 Reference(*Dynamic)
* Command Usage - class #VF_FPM10 #TempVF_FPM10 Reference(*Dynamic)
* Filter - class #VF_FPM14 #TempVF_FPM14 Reference(*Dynamic)
* ================================================================================
* 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)
* 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,
clr_list #LTVW_1
invoke #UF_TRVRS.uTraverseFramework
ENDROUTINE
* Listen for a Framework Object
EVTROUTINE HANDLING(#UF_TRVRS.Framework) Reference(#TempVF_FP001)
* Output generic details
Invoke #Com_Owner.uOutputGeneric uLevel(1) uType('Framework') uObject(#TempVF_FP001)
add_entry #LTVW_1
* Store a reference to the object against the list line
Set Com(#ltvw_1.currentitem) Relatedreference(#TempVF_FP001)
ENDROUTINE
* Listen for an Application Object
EVTROUTINE HANDLING(#UF_TRVRS.Application) Reference(#TempVF_FP002) VisParent1(#TempVF_FP001)
* Output generic details
Invoke #Com_Owner.uOutputGeneric uLevel(2) uType('Application') uObject(#TempVF_FP002) VisParent1(#TempVF_FP001)
* For more details of the application object, click on #TempVF_FP002 above and press F2, and look at the properties of class VF_FP002
add_entry #LTVW_1
* Store a reference to the object against the list line
Set Com(#ltvw_1.currentitem) Relatedreference(#TempVF_FP002)
ENDROUTINE
* Listen for a Business Object Object
EVTROUTINE HANDLING(#UF_TRVRS.BusinessObject) Reference(#TempVF_FP003) VisParent1(#TempVF_FP001) VisParent2(#TempVF_FP002)
* Output generic details
Invoke #Com_Owner.uOutputGeneric uLevel(3) uType('Business Object') uObject(#TempVF_FP003) VisParent1(#TempVF_FP001) VisParent2(#TempVF_FP002)
* For more details of the business object object, click on #TempVF_FP003 above and press F2, and look at the properties of class VF_FP003
add_entry #LTVW_1
* Store a reference to the object against the list line
Set Com(#ltvw_1.currentitem) Relatedreference(#TempVF_FP003)
ENDROUTINE
* Listen for a Filter Object
EVTROUTINE HANDLING(#UF_TRVRS.Filter) Reference(#TempVF_FPM14) VisParent1(#TempVF_FP001) VisParent2(#TempVF_FP002) VisParent3(#TempVF_FP003)
* Output generic details
Invoke #Com_Owner.uOutputGeneric uLevel(3) uType('Business Object') uObject(#TempVF_FP003) VisParent1(#TempVF_FP001) VisParent2(#TempVF_FP002) VisParent3(#TempVF_FP003)
* Specific details
* For more details of the filter object, click on #TempVF_FPM14 above and press F2, and look at the properties of class VF_FPM14
#DF_ELTXTL := 'Filter ' + #TempVF_FPM14.uCaption + 'Snap in windows filter ' + #TempVF_FPM14.uFilterName + ' Snap In Web function ' + #TempVF_FPM14.uWebFilterFunction + ' ' + 'Snap in wam filter ' + #TempVF_FPM14.uWAMComponent
add_entry #LTVW_1
* Store a reference to the object against the list line
Set Com(#ltvw_1.currentitem) Relatedreference(#TempVF_FPM14)
ENDROUTINE
* Listen for a Command Usage (Command Reference) Object
EVTROUTINE HANDLING(#UF_TRVRS.CommandReference) Reference(#TempVF_FPM10) CommandDefinition(#TempVF_FPM09) VisParent1(#TempVF_FP001) VisParent2(#TempVF_FP002) VisParent3(#TempVF_FP003)
* Output generic details
Invoke #Com_Owner.uOutputGeneric uLevel(3) uType('Command Reference') VisParent1(#TempVF_FP001) VisParent2(#TempVF_FP002) VisParent3(#TempVF_FP003)
* Specific details
* Some of the details are on the Command Object (VF_FPM09)
* Most of the details are on the Command Reference Object (VF_FPM10)
* For more details of the Command and command reference objects, click on #TempVF_FPM09 or #TempVF_FPM10 above and press F2, and look at the properties of classes VF_FPM09 and VF_FPM10
#DF_ELTXTL := 'Command ' + #TempVF_FPM09.uCaption + ' Snap in windows handler ' + #TempVF_FPM10.uHandlerName + ' Snap In Web function ' + #TempVF_FPM10.uWebHandlerFunction + ' ' + ' Snap in wam handler ' + #TempVF_FPM10.uWAMComponent + ' uWAM' + #TempVF_FPM10.uWAM
add_entry #LTVW_1
* Store a reference to the object against the list line
Set Com(#ltvw_1.currentitem) Relatedreference(#TempVF_FPM10)
ENDROUTINE
* Output a line of description of the object
mthroutine uOutputGeneric
define_map *input #std_num #uLevel
define_map *input #df_elmsg #uType
Define_Map For(*input) Class(#vf_fp001) Name(#VisParent1) Mandatory(*NULL) Pass(*BY_REFERENCE)
Define_Map For(*input) Class(#vf_fp002) Name(#VisParent2) Mandatory(*NULL) Pass(*BY_REFERENCE)
Define_Map For(*input) Class(#vf_fp003) Name(#VisParent3) Mandatory(*NULL) Pass(*BY_REFERENCE)
Define_Map For(*input) Class(#vf_ac001) Name(#uObject) Mandatory(*NULL) Pass(*BY_REFERENCE)
* Parent Details
Change (#FP_EKEY1 #FP_EKEY2 #FP_EKEY3) *null
* Parent 1 details
if_ref #VisParent1 is_not(*null)
Change #FP_EKEY1 #VisParent1.uUserObjectType
endif
* Parent 2 details
if_ref #VisParent2 is_not(*null)
Change #FP_EKEY2 #VisParent2.uUserObjectType
endif
* Parent 3 details
if_ref #VisParent3 is_not(*null)
Change #FP_EKEY3 #VisParent3.uUserObjectType
endif
* Object details
if_ref #uObject is_not(*null)
#DF_ELTXTL := #uType + ' ' + #uObject.uCaption + ' ' + #uObject.uIdentifier + ' ' + #uObject.uUserObjectType
endif
endroutine
End_Com