in my <cUserFunction> which is choiceUdf, when I return 3 it hangs, if I return 2 it works fine. please check below code for your reference.If this gets solve my most of problem is been solved.
Thanks
***********
FUNCTION CHOICEUDF
PARAMETER XMODE,XNUM,XPOS
PUB[CHOICENUM]=XNUM
PUB[CHOICEROW]=XPOS
*
PRIVATE cEXTS := ""
*
DO CASE
CASE XMODE < 4
*
IF TYPE('UPDTWHAT')<>'U'
IF .NOT. SYSHELP('ICB',FIELD(PUB[CHOICENUM]))
ICB('Arrow Keys To Scroll <'+XENTER+'> to Select <ESC> to Exit')
ENDIF
ENDIF
*
DO CASE
CASE LASTKEY()=27
RETURN 0
CASE LASTKEY()=9 .OR. LASTKEY()= 43 .OR. LASTKEY()=45 .OR. LASTKEY()=42 .OR. LASTKEY()=32 && tab + - *
#IFDEF XB_RUN
IF UPPER(ALLTRIM(ZTL)) == "FILTERS" .OR. UPPER(ALLTRIM(ZTL)) == "HEADERS"
RETURN 1
ENDIF
*
IF UPPER(ALLTRIM(ZTL)) == "LINKS" .AND. LASTKEY()=32
RETURN 1
ENDIF
//
IF MODULE=='XBWORD'
cEXTS := "*."+EXT
IF cEXTS $ UPPER(ALLTRIM(ZTL))
RETURN 1
ENDIF
ENDIF
//
#ELSE
RETURN 1
#ENDIF
CASE LASTKEY() >=48 .AND. LASTKEY() <= 122
IF LASTKEY()=99 .OR. LASTKEY()=67 // added GK for clearing paste buffer 02/01/96
IF TYPE('lPASTEACT') <> 'U'
BELL()
ICBKEY('Clear Paste Buffer ? ;; Confirm (Y/N) ; Default is No.')
IF TXX == 'Y'
AFILL(CBUFFELE,NIL)
lPASTEACT := .F.
KEYBOARD CHR(27)
RETURN 2 // BY GK FROM 3 TO 2 CHECKED OK WORKING FINE.
ELSE
RETURN 2
ENDIF
ENDIF
ENDIF
* additions complete
IF AUTORETURN
KEYBOARD CHR(13)
ELSE
KEYBOARD ' '
ENDIF
RETURN 2 // BY GK FROM 3 to 2
CASE LASTKEY()=13
RETURN 1
CASE LASTKEY()=287
QUICKSRCH()
RETURN 1
OTHERWISE
RETURN 2
ENDCASE
*
OTHERWISE
RETURN 2
*
ENDCASE
RETURN 2
**********