Re: Win32Lib: setIndex not trigger onChange event?

new topic     » goto parent     » topic index » view thread      » older message » newer message

Derek Parnell wrote:
> 
> Dan Moyer wrote:
> > 
> > 
> > I have a list that when any item is selected fills *another* list with 
> > appropriate items; but sometimes rather than *user* selecting an item in the
> > first list, the action of some other control intends to do so, via
> > "setIndex".
> > 
> > When the user selects an item, onChange event is triggered, but when
> > "setIndex"
> > is used, the onChange event is NOT triggered.  I can call the onChange
> > procedure
> > myself, but it would be better if setIndex did so itself, wouldn't it?
> 
> Triggering the Change event is the way Visual Basic does it too, and I have
> not so fond memories of adding special code to avoid running the trigger every
> time I set an index via the program's own code. 
> 
> So how about we let you decide on a per list basis. Would a method to flag a
> list as one that requires setIndex and setText to trigger an w32HChange event
> do? I could even add into the parameter data to the event handler an
> indication
> whether or not the event was operator or program initiated.
> 
> -- 
> Derek Parnell
> Melbourne, Australia
> Skype name: derek.j.parnell

Derek,

I guess it could be done a number of ways, ie,
  1.  coder sets an index, and then *also* calls the w32HChange event,
      sometimes needing to use routine_id depending on where/when various
      routines are declared (and assuming the coder *knows* that this
      extra effort is required);
  2.  some kind of flag, as you said, to indicate "allow setIndex to
      trigger the w32HChange event" (would probably require re-code for IDE
      to allow setting that flag there, and coders would, again, need to
      be aware of the necessity to do so);
  3.  (I'm not sure what you mean by , "add into the parameter data to the 
       event handler  an indication
       whether or not the event was operator or program initiated"; isn't that
       what you indicate is essentially the case *now*, that if the program
       *user* clicks on a list, that *does* trigger w32HChange event, but
       if your internals act to do things to the list, perhaps add/delete,
       etc, those actions do NOT trigger w32HChange event?  Isn't that, or
       something *like* that what is inhibiting *coder* asking setIndex from
       having w32HChange event triggered?  Maybe I'm misunderstanding, 
       and wouldn't *that* be a surprise, heh heh heh!)  

  4.  best, I would think, would be to be able to separate *internal* list
      actions from triggering & re-triggeringw32HChange event, but something
      that I would *think* SHOULD trigger it, ie, if a *user* clicks on an
      item in the list, OR, if the coder wants something to happen AS IF
      the user clicked on an item, then both would trigger the w32HChange
      event handler.   But I don't know how hard this would be, nor if
      it's as much a reasonably expected default as it seems to me.

My basic feeling is that a coder would naturally assume that if *they* set
the index, that the result should be the same as if the *user* effected the
same by clicking on an item in the list, therefore let that happen, but I
*know* I may be missing one or two (dozen) things.

Now what do you think?  :)

Dan

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu