>>>I'm using SYS(1272) to return a reference to the current page in a pageframe. Then I store this in an array and try to use it to return to the last page (before the new current one). The problem I seem to be having is that SYS(1272) is returning "Form1.PageFrameA.PageA3" and any code I try when evaluating says that Form1 doesn't exist. Using "_Screen.Form1" or "_Screen.ActivePage" doesn't work either. If I check the Parent in the debugger it doesn't exist. I could do something pathetic like strip off the "Form1" from the returned string, but I just can't bring myself to do it yet. Can anyone give me some insight into working with hiarchy at these levels? Thanks!
>>>
>>>Regards, Renoir
>>
>>Renoir,
>>sys(1272) always starts hierarchy with formName. If formname and scx name was same it would work for the 'first' instance of that form. But there what you need to have 'thisform', right ? So just stuff() it there :
>>lcObject = sys(1272)
>>lcRef = stuff(lcObject, 1, at('.',lcObject), 'thisform.')
>>
>>with eval(lcRef)
>>...
>>
>>Cetin
>
>Ahhhh... I didn't understand about the form name and scx being different and how it would affect the hierarchy. It worked fine...Thanks!
>
>Renoir
And here is my GETHIERARCHY routine which also deals with formset issue.
cHierarchy = GETHIERARCHY(sys(1272, loObject))
LPARAMETER tcHierarchy
LOCAL lcReturn, lnParents, lcParents, lcFirstObject
lnParents = OCCURS(".", SYS(1272, this) )
lcParents = REPLICATE(".PARENT", lnParents )
lcFirstObject = "this" + lcParents
IF !EMPTY(lcFirstObject)
loFirstObject = EVAL(lcFirstObject)
IF UPPER(loFirstObject.BASECLASS) = "FORMSET"
tcHierarchy = STRTRAN(tcHierarchy, LOWER(loFirstObject.NAME) + ".", "")
ENDIF
loFirstObject = .NULL.
ENDIF
lcReturn = STRTRAN(tcHierarchy, LOWER(THISFORM.NAME) + ".", "thisform.")
RETURN lcReturn
Nick Neklioudov
Universal Thread Consultant
3 times Microsoft MVP - Visual FoxPro
"I have not failed. I've just found 10,000 ways that don't work." - Thomas Edison