Claudio,
It's pretty easy to implement this feature yourself. I put this code in the lowest level cObject class that is the ulitmate ParentClass of things like BizObjs etc:
lparameter pcMethod
local loObject, llRetVal, lcObjectMethod
llRetVal = .T.
lcObjectMethod = "loObject." + pcMethod + "()"
for each loObject in this.objects
if PEMStatus( loObject, pcMethod, 5 )
llRetVal = llRetVal and eval( lcObjectMethod )
endif
if ( llRetVal and PEMStatus( loObject, "BroadcastMethodCall", 5 ) )
llRetVal = loObject.BroadcastMethodCall( pcMethod )
endif
if ( ! llRetVal )
exit
endif
endfor
return llRetVal
the usage is like:
this.BroadcastMethodCall( "Use" )
which would let every contained object USE the tables they need.
The code checks to see if the contained objects actually have the method in their interface, and then recursively call the object's BroadcastMethodCall() if it has that interface.
I decided to to always make these methods parameterless to simplify the propogation. Each object just uses it's property values to determine it's own relevant "parameters" for the operation it is wanting to accomplish.
>
SetAll sets a property of same based class objects.. It does not matter how many are in our form..
>
>Is there a way to run a specific method of same based class objects ? Something compared to setall for methods..