Ver Mensaje Individual
  #7  
Antiguo 19-10-2010
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Reputación: 20
mcs Va por buen camino
Cita:
Empezado por Ñuño Martínez Ver Mensaje
¡Pues claro que falla, jomío! ¿A quién se le ocurre utilizar un "timer" para leer la posición del ratón? Si es que...

Después de la bronca, te recomiendo que replantees la aplicación. Casi es mejor que utilices un bucle (cuasi)infinito para hacer esto. Lo que no tengo muy claro es dónde colocarlo, pero sería tal que así:

Código Delphi [-]TMiForm = CLASS (TFORM) { ... blablabla ... } PRIVATE (* Marca de final. Poner a FALSE en "OnCreate" y a TRUE en "OnClose". *) Terminar: BOOLEAN; { ... blablabla ... } (* El meollo de la cuestión. *) PROCEDURE BuclePrincipal; BEGIN REPEAT coordenadax:=mouse.curPos.X; coordenadax:=mouse.curPos.X; Application.ProcessMessages; UNTIL Terminar; END;


Como digo, el problema aquí reside en desde dónde llamar al método "BuclePrincipal".
No lo entiendo... Dónde está el problema en usar un timer para leer las coordenadas del mouse? Si se deja un intervalo "generoso" (seguro que con 100ms es suficiente), no debe haber ningún problema.

Por lo que entiendo, el problema lo tiene cuando se cierra la sesión y no finaliza el programa. Por lo que imagino, lo que ocurre es que el programa de LuisAlf no puede acceder a los datos del mouse, porque este está deshabilitado para la sesión o algo similar.

Por tanto, la solución sería capturar la salida de sesión (no sé como), y si se sale de sesión, parar de leer las coordenadas. O quizá con un bloque try..finally se solucionaría todo...
Responder Con Cita