Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 6 of 6 total
Thread TElement.HandleLocalChanges issue
Tue, Aug 15 2017 9:26 AMPermanent Link

Matthew Jones

I have a complex form with sub-forms etc. I am doing an update of them, which may include killing some off. At some point in a BeginUpdate/EndUpdate pair finish, it is failing in TElement.HandleLocalChanges

           if ($t.requiresparentlayout(tempchanges))
              $t.parentlayoutchange();
           if ($t.requireschildlayout(tempchanges))
              $t.childlayoutchange($t);
           if (($t.telement_fautosize.tautosize_fwidth || $t.telement_fautosize.tautosize_fheight) && $t.requireslayout(tempchanges))
              $t.layoutchange(tempchanges);

The $t.telement_fautosize in the second from last line there is null, so it raises an exception. From the lines further above, I can see that it checked this value previously, so it was not null before, but is now. Presumably part of the layout change killed it all off. However, that then leaves this all crashing. I've tried to fix this by monitoring an "initialised" member, but that is failing, and the $t values in the debugger show every item to be null or false.

How can I detect that an element has been killed off here?



--

Matthew Jones


webui_telement.$p.telement_handlelocalchanges (my.js:12086)
webui_telement.$p.endupdate (my.js:14255)
webui_telement.$p.dochanged (my.js:13614)
webui_telement.$p.setbounds (my.js:12994)
webui_telement.$p.telement_setheight (my.js:12231)
webctrls_tcontrol.$p.setheight (my.js:23524)
fdetailedit_tfrmdetailedit.$p.tfrmdetailedit_setheight1 (my.js:65796)
fdetailedit_tfrmdetailedit.$p.tfrmdetailedit_frmdetaileditsize (my.js:65402)
(anonymous) (my.js:265)
webctrls_tcontrol.$p.dosize (my.js:23858)
webctrls_tcontrol.$p.dispatchevent (my.js:23631)
webui_telement.$p.triggerevent (my.js:14138)
webui_telement.$p.triggercontrollerevent (my.js:14156)
webui_telement.$p.handlechanges (my.js:13582)
webui_telement.$p.handleupdatechanges (my.js:13532)
webui_telements.$p.endupdates (my.js:11351)
webui_telement.$p.handleupdatechanges (my.js:13531)
webui_telement.$p.endupdate (my.js:14256)
webui_telement.$p.dochanged (my.js:13614)
webui_telement.$p.parentlayoutchange (my.js:13695)
webui_telement.$p.telement_handlelocalchanges (my.js:12083)
webui_telement.$p.endupdate (my.js:14255)
webui_telement.$p.dochanged (my.js:13614)
webui_telement.$p.setbounds (my.js:12994)
webui_telement.$p.telement_setheight (my.js:12231)
webctrls_tcontrol.$p.setheight (my.js:23524)
fdetailedit_tfrmdetailedit.$p.tfrmdetailedit_setheight1 (my.js:65796)
fdetailedit_tfrmdetailedit.$p.tfrmdetailedit_frmdetaileditsize (my.js:65402)
(anonymous) (my.js:265)
webctrls_tcontrol.$p.dosize (my.js:23858)
webctrls_tcontrol.$p.dispatchevent (my.js:23631)
webui_telement.$p.triggerevent (my.js:14138)
webui_telement.$p.triggercontrollerevent (my.js:14156)
webui_telement.$p.handlechanges (my.js:13582)
webui_telement.$p.handleupdatechanges (my.js:13532)
webui_telements.$p.endupdates (my.js:11351)
webui_telement.$p.handleupdatechanges (my.js:13531)
webui_telement.$p.endupdate (my.js:14256)
webui_telement.$p.dochanged (my.js:13614)
webui_telement.$p.parentlayoutchange (my.js:13695)
webui_telement.$p.telement_handlelocalchanges (my.js:12083)
webui_telement.$p.endupdate (my.js:14255)
webui_telement.$p.dochanged (my.js:13614)
webui_telement.$p.setbounds (my.js:12994)
webui_telement.$p.telement_setheight (my.js:12231)
webctrls_tcontrol.$p.setheight (my.js:23524)
fdetailedit_tfrmdetailedit.$p.tfrmdetailedit_setheight1 (my.js:65796)
fdetailedit_tfrmdetailedit.$p.tfrmdetailedit_frmdetaileditsize (my.js:65402)
(anonymous) (my.js:265)
webctrls_tcontrol.$p.dosize (my.js:23858)
webctrls_tcontrol.$p.dispatchevent (my.js:23631)
webui_telement.$p.triggerevent (my.js:14138)
webui_telement.$p.triggercontrollerevent (my.js:14156)
webui_telement.$p.handlechanges (my.js:13582)
webui_telement.$p.handleupdatechanges (my.js:13532)
webui_telements.$p.endupdates (my.js:11351)
webui_telement.$p.handleupdatechanges (my.js:13531)
webui_telement.$p.endupdate (my.js:14256)
webui_telement.$p.dochanged (my.js:13614)
webui_telement.$p.parentlayoutchange (my.js:13695)
webui_telement.$p.telement_handlelocalchanges (my.js:12083)
webui_telement.$p.endupdate (my.js:14255)
webui_telement.$p.dochanged (my.js:13614)
webui_telement.$p.setbounds (my.js:12994)
webui_telement.$p.telement_setheight (my.js:12231)
webctrls_tcontrol.$p.setheight (my.js:23524)
fdetailedit_tfrmdetailedit.$p.tfrmdetailedit_setheight1 (my.js:65796)
fdetailedit_tfrmdetailedit.$p.tfrmdetailedit_frmdetaileditsize (my.js:65402)
(anonymous) (my.js:265)
webctrls_tcontrol.$p.dosize (my.js:23858)
webctrls_tcontrol.$p.dispatchevent (my.js:23631)
webui_telement.$p.triggerevent (my.js:14138)
webui_telement.$p.triggercontrollerevent (my.js:14156)
webui_telement.$p.handlechanges (my.js:13582)
webui_telement.$p.handleupdatechanges (my.js:13532)
webui_telements.$p.endupdates (my.js:11351)
webui_telement.$p.handleupdatechanges (my.js:13531)
webui_telement.$p.endupdate (my.js:14256)
webui_telement.$p.dochanged (my.js:13614)
webui_telement.$p.parentlayoutchange (my.js:13695)
webui_telement.$p.telement_handlelocalchanges (my.js:12083)
webui_telement.$p.endupdate (my.js:14255)
webui_telement.$p.dochanged (my.js:13614)
webui_telement.$p.setbounds (my.js:12994)
webui_telement.$p.telement_setheight (my.js:12231)
webctrls_tcontrol.$p.setheight (my.js:23524)
fdetailedit_tfrmdetailedit.$p.tfrmdetailedit_setheight1 (my.js:65796)
fdetailedit_tfrmdetailedit.$p.tfrmdetailedit_frmdetaileditsize (my.js:65402)
(anonymous) (my.js:265)
webctrls_tcontrol.$p.dosize (my.js:23858)
webctrls_tcontrol.$p.dispatchevent (my.js:23631)
webui_telement.$p.triggerevent (my.js:14138)
webui_telement.$p.triggercontrollerevent (my.js:14156)
webui_telement.$p.handlechanges (my.js:13582)
webui_telement.$p.handleupdatechanges (my.js:13532)
webui_telements.$p.endupdates (my.js:11351)
webui_telement.$p.handleupdatechanges (my.js:13531)
webui_telements.$p.endupdates (my.js:11351)
webui_telement.$p.handleupdatechanges (my.js:13531)
webui_telements.$p.endupdates (my.js:11351)
webui_telement.$p.handleupdatechanges (my.js:13531)
webui_telements.$p.endupdates (my.js:11351)
webui_telement.$p.handleupdatechanges (my.js:13531)
webui_telements.$p.endupdates (my.js:11351)
webui_telement.$p.handleupdatechanges (my.js:13531)
webui_telements.$p.endupdates (my.js:11351)
webui_telement.$p.handleupdatechanges (my.js:13531)
webui_telements.$p.endupdates (my.js:11351)
webui_telement.$p.handleupdatechanges (my.js:13531)
webui_telements.$p.endupdates (my.js:11351)
webui_telement.$p.handleupdatechanges (my.js:13531)
webui_telements.$p.endupdates (my.js:11351)
webui_telement.$p.handleupdatechanges (my.js:13531)
webui_telement.$p.endupdate (my.js:14256)
webctrls_tcontrol.$p.endupdate (my.js:24258)
foutline_tfrmoutline.$p.activateresources (my.js:68731)
Tue, Aug 15 2017 12:14 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Matthew,

<< I have a complex form with sub-forms etc. I am doing an update of them, which may include killing some off.  >>

Are you freeing or removing controls in response to size changes ?

Tim Young
Elevate Software
www.elevatesoft.com
Tue, Aug 15 2017 3:15 PMPermanent Link

Matthew Jones


> Are you freeing or removing controls in response to size changes ?
>

I think probably yes. Or rather, the begin update is started, then lots
changes (delete form and create) and then the end update.

--
Matthew Jones
Wed, Aug 16 2017 10:11 AMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Matthew,

<< I think probably yes. Or rather, the begin update is started, then lots changes (delete form and create) and then the end update.  >>

I would start by commenting out any control deletions/frees first, and then see when it works.  That will tell you which one is problematic.

Tim Young
Elevate Software
www.elevatesoft.com
Wed, Aug 16 2017 10:31 AMPermanent Link

Matthew Jones

Tim Young [Elevate Software] wrote:

> I would start by commenting out any control deletions/frees first, and then see when it works.  That will tell you which one is problematic.

Not going to be possible I don't think, hmm, unless I queue them, but that would cause a ripple later. I guess I shall have to turn off the update. Or I have to get very clever. Hmm...

--

Matthew Jones
Thu, Aug 17 2017 1:50 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Matthew,

<< Not going to be possible I don't think, hmm, unless I queue them, but that would cause a ripple later. I guess I shall have to turn off the update. Or I have to get very clever. Hmm... >>

Have you tried just logging the deletions using LogOutput and seeing which one is the last deletion before the exception ?

Tim Young
Elevate Software
www.elevatesoft.com
Image