How to close / destruct a subform?
Vik Shah
Vik at mystrata.com.au
Sun Dec 19 18:14:23 EST 2010
Anyone else out there that can share their views...?
Vik Shah
On 16/12/10 10:09 PM, "Vik Shah" <Vik at mystrata.com.au> wrote:
> Andrew,
>
> The $multipleclasses is set to kFalse, and at execution time we cannot issue
> a $root.$clearcachedforms() as it will interrupt others sessions.
>
> While what I see is mainly during the development, we do have cases whereby
> the same remote form is opened multiple times and closed multiple times.
>
> In such an event the instance lingers, this is a serious issue.
>
> I am sure that I am not the only one using a subwindow/subform with this
> issue.
>
> My feeling is that the lingering instances could explain the memory leaks
> (but not memory leaks) we have been noticing over the years. What we see is
> that omnis memory usage keeps growing slowly but surely, until omnis runs
> out of its useable memory space.
>
> Any other takers?
>
> Vik Shah
>
>
> On 16/12/10 7:55 PM, "Andrew Clow" <andrew at freedomsoftware.co.nz> wrote:
>
>> Hi Vik,
>>
>> Do $cinst.$objs.subFormField.$multipleclasses.$assign(kFalse) ;;will force a
>> destruct of all subForm instances that aren't in use. (assign(kTrue) before
>> assigning next $classname)
>> You may choose to leave it off since it sounds like you're already closing
>> them with the intention they stay closed.
>>
>> That and $root.$clearcachedforms() were very useful for us during webclient
>> testing.
>>
>> <Manual>
>> Subform Caching
>> The $multipleclasses property tells Omnis to keep a set of remote form
>> instances open for use in the subform object, rather than constructing a new
>> instance each time the class is changed. When you assign a new remote form
>> name to $classname at runtime, the new remote form is downloaded to the
>> client
>> and displayed in their browser. If $multipleclasses is enabled, the previous
>> remote form is cached and hidden on the client, otherwise the remote form
>> instance is destroyed. If any previous remote forms have been cached in this
>> way using $multipleclasses, you can switch back to them instantaneously,
>> otherwise they have to be reloaded each time you assign to $classname of the
>> subform object.
>> </Manual>
>>
>> Regards,
>> Andrew.
>>
>>
>> On 16/12/2010, at 7:07 PM, Vik Shah wrote:
>>
>>> Hello,
>>>
>>> In our Web Client application we have got a few subform's that we use
>>> commonly amongst many parts of our application. I was navigating in such a
>>> way that I specifically closed off all the remote forms that I did not need.
>>>
>>> When I tried to view the subform's stack (from the omnis IDE) and select the
>>> active subform, to my surprise I found many instances of that subform still
>>> running.
>>>
>>> Thinking that I was seeing double (its late in the day...) I repeated this
>>> and the results are the same.
>>>
>>> When you open a remote form that has a subform and then close the remote
>>> form using $ctask.$closeform('the_rf_name') the $destruct of the closing
>>> remote form runs but the $destruct of the sub-form's instance does *not*
>>> run.
>>>
>>> Am I missing something obvious here, how do I close a subform?
>>>
>>> Looking at the manual, the subforms/subwindows should destruct when the
>>> parent form/window closes.
>>>
>>> Has anyone seen this behaviour?
>>>
>>> Vik Shah
>>> CIO
>>> mystrata Pty. Ltd.
>>>
>>>
>>>
>>> _____________________________________________________________
>>> Manage your list subscriptions at http://lists.omnis-dev.com
>>
>> _____________________________________________________________
>> Manage your list subscriptions at http://lists.omnis-dev.com
>
>
> _____________________________________________________________
> Manage your list subscriptions at http://lists.omnis-dev.com
More information about the omnisdev-en
mailing list