Re: Win32Lib 0.57.1 onChange bug (test code)

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

The problem here is that a sub-optimal design decision was made somewhere
along the line to have the Change event fire for both CBN_EDITCHANGE and
CBN_SELCHANGE messages. The issue is the CBN_EDITCHANGE is sent to the
program *after* the screen has been updated with the user's change to the
edit box, while CBN_SELCHANGE is send *before* the edit box is updated. Thus
getText() routine returns different things depending on which message
triggered the Change event handler. There is no easy way that the
application can know which caused the event to fire off. I'll have to think
about how to fix this issue without breaking too many programs. Any
suggestions anyone?


----- Original Message -----
From: "Brian Broker" <bkb at cnw.com>
To: "EUforum" <EUforum at topica.com>
Sent: Tuesday, April 16, 2002 5:59 AM
Subject: Win32Lib 0.57.1 onChange bug (test code)


>
> Here is the test program I'm working with.  It is interesting to note
> that the 'onChange' event seems to be working OK while you are typing in
> a new entry into the Combo box but is reporting the previous value when
> selecting items.
>
> ------------------------------------
> include win32lib_full.ew
> without warning
>
> constant
>    Win = create(Window,"test",0,Default,Default,200,200,0),
>    Cmbo = create(Combo,"",Win,10,10,100,100,0),
>    Stat = create(StatusBar,"",Win,0,0,0,0,0),
>    Btn  = create(DefPushButton,"Enter",Win,130,10,40,20,0)
>
> procedure onClick_Btn()
>   sequence ctxt
>
>   ctxt = getText(Cmbo)
>   if length(ctxt) then
>      addItem(Cmbo,ctxt)
>   end if
> end procedure
> onClick[Btn] = routine_id("onClick_Btn")
>
> procedure onChange_Cmbo()
>    --doEvents(Win)
>    setText(Stat,getText(Cmbo))
> end procedure
> onChange[Cmbo] = routine_id("onChange_Cmbo")
>
> procedure onOpen_Win()
>    addItem( Cmbo, {"Oranges", "Pears", "Bananas", "Mangoes" } )
> end procedure
> onOpen[Win] = routine_id("onOpen_Win")
>
> WinMain(Win,Normal)
> ------------------------------------
>
> -- Brian
>
>
> Brian Broker wrote:
> > Hi Mike,
> >
> > I don't know if anybody else is investigating this issue but I'm doing
> > what I can to figure out what is going on.
> >
> > All I can see is that the onChange is being processed before the text is
> >
> > actually changed in the control.  Adding a "doEvents(Win)" at the
> > beginning of my onChange routine does not change the behavior.
> >
> > If anybody else is investigating, let us know what you have discovered.
> >
> > I'd rather not waste time on a known issue.
> >
> > Thanks,
> > Brian
> >
> > Michael wrote:
> > > Upgraded from version 0.45r
> > > Control type: SortedCombo
> > > Symptom:
> > >   When selecting an item from the dropdown, key =
getText(comboControl)
> > > is called to get the new value of the dropdown.  However, getText
> > > returns the prior value of comboControl, which is only updated after
the
> > > onChange routine (which contains the call to getText) is executed.  I
> > > cannot tell where in the new version of win32lib this behavior is
being
> > > applied.  It works fine under 0.45r.  Any suggestions?
> > >
> > > Michael J. Sabal
> > >
> > >
>
>
>

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

Search



Quick Links

User menu

Not signed in.

Misc Menu