>>>>I have a program running in a continous loop on purpose. I want a button on my form to act almost like "Pressing the ESC key" to interrupt the program that's in the continuous loop.
>>>>
>>>>Is there a way to do it without getting the VFP error dialog box that says, "Cancel, Suspend, Ignore, etc." when you press the ESC key?
>>>>
>>>>I guess I can use the CHR() with ESC character code to cause the interrupt to occur, but I don't want the VFP error that follows. Can I trap the error before it is displayed and not show it?
>>>>
>>>>Thanks for your help in The Great ESC.
>>>>
>>>>Your truly,
>>>>Steve "McQueen" Kramer
>>>
>>>Try this
>>>
>>>lIsRun = .T.
>>>DO WHILE lIsRun
>>> SCAN
>>> IF INKEY() = 27
>>> lIsRun = .F.
>>> ENDIF
>>>... my main code is here
>>> ENDSCAN
>>>ENDDO
>>>
>>
>>This has the same not-so-subtle bug as my example; if the table is empty, the INKEY() is never evaluated.. In addition, the scan continues to EOF if the Esc key is pressed, rather than aborting immediately.
>>
>>>Sincerely,
>
>Try modified version:
>
>lIsRun = .T.
>DO WHILE lIsRun
You'd need a GO TOP here, since the WHILE clause doesn't have SCAN move the pointer to the top - it assumes you're positioned properly and want to continue from the current record pointer position - which means that the second and subsequent passes will start at EOF.
> SCAN While lIsRun
> IF INKEY() = 27
> lIsRun = .F.
> ELSE
> ... my main code is here
> ENDIF
> ENDSCAN
> lIsRun = (Inkey()#27)
>ENDDO