Hola a todos. Estoy realizando una aplicación que muestra cuestionarios en un terminal con pantalla táctil. Utilizo unos Timers para mostrar avisos cada cierto tiempo si no se pulsa nada( no hay teclado en el terminal, por lo que sólo se debería tener en cuenta las pulsaciones del ratón). En este foro me dieron una solución. En principio funciona bien pero hay ocasiones en que falla y no se muestran los avisos.Pienso que tal vez sea pq los valores que hay entre WM_MOUSEFIRST y WM_MOUSELAST incluyan el movimiento del ratón o algún otro evento que se produzca en mi máquina aquí en la oficina.Tampoco sé si una pantalla táctil detecta el movimiento del ratón. Aquí pongo el código:
Código Delphi
[-]
procedure Tfbaseven.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if (Msg.message >= WM_MOUSEFIRST) and (Msg.message <= WM_MOUSELAST) then
begin
TimerOut.Enabled := False;
TimerOut.Interval := Pregunta.TimeOut * 1000;
TimerOut.Enabled := True;
TFMaencven(Owner).TimerCuest.Enabled := False;
TFMaencven(Owner).TimerCuest.Interval := FCuestionario.TiempoMaxExpera * 1000;
TFMaencven(Owner).TimerCuest.Enabled := True;
end;
end;
procedure Tfbaseven.TimerOutTimer(Sender: TObject);
var
Estado: TEstado;
begin
TimerOut.Enabled := False;
TimerOut.Interval := Pregunta.TimeOut * 1000;
try
...
Estado := TEstado(FCuestionario.GrafoNavegacion.EstadoActual);
if TFBaseven(Estado.Frame).Pregunta.ID = Estado.id then
if TFBaseven(Estado.Frame).Pregunta.Aviso <> nil then
if not Assigned(FAviso) then
try
FAviso := TFAviso.Create(Self,Pregunta.Aviso);
FAviso.ShowModal;
Finally
FreeAndNil(FAviso);
end;
finally
TimerOut.Enabled := True;
end;
end;
Esto me produce que en ocasiones no se muestren los avisos.Si alguien me puede dar información de hacerlo de una manera mejor o de explicarme por qué puede fallar estaría muy agradecido. Un saludo y gracias por adelantado.