Desde que actualic茅 la versi贸n que ten铆a 2.6 a la nueva versi贸n 8.04 me encuentro solucionando problemas, el problema que se produce ahora es que no se ejecuta todo el c贸digo que tengo escrito en determinadas partes del programa, por ejemplo:
El codigo que adjunto (que funcionaba con la versi贸n anterior) es parte de la funci贸n de control del teclado cuando se est谩 editando un tcbrowse
al recibir la pulsaci贸n enter entra en modo edici贸n, si se pulsa ESCAPE, se deber铆a salir del modo edici贸n. Se ejecuta la funci贸n FINEDIT pero no se completa y vuelve a entrar en modo edici贸n como si se volviese a pulsar la tecla ENTER de hecho la funci贸n se vuelve a ejecutar y recibe de nuevo el codigo de la tecla enter.
He descubierto que si ejecuto las lineas que activan tres botones, no se produce el mal funcionamiento.
De hecho provoco un error en la funci贸n que no rompe la ejecuci贸n del programa hasta que pulso ENTER si pulso ESCAPE se contin煤a ejecutando la edici贸n de la celda.
Gracias, un saludo
STATIC FUNCTION MiKeyDown( nKey, nFlags, oAlbaran )
....
IniEdit( oAlbaran )
oAlbaran:lNoSinFocus := .T.
::Setfocus()
uTemp = Eval( ::aColumns[ ::nColAct ]:bData )
If ::nColAct == DLVDESCRI
lAutoF2(.T.)
EndIf
dEPURA("EditCol1")
lSalida := ::lEditCol( ::nColAct, @uTemp, cPicture,,CLR_BLACK, CLR_YELLOW )
dEPURA("EditCol2")
Depura(lSalida, "::lEditCol")
Depura("1")
If ::nColAct == DLVDESCRI
lAutoF2(.F.)
EndIf
oAlbaran:lNoSinFocus := .F.
nKey := 0
If lSalida
If !::lNoActuliz
Eval( ::aColumns[ ::nColAct ]:bData, uTemp )
endif
::DrawSelect()
nKey := VerificaCol( oAlbaran )
If nKey != 0
Return FinEdit( oAlbaran, nKey, @nP, NOKEY )
EndIf
If oAlbaran:nEstado == DALTAS .and. ::nColAct = DLVIMPORT
oAlbaran:nEstado := DCONSU
Return FinEdit( oAlbaran, VK_DOWN, @nP, NOKEY )
endif
Return FinEdit( oAlbaran, NIL, @nP, nKey )
else
Depura("3")
if oAlbaran:nEstado == DMODIF
Depura("4")
DPAG1
AnulaModif(Self, oAlbaran )
::SetFocus()
endif
If ::lColAnt // Si pulsa arriba cambia a la columna anterior
Depura("5")
::lColAnt := .F.
::PrevColAct()
If ::nColAct >= DLVCODART
nKey := VK_RETURN
endif
Return FinEdit( oAlbaran, nKey, @nP, NOKEY )
Endif
If oAlbaran:nEstado == DALTAS
if ::nColAct == DLVCODART
nKey := VK_UP
else
nKey := VK_RETURN
EndIf
Return FinEdit( oAlbaran, nKey, @nP, NOKEY )
endif
endif
Depura("8")
Depura(nkey, "Nkey")
::SetFocus()
//Return FinEdit( oAlbaran, nKey, @nP, NOKEY )
xT := FinEdit( oAlbaran, nKey, @nP, NOKEY )
Depura("9")
Depura(xt, "xt")
xt=xt+"error"
Return xt
....
//----------------------------------------------------------------------------//
STATIC FUNCTION IniEdit( oAlbaran )
OMTERMI:Disable()
OMNUEVO:Disable()
OMABAJO:Disable()
DDETALVENT:lProcess := .T.
RETURN NIL
//----------------------------------------------------------------------------//
STATIC FUNCTION FinEdit( oAlbaran, nKey, nP, nKeyRet )
//Depura("FinEdit1")
OMTERMI:Enable() // btnbmp
OMNUEVO:Enable() // btnbmp
OMABAJO:Enable() // btnbmp
DDETALVENT:lProcess := .F.
//Depura("FinEdit2")
DDETALVENT:SetFocus()
//Depura("FinEdit3")
SYSREFRESH()
//Depura("FinEdit4")
//Depura(nKey, "FinEdit-nkey")
If nKey != NIL
DDETALVENT:Mensaje(nKey)
eNDiF
nP--
//Depura(nP, "np")
//syswait(1)
//Depura("FinEdit9")
//Depura("FinEdit9"*23)
RETURN nKeyRet
//----------------------------------------------------------------------------//