LPARAMETERS nKeyCode, nShiftAltCtrl LOCAL lcFilter, lcSetExact lcSetExact = SET('EXACT') IF THISFORM.m_DataKeyPress(nKeyCode,.F.) SET EXACT OFF IF THISFORM.p_viewtype = 1 SELECT refill SET FILTER TO INLIST(STATUS,0,1,4,5) && 4 Included so batch Rx's cant be refilled SET EXACT OFF lcFilter = IIF(NOT EMPTY(THISFORM.p_buffer),; THISFORM.p_previousdrugfilter + " AND UPPER(drug.name) = '" + ; ALLTRIM(UPPER(THISFORM.p_buffer)) + "' IN Rx",; THISFORM.p_previousdrugfilter + " IN Rx") SET FILTER TO &lcFilter GO TOP IN rx ELSE SELECT refill SET FILTER TO SELECT rx SET EXACT OFF lcFilter = IIF(NOT EMPTY(THISFORM.p_buffer),; "UPPER(drug.name) = '" + ; ALLTRIM(UPPER(THISFORM.p_buffer)) + "' IN Rx","") SET FILTER TO &lcFilter GO TOP IN rx ENDIF THISFORM.grdProfile.REFRESH() SET EXACT &lcSetExact *THISFORM.REFRESH ENDIFAnd here is the THISFORM.m_DataKeyPress event code....
LPARAMETERS nKeyCode, llSearchNumbersOnly LOCAL llRecJump llRecJump = .F. DO CASE CASE nKeyCode = 3 && Ctrl + C THISFORM.p_Buffer = "" THISFORM.cntActions.txtDrugFilter.VALUE = "" CASE nKeyCode = 13 && Enter NODEFAULT THISFORM.grdProfile.SETFOCUS CASE nKeyCode = 32 && Space THISFORM.p_Buffer = THISFORM.p_Buffer + " " llRecJump = .T. CASE (nKeyCode = 7) OR (nKeyCode = 127) && Backspace or Del IF LEN(THISFORM.p_Buffer) > 0 THISFORM.p_Buffer = LEFT(THISFORM.p_Buffer,(LEN(THISFORM.p_Buffer) - 1)) llRecJump = .T. ENDIF CASE BETWEEN(nKeyCode,33,126) && Printable chars IF BETWEEN(nKeyCode,48,57) && 0 - 9 THISFORM.p_Buffer = THISFORM.p_Buffer + CHR(nKeyCode) llRecJump = .T. ELSE IF !llSearchNumbersOnly THISFORM.p_Buffer = THISFORM.p_Buffer + CHR(nKeyCode) llRecJump = .T. ENDIF ENDIF ENDCASE RETURN llRecJumpMaybe this will help.
>LPARAMETERS nKeyCode, nShiftAltCtrl > >if nKeyCode = 13 > nodefault > thisform.grid1.SetFocus() >endif >>