Page 1 of 1

bKeyDown-RETURN is not processed, another event may be used?

PostPosted: Thu Apr 09, 2009 12:53 pm
by xVar
Hi!

I try write code for event when RETURN key is pressed on window ( window have not any input elements ) .
In bKeyDown events every key is processed , but RETURN is not.


What event block may be used for this?

Reagards
Andrej


It is my code:


function Main()
LOCAL cSearch:=""

DEFINE WINDOW oWnd TITLE "KEYTEST"
@ 1,1 SAY oSay PROMPT cSearch SIZE 80, 30


oWnd:bKeyChar = { | nKey | Search( nKey, @cSearch ),;
oSay:Refresh() }

oWnd:bKeyDown = { | nKey | Search( nKey, @cSearch ),;
oSay:Refresh() }

ACTIVATE WINDOW oWnd
return nil


function Search( nKey, cSearch )

if nKey == 8
cSearch := SubStr( cSearch, 1, Len( cSearch ) - 1 )
elseif nKey==27
cSearch :=""
else
cSearch += Upper( Chr( nKey ) )
endif
MsgInfo(str(nKey))

return nil

Re: bKeyDown-RETURN is not processed, another event may be used?

PostPosted: Thu Apr 09, 2009 9:10 pm
by Enrico Maria Giordano
You can use the VALID clause or bLostFocus codeblock instead, and eventually test the pressed key using GetKeyState().

EMG

Re: bKeyDown-RETURN is not processed, another event may be used?

PostPosted: Thu Apr 09, 2009 10:48 pm
by Antonio Linares
Andrej,

As you have created a child control, then those events get routed to that child control.

If you comment out this line:

// @ 1,1 SAY oSay PROMPT cSearch SIZE 80, 30

then the main window should properly process those events.

You can use oWnd:Say( nRow, nCol, cText, ... ) to paint on the window instead of using a SAY control there.

Re: bKeyDown-RETURN is not processed, another event may be used?

PostPosted: Mon Apr 20, 2009 7:09 am
by xVar
Thanks!
I will try this.
Andrey