[Openroad-users] Accessing dynamically created fields

Simon Lovell simonl at unwired.com.au
Wed Sep 5 18:43:52 EST 2007


So long as the variable was a top level variable and not attached to 
another field, I'd say that would be a bug.  If you care enough you can 
send a test case to support.

James Higson wrote:

>Using DeclareData() did not work.  When I created the field and attached it
>to the StackField, DeclareData() said that "... the field is part of a named
>field ...".  When I attached the field to CurFrame.TopForm, the
>DeclareData() works but the DynExpr still fails.
>
>-----Original Message-----
>From: openroad-users-bounces at peerlessit.com
>[mailto:openroad-users-bounces at peerlessit.com] On Behalf Of Bodo Bergmann
>Sent: Wednesday, 5 September 2007 04:00
>To: International OpenROAD Users
>Subject: Re: [Openroad-users] Accessing dynamically created fields
>
>You are right.
>The dynamic expression just doesn't work as long as you didn't declare it's
>data, as there is no data item with the according name. 
>
>So an option is to use:
>	FieldPtr.DeclareData();
>before creating the DynExpr.
>
>I didn't do this as James mentioned, that he wanted to set the value of the
>field to an already existing object (in an array), so I'had seen no reason
>to create an object by DeclareData(), which is then released anyway.
>
>Bodo.
>
>Bodo Bergmann
>Senior Software Engineer
>OpenROAD Worldwide Development
>Ingres Corp.
>
>-----Original Message-----
>From: openroad-users-bounces at peerlessit.com
>[mailto:openroad-users-bounces at peerlessit.com] On Behalf Of Simon Lovell
>Sent: Monday, September 03, 2007 11:29 PM
>To: International OpenROAD Users
>Subject: Re: [Openroad-users] Accessing dynamically created fields
>
>Isn't that because the declared attribute is effectively set to FALSE for
>dynamically created fields?  Wouldn't another option be to use the
>.DeclareData() method?  Not sure if you can map the field to an attribute of
>an array though, and that's the only way it would be useful.
>
>Bodo Bergmann wrote:
>
>  
>
>>James,
>> 
>>you can't reference the dynamically created fields using dynamic 
>>expressions.
>> 
>>But anyway you can use the FieldByFullName approach to set the value 
>>of the field:
>>    FieldPtr =
>>
>>    
>>
>CurFrame.TopForm.FieldByFullName(FullName='r'+RIGHT('000'+VARCHAR(i),3))
>);
>  
>
>>    FieldPtr.SetFieldValue(value = a[i]);
>> 
>>Bodo.
>> 
>>Bodo Bergmann
>>Senior Software Engineer
>>OpenROAD Worldwide Development
>>Ingres Corp.
>> 
>>
>>
>>    
>>
>------------------------------------------------------------------------
>  
>
>>*From:* openroad-users-bounces at peerlessit.com
>>[mailto:openroad-users-bounces at peerlessit.com] *On Behalf Of *James
>>    
>>
>Higson
>  
>
>>*Sent:* Monday, September 03, 2007 12:52 AM
>>*To:* 'International OpenROAD Users'
>>*Subject:* [Openroad-users] Accessing dynamically created fields
>>
>>Hi all,
>> 
>>I am using OR4.1SP3.
>> 
>>I have a StackField object which has a datatype of a userclass.  I 
>>have then created several instances of this StackField and grouped 
>>them into a second StackField then grouped this into a ViewPort.  In 
>>effect, I have mimmicked a TableField.  I am then dynamically 
>>appending instances of the first StackField to the second StackField 
>>by duplicating the first instance at runtime.  I hope you are 
>>following me so far.  The instances are then named r001, r002, ... 
>>r00n.
>> 
>>I can reference the instances by using either:
>>    FieldPtr =
>>
>>    
>>
>CurFrame.TopForm.FieldByFullName(FullName='r'+RIGHT('000'+VARCHAR(i),3))
>), 
>  
>
>>or;
>>    ExprPtr =
>>CurFrame.Scope.CreateDynExpr(String='r'+RIGHT('000'+VARCHAR(i),3))).
>> 
>>The problem I have, is that CreateDynExpr only works for the instances
>>    
>>
>
>  
>
>>of the StackField that were statically created on the form.  The 
>>dynamically created instances return a NULL reference.
>>FieldByFullName works for the dynamically created instances.  I want 
>>to set the instances to a row in an array by using:
>>    ExprPtr =
>>CurFrame.Scope.CreateDynExpr(String='r'+RIGHT('000'+VARCHAR(i),3)));
>>    ExprPtr.SetValue(Value = a[i]);
>> 
>>I would have thought that CreateDynExpr should work for dynamically 
>>created instances as well.  Can anyone see another way to do this?
>> 
>>Thanks,
>>James
>>Melbourne, Australia
>>
>>-----------------------------------------------------------------------
>>    
>>
>-
>  
>
>>________________________________________________________________
>>OpenROAD-Users mailing list
>>
>>You can maintain your subscription here:
>>http://www.peerlessit.com/mailman/listinfo/openroad-users
>>
>>To unsubscribe click on this link
>>mailto:openroad-users-unsubscribe at peerlessit.com&subject=unsubscribe
>>
>>To subscribe click on this link
>>mailto:openroad-users-subscribe at peerlessit.com&subject=subscribe
>>
>>-----------------------------------------------------------------------
>>    
>>
>-
>  
>
>>No virus found in this incoming message.
>>Checked by AVG Free Edition. 
>>Version: 7.5.484 / Virus Database: 269.13.2/985 - Release Date:
>>    
>>
>2/09/2007 4:32 PM
>  
>
>> 
>>
>>    
>>
>________________________________________________________________
>OpenROAD-Users mailing list
>
>You can maintain your subscription here:
>http://www.peerlessit.com/mailman/listinfo/openroad-users
>
>To unsubscribe click on this link
>mailto:openroad-users-unsubscribe at peerlessit.com&subject=unsubscribe
>
>To subscribe click on this link
>mailto:openroad-users-subscribe at peerlessit.com&subject=subscribe 
>
>________________________________________________________________
>OpenROAD-Users mailing list
>
>You can maintain your subscription here:
>http://www.peerlessit.com/mailman/listinfo/openroad-users
>
>To unsubscribe click on this link
>mailto:openroad-users-unsubscribe at peerlessit.com&subject=unsubscribe
>
>To subscribe click on this link
>mailto:openroad-users-subscribe at peerlessit.com&subject=subscribe 
>
>________________________________________________________________
>OpenROAD-Users mailing list
>
>You can maintain your subscription here:
>http://www.peerlessit.com/mailman/listinfo/openroad-users
>
>To unsubscribe click on this link
>mailto:openroad-users-unsubscribe at peerlessit.com&subject=unsubscribe
>
>To subscribe click on this link
>mailto:openroad-users-subscribe at peerlessit.com&subject=subscribe 
>
>
>
>  
>


More information about the Openroad-users mailing list