Re: Win32lib focus problem

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

Alexander Toresson wrote:
> 
> Greg Haberek wrote:
> > 
> > > }}}
<eucode>
> > > 
> > > without warning
> > > include win32lib.ew
> > > integer main, mle, msgedit
> > > 
> > > main = create(Window, "Click in the one-line text-edit and press enter",
> > > 0, 200, 200, 500, 300, 0)
> > > 
> > > mle = create(MleText, "", main, 0, 0, 450, 100, 0)
> > > msgedit = create(EditText, "", main, 0, 150, 450, 23, 0)
> > 
> > I'm not sure why this happens, but add this, I tested it and it works.
> > 
> > }}}
<eucode>
> > procedure msgedit_keypress( integer self, integer event, sequence params )
> > 
> >     if params[1] = VK_RETURN then
> >         -- ignore the Enter key
> >         returnValue(-1)
> >     end if
> > 
> > end procedure
> > setHandler( msgedit, w32HKeyPress, routine_id("msgedit_keypress") )
> > </eucode>
{{{

> > 
> > > WinMain(main, Normal)
> > > 
> > > </eucode>
{{{

> > 
> > ~Greg
> > 
> 
> I tried using that technique. However, I was still setting the focus to
> the msgedit after that, having the effect of activating the mle.
> Your solution works wonderfully
> 

If you look up the documentation for EditText you will find ...

Note that when the user presses the Return Key, the focus will move to 
the next control in the focus order. To prevent this from happening, you
need to set a w32HKeyPress handler that sets the return value to -1 when
a VK_RETURN key without shifts is received.

procedure IgnoreReturn(integer self, integer event, sequence parms)
    if parms[1] = VK_RETURN and parms[2] = 0 then
        returnValue(-1)
    end if
end procedure
setHandler(myEditField, w32HKeyPress, routine_id("IgnoreReturn"))

--------------------

I put this in because the common thing that people do when pressing
Return in an Edit field is to think that they have finished with that
field and now wants to deal with the next field. It is in effect the
same as pressing Tab in the field.

But now that I can see that it could be awkward to change this behaviour
in some circumstances, I will add a new property to controls so that
you can use this behaviour (or not) on a per control basis.  


-- 
Derek Parnell
Melbourne, Australia

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

Search



Quick Links

User menu

Not signed in.

Misc Menu