Subject Re: Save the datalinks
From Gaetano <gaetanodd@hotmail.com>
Date Sun, 30 Aug 2020 10:27:27 +1000
Newsgroups dbase.getting-started


+1 lol


On 30/08/2020 07:04, Tom wrote:
> Never mind ...
>
> Staring at the code for too ling plus typos will cause that. All fixed now.
>
> Thanks anyway,
> Tom
>
> On 8/29/20 2:19 PM, Tom wrote:
>> Hi all,
>>
>> Been fooling with this for a while and cannot get the syntax straight.
>> Maybe you can help.
>>
>> Basic idea:
>>
>> // Now: save all 4 object datalinks and then remove them so
>> // objects are no longer datalinked ...
>> form.aLinks = new array()
>> form.aLinks.add(form.CDATA.GETRECORDID.dataLink)
>> form.aLinks.add(form.CDATA.GETUSERID.dataLink)
>> form.aLinks.add(form.CDATA.GETGROUPNAME.dataLink)
>> form.aLinks.add(form.CDATA.GETSUBGROUPVALUE.dataLink)
>> *
>> form.CDATA.GETRECORDID.dataLink = null
>> form.CDATA.GETUSERID.dataLink = null
>> form.CDATA.GETGROUPNAME.dataLink = null
>> form.CDATA.GETSUBGROUPVALUE.dataLink = null
>> *
>> // Later: return all object datalinks so all objects are again
>> datalinked ...
>> form.CDATA.GETRECORDID.dataLink = form.aLinks[1]
>> form.CDATA.GETUSERID.dataLink = form.aLinks[2]
>> form.CDATA.GETGROUPNAME.dataLink = form.aLinks[3]
>> form.CDATA.GETSUBGROUPVALUE.dataLink = form.aLinks[4]
>> *
>> The above works as expected but entails a lot of typing.
>> *
>> Been trying to use Mervyn's getObject function (see below). Obtaining
>> form.objects array works to perfection. However, I cannot generate the
>> form.aLinks array as above.
>>
>> Your help would be appreciated. So will Akshat I would venture to say.
>>
>> Tom
>>
>> function getObjects
>>        //The routine will start with the object
>>        //passed as a parameter. If no parameter
>>        //is passed it will start with the form
>>        parameters xObject
>>        private oRef
>>        local oParent
>>        if type('form.objects') = "U"
>>           form.objects = new array()
>>        endif
>>        oParent = iif( type( "xObject" ) == "O", xObject, form )
>>        oRef = oParent.first
>>        do
>>           // form and container
>>           if type( "oRef.first" ) == "O"
>>              class::getObjects( oRef )
>>           endif
>>           // recurse up the tree and get each parents name
>>           if not oRef.baseClassName == "FORM"
>>              o = oRef
>>              cName = oRef.name
>>              do while true
>>                 if type("o.Parent")=="U"
>>                    exit
>>                 endif
>>                 try
>>                 cName = o.Parent.name + "." + cName
>>                 catch(exception e)
>>                 endtry
>>                 o = o.Parent
>>              enddo
>>              form.objects.add(oRef)
>>           endif
>>           // next object
>>           if type("oRef.before") # "U"
>>              oRef = oRef.before
>>           else
>>              return
>>           endif
>>        until oRef == oParent.first
>>        return form.objects
>>
>>
>>     function form_onOpen()
>>        clear
>> form.alinks = new array()
>>        ***** Alternative code which can handle containers
>>        class::getObjects()
>>        for n = 1 to form.objects.size
>>      if "GET" $ form.objects[n].name
>>      form.alinks.add( ??? ) // how do I obtain the datalink value ???
>>      endif
>> ***         if form.objects[n].classname = 'PUSHBUTTON'
>> ***            form.objects[n].onClick := class::Pushbutton_onClick
>> ***         endif
>>        next
>>        return
>>
>