Nice implementation JPP ! (I wish t know your real name
) I thought was not possible to do it... Thank you to share your experience in all around for events propierties.
Just for good understanding for rest of colleagues I make a demo after changings with ByPass in H_WINDOWS.PRG source lib file:
Code: Select all
#include <hmg.ch>
#define DO_EVENT Nil
#define NO_EVENT 1
#define WM_MOUSEMOVE 512 // 0x0200 // ok
#define WM_LBUTTONDOWN 513 // 0x0201 // ok
#define WM_LBUTTONUP 514 // 0x0202 // ok
#define WM_RBUTTONDOWN 516 // 0x0204 // ok
#define WM_RBUTTONUP 517 // 0x0205 // ok
#define WM_MOUSEWHEEL 522 // 0x020A // ok
/*
#define WM_KEYDOWN 256 // 0x0100
#define WM_KEYUP 257 // 0x0101
#define WM_MOUSEHOVER 673 // 0x02A1
#define WM_MOUSELEAVE 675 // 0x02A3
*/
Function Main
Private cMsg
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 430 ;
HEIGHT 500 ;
TITLE 'Demo Events' ;
MAIN NOSIZE
DEFINE STATUSBAR FONT "Courier New" SIZE 9
STATUSITEM PadC("",75)
END STATUSBAR
@ 10,10 GRID Grid_1 ;
WIDTH 400 ;
HEIGHT 330 ;
HEADERS {'Column 1','Column 2','Column 3'} ;
WIDTHS {120,120,120} ;
VIRTUAL ;
CELLNAVIGATION ;
ITEMCOUNT 1000 ;
ON QUERYDATA QueryTest()
@ 360, 50 CHECKBOX Check_1 CAPTION 'Switch behaviour' WIDTH 150
@ 360, 250 TEXTBOX Text_1 ;
VALUE "" ;
TOOLTIP 'Just Setting Focus and test'
@ 400,10 LABEL Label_1 VALUE "Test with: keys Down and Up | Mouse Wheel | Mouse Left Btn | Mouse Right Btn" WIDTH 400 HEIGHT 60 FONT 'Arial' SIZE 8
@ 420,60 LABEL Label_2 VALUE "Mouse moving | Switch Check Box | Set Focus in TextBox" WIDTH 400 HEIGHT 60 FONT 'Arial' SIZE 8
END WINDOW
CREATE EVENT PROCNAME Check_Event_ByPass() HwND form_1.GRID_1.HANDLE
// CREATE EVENT PROCNAME Check_Event_Form()
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return Nil
Function Check_Event_Form()
Local WM_:=EventMSG()
IF EventHWND() == Form_1.HANDLE
DO CASE
CASE WM_ == WM_KEYDOWN
msgbox("key_down")
CASE WM_ == WM_MOUSEWHEEL
msgbox("Mouse wheel")
CASE WM_ == WM_LBUTTONDOWN
msgbox("Mouse lbtn Down")
CASE WM_ == WM_RBUTTONDOWN
msgbox("Mouse Rbtn Down")
ENDCASE
ENDIF
Return Nil
Function Check_Event_ByPass()
Local nMsg := EventMsg()
Local xRet := DO_EVENT
DO CASE
CASE nMsg == WM_KEYUP
cMsg:="key_up"
xRet:=NO_EVENT
CASE nMsg == WM_KEYDOWN
cMsg:="key_down"
xRet:=NO_EVENT
CASE nMsg == WM_MOUSEWHEEL
cMsg:="Mouse wheel"
xRet:=NO_EVENT
CASE nMsg == WM_MOUSEMOVE
cMsg:="Mouse move"
xRet:=NO_EVENT
CASE nMsg == WM_LBUTTONDOWN
cMsg:="Mouse lbtn Down"
CASE nMsg == WM_RBUTTONDOWN
cMsg:="Mouse Rbtn Down"
ENDCASE
If GetProperty("Form_1","Check_1","Value")=.T.
xRet:=If(xRet==DO_EVENT,NO_EVENT,DO_EVENT)
Endif
Form_1.StatusBar.Item(1):=cMsg
Return xRet
Procedure QueryTest()
This.QueryData := Str ( This.QueryRowIndex ) + ',' + Str ( This.QueryColIndex )
Return Nil
Nice work jpp and thanks. I hope all of you will enjoy it !
I also wish to ask to Dr. Soto if this jpp implementation:
Code: Select all
*-- Deb Jpp
ELSEIF AT("BYPASS", UPPER( EventGetPROCNAME (nIndex))) > 0
lProcessMessage := .T.
*-- Fin Jpp
Could be added at H_WINDOWS.PRG source lib file. What do you think about Claudio ?