Page 1 of 1
Detener Aplicacion
Posted: Thu Mar 27, 2008 6:46 pm
by colthop
Hola amigos:
Me gustaria saber si se puede detener la ejecucion de un codigo hasta que termine una llamada.
Por ejemplo:
Procedure abajo()
quitmenu()
varidato()
Return (NIL)
Lo que quiero es que no siga hasta que termine y regrese de varidato().
Un saludo
Carlos
Posted: Thu Mar 27, 2008 8:04 pm
by Raymundo Islas M.
Carlos :
Prueba a condicionar la funcion VariDato()
IF !VariDato()
Return NIL
ENDIF
Static Function VariDato()
LOCAL ...
bla
bla
bla
Return( lVarLogica )
A la variable lVarLogica le asignas .T. si quieres que siga con el proceso hasta el final y .F. si quieres que se detenga y regrese.
Todo esto, dependiendo de lo que estes haciendo.
Saludos
Posted: Sat Mar 29, 2008 11:40 am
by colthop
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)