Hola Raimundo gracias por tu respuesta pero eso no me saca del atolladero pero si me ha dado una idea para poder solucionar mi problema.
Mi problema es:
Un objeto (oDlgVar) le pinto en la ventana, contiene un get que pide, segun sea una variable (oFil = 1, 2, 3, 4, 5 ó 6), seis diferentes variables (oVar01, oVar02, oVar03, oVar04, oVar05 ó oVar06) en seis columnas distintas (1, 10, 15, 20, 25 ó 30). Para cambiar de una columna a otra utilizo dos funciones derecha e izquierda, que lo que hacen es:
1º Eliminar oDlgVar.
2º Cambiar oFil uno mas o uno menos.
3º Volver a poner oDlgVar con los nuevos valores.
Esto funciona bien si lo haces sin mucha prisa, me explico, si lo haces normalmente pero por ejemplo si lo que haces es pulsar la tecla derecha (que invoca a la funcion derecha) y dejerla pulsada sin soltarla, empieza a correr a la derecha el campo pero hay un momento que no elimina el objeto oDlgVar y queda pintado dos veces y si sueltas y vuelves a pulsar tres y asi hasta poder ver los seis.
Donde utilizo esto es en un diario de apuntes y cuando cambias de apunte pone los datos que corresponden al nuevo apunte pero si pasas por encima de una posicion que se habia quedado vuelve a pintar el dato del anterior apunte.
Mi pregunta es si existe alguna manera de comprobar si existe el objeto y esperar a que exista para eliminarlo.
por ejemplo:
en vez de poner oDlgVar:End() para borrar el objeto llamar a una función QuitObje() y sea:
STATIC FUNCTION QuitObje()
do while .T.
if (existe el objeto)
exit
else
sysrefresh()
endif
loop
enddo
oDlgVat:End()
Return(nil)