Re: Win32lib focus problem
- Posted by Derek Parnell <ddparnell at bigpond.com> Dec 05, 2004
- 451 views
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