The recreate form from scratch may not be a bad idea. They (4D) have done a
great job with maintaining compatibility, but things have changed.

For the question as to why it redraws, at a fundamental level, ah, no, but
agree it can be frustrating.

There's one more trick I've used in the past. It's not as satisfying,
maybe, but does the job.

For your list form method, put in one additional check: has this operation
already been run "recently"?

c_longint(L_last_run_ms;$L_threshold_ms)

$L_threshold_ms:= 10  // if called more often than this, ignore
if(Milliseconds - L_last_run_ms > $L_threshold_ms)
  //do stuff
  L_last_run_ms := Milliseconds
else
  // just ignore it
end if

So, basically, if we get called "too often" we ignore one or more calls. I
have also used this idea when there are a lot of calls from different
places in the code, and the calculation, or lookup or whatever, is fairly
"expensive".

In your example, care needs to be taken that no user input is lost, e.g.
user types 'hello' and the last 'o' does not get processed.

So it can take some tuning. Again, it's better to find the real root cause
or recreate the form if that solves.



John Bowen
Solutions in 4D since 1989
jebowena...@gmail.com
949-281-6321

On Wed, Feb 8, 2017 at 3:33 PM, Allen Matlick <al...@gus.ucsb.edu> wrote:

> The subform is not a subtable.
>
> I tried creating a new detail form with a new subform, a couple of search
> variables and a very simple list form attached to the subform.
>
> I’m not seeing the subform redraws to the extent they occur in my
> problematic forms.  e.g.  I don’t get a redraw every time I type a
> character into the entry variable.  So, the behavior I’m seeing is not a
> new default behavior for subforms.
>
> These are forms that have existed since at least v6.  I guess my next step
> is to try recreating the form from scratch.
>
> Do you have any idea what things in 4d trigger the redraw of the subform?
>
> Thanks again.
>
> Allen
>
>
>
> > On Feb 8, 2017, at 1:37 PM, Chip Scheide <4d_o...@pghrepository.org>
> wrote:
> >
> > I would try replacing with a listbox (just as a test) maybe 4D changed
> > something with subforms and the way they redraw.
> >
> > BTW - is the subform a subtable?
> >
> > On Wed, 8 Feb 2017 13:13:48 -0800, Allen Matlick wrote:
> >> It's a subform. All relations to related tables are manual.
> >>
> >> Sent from my iPad
> >>
> >>> On Feb 8, 2017, at 11:16 AM, Chip Scheide
> >>> <4d_o...@pghrepository.org> wrote:
> >>>
> >>> the 'subform' is it a subform (an included listing form from another
> >>> table), a listbox, or a widget (also called a subform)?
> >>>
> >>> Are the relations between the parent and child table(s) automatic or
> >>> manual?
> >>> if any are automatic - try making them manual.
> >>>
> >>>> On Wed, 8 Feb 2017 10:55:59 -0800, Allen Matlick wrote:
> >>>> Thanks for your responses.
> >>>>
> >>>> The events associated with the various variables and forms are
> >>>> minimized and the methods associated with the variables and forms are
> >>>> wrapped with the corresponding ‘if (form event = …) conditionals.
> >>>>
> >>>> What I seem to be seeing is that the subform is being redrawn much
> >>>> more frequently in v15.3 than v13.5.  With each redraw I’m seeing
> >>>> another on display detail event, as I would expect.
> >>>>
> >>>> I’m comparing identical forms, with identical settings in v13.5
> >>>> and v15.3.
> >>>>
> >>>> The form displays payroll transactions for employees.  There are some
> >>>> display variables that are used to trigger searches the appropriate
> >>>> table and the results are displayed in the subform.  The search does
> >>>> not occur until the “on data change” event fires.
> >>>>
> >>>> The main form has only the events  on load, on clicked, on activate
> >>>> and on data change.
> >>>> The subform has no associated events
> >>>> The list form associated with the subform has only the on display
> >>>> detail event.
> >>>> The display variables have only the on data change event.
> >>>>
> >>>> I added another display variable to the main form which to display
> >>>> the number of times on display detail event occurs.  The variable is
> >>>> a process variable.
> >>>> In the list form method, inside the "on display detail conditional" I
> >>>> added code that increments the count variable by one.
> >>>>
> >>>> The subform displays 7 records.
> >>>>
> >>>> Here’s what I see with v13.5
> >>>>
> >>>> Action              Cumulative count
> >>>> Open form        0    opens within a second
> >>>> Click into employee name variable    0
> >>>> keystroke 1        0
> >>>> keystroke 2        0
> >>>> keystroke 3        0
> >>>> keystroke 4        0
> >>>> keystroke 5        0
> >>>> tab out of field        7    this initiates a query and updates the
> >>>> display
> >>>> click into different search variable    7
> >>>>
> >>>> By comparison with v15.3
> >>>> Open form        0    opens in about 8 seconds  — much slower
> >>>> Click into employee name variable    14
> >>>> keystroke 1        21
> >>>> keystroke 2        28
> >>>> keystroke 3        35
> >>>> keystroke 4        42
> >>>> keystroke 5        49
> >>>> tab out of field        56    this initiates a query and updates
> >>>> the display
> >>>> click into different search variable    70
> >>>>
> >>>> Can you think of any way to reduce the number of redraws?  Any
> >>>> other ideas?
> >>>>
> >>>> Allen
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>> On Feb 8, 2017, at 1:15 AM, Arnaud de Montard <arn...@init5.fr>
> wrote:
> >>>>>
> >>>>>
> >>>>>> Le 8 févr. 2017 à 01:44, Kirk Brooks <lists.k...@gmail.com> a
> écrit :
> >>>>>>
> >>>>>> Allen,
> >>>>>> I'll add my voice to Keith's suggestion that you turn off all
> >>>>>> events on the
> >>>>>> forms (except On Load) and try working with the form. Turn on the
> events
> >>>>>> you actually need.
> >>>>>
> >>>>> Yes, that's what I do too. And to avoid missing some (schematically):
> >>>>> Case of
> >>>>> :(evt1)
> >>>>> :(evt2)
> >>>>> else
> >>>>> trace  //unexpected, check or uncheck but don't let it this way
> >>>>> end case
> >>>>>
> >>>>> Notes: when a form is created, some events are automatically checked
> >>>>> by 4D even if they are not required (at least by me). The "default"
> >>>>> tab of the properties palette shows a restricted set of events,
> >>>>> while the "detailed event" tab shows them all. The "magic shortcut"
> >>>>> (cmd+clic, I do like this one!) can be use to uncheck all at once.
> >>>>>
> >>>>> --
> >>>>> Arnaud de Montard
> >>>>>
> >>>>>
> >>>>> ************************************************************
> **********
> >>>>> 4D Internet Users Group (4D iNUG)
> >>>>> FAQ:  http://lists.4d.com/faqnug.html
> >>>>> Archive:  http://lists.4d.com/archives.html
> >>>>> Options: http://lists.4d.com/mailman/options/4d_tech
> >>>>> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> >>>>> ************************************************************
> **********
> >>>>
> >>>> ************************************************************
> **********
> >>>> 4D Internet Users Group (4D iNUG)
> >>>> FAQ:  http://lists.4d.com/faqnug.html
> >>>> Archive:  http://lists.4d.com/archives.html
> >>>> Options: http://lists.4d.com/mailman/options/4d_tech
> >>>> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> >>>> ************************************************************
> **********
> >>> ---------------
> >>> Gas is for washing parts
> >>> Alcohol is for drinkin'
> >>> Nitromethane is for racing
> >>> **********************************************************************
> >>> 4D Internet Users Group (4D iNUG)
> >>> FAQ:  http://lists.4d.com/faqnug.html
> >>> Archive:  http://lists.4d.com/archives.html
> >>> Options: http://lists.4d.com/mailman/options/4d_tech
> >>> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> >>> **********************************************************************
> >> **********************************************************************
> >> 4D Internet Users Group (4D iNUG)
> >> FAQ:  http://lists.4d.com/faqnug.html
> >> Archive:  http://lists.4d.com/archives.html
> >> Options: http://lists.4d.com/mailman/options/4d_tech
> >> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> >> **********************************************************************
> > ---------------
> > Gas is for washing parts
> > Alcohol is for drinkin'
> > Nitromethane is for racing
> > **********************************************************************
> > 4D Internet Users Group (4D iNUG)
> > FAQ:  http://lists.4d.com/faqnug.html
> > Archive:  http://lists.4d.com/archives.html
> > Options: http://lists.4d.com/mailman/options/4d_tech
> > Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> > **********************************************************************
>
> **********************************************************************
> 4D Internet Users Group (4D iNUG)
> FAQ:  http://lists.4d.com/faqnug.html
> Archive:  http://lists.4d.com/archives.html
> Options: http://lists.4d.com/mailman/options/4d_tech
> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> **********************************************************************
>
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**********************************************************************

Reply via email to