Re: Win32Lib: setIndex not trigger onChange event?
- Posted by Dan Moyer <danielmoyer at prodigy.net> Mar 19, 2007
- 498 views
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