tengo un browse el cual al presionar la tecla ENTER entra a un dialogo
pero resulta que dentro del dialogo si se presiona el boton salir vuelve a ejecutarse nuevamente, como si hubiera presionado enter nuevamente
mi pregunta es como limpiar el buffer del teclado...
Mira aparentemente está todo bien.
A mi me funciona perfecto y lo único que se me ocurre es que tu proceso no esté ingresando nunca al if que utilizas para poner el foco al salir de la funcion.
if Valtype( oBrw ) = "O"
oBrw:Refresh()
oBrw:SetFocus()
endif
Prueba poniendo un MsgInfo() dentro del If para ver si está ingresando.
La verdad es lo único que se me ocurre. Debería funcionar sin ningún problema.
Saludos, Esteban
METHOD KeyDown( nKey, nFlags ) CLASS TWBrowse
local lRefresh
if ::bKeyDown != nil
Eval( ::bKeyDown, nKey, nFlags, Self )
endif
do case
case nKey == VK_UP
::cBuffer:= ""
::GoUp()
bla...bla...
patricio este el metodo keydown que tengo en la clase, probablemente tienes la ver no mas actual de la 17
METHOD KeyDown( nKey, nFlags ) CLASS TWBrowse
local lRefresh
do case
case nKey == VK_UP
::cBuffer:= ""
::GoUp()
case nKey == VK_DOWN
::cBuffer:= ""
::GoDown()
case nKey == VK_LEFT
::cBuffer:= ""
If ::GoLeft()
::Refresh()
EndIf
case nKey == VK_RIGHT
::cBuffer:= ""
If ::GoRight()
::Refresh()
EndIf
case nKey == VK_HOME
::cBuffer:= ""
::GoTop()
case nKey == VK_END
::cBuffer:= ""
::GoBottom()
case nKey == VK_PRIOR
::cBuffer:= ""
if GetKeyState( VK_CONTROL )
::GoTop()
else
::PageUp()
endif
case nKey == VK_NEXT
::cBuffer:= ""
if GetKeyState( VK_CONTROL )
::GoBottom()
else
::PageDown()
endif