El problema está aqui:
Código Delphi
[-] With l do
Begin
SQL.Clear;
SQL.Add('SELECT IDCITA, p.Cedula, P.IDPACIENTE, P.nombre, p.apellido, p.TLFCEL, p.SEXO, p.FCHNACIMIENTO,');
SQL.Add(' FCHCITA, HORA, DURACION, IDAREA, IDESPECIALISTA,');
SQL.Add(' STATUSCITA, OBSERVACIONES');
SQL.Add('FROM CI_CITAS C, dg_pacientes P');
SQL.Add('Where p.idpaciente = c.idpaciente And FCHCITA = :FCHCITA AND IdAREA = :IDAREA');
ParamByName('FCHCITA').AsDateTime := tp.Fecha;
ParamByName('IDAREA').AsInteger := IdArea;
Open; tp.MostrarCitasDelDia(l); Close;
End;
Este es el ciclo crítico del Refresh (MostrarCitas) no se por que extraña razón al usar el debugger en la línea del Open; al presionar f8 o f7 en lugar de saltar a la siguiente línea (tp.MostrarCitasDelDia(c); ) salta otra vez al open; y de ahí en adelante sigue un comportamiento erratico.
Como se puede ver mis consultas están cerradas hasta tanto no se necesiten, (de hecho el código SQL lo coloque para el ejemplo pero se carga una sola vez en OnCreate);
Busqué eventos asociados a la DB, transaccion o query que pudieran cambiar la secuencia lógica pero NADA. ¿ Alguna idea ?
Nota: En otras ocaciones mi delphi ha tenido esos comportamiento erraticos pero generalmente se asociaban a eventos "inoportunos".
¿Hay alguna manera de forzar una sección de código para evitar que su ejecución sea interrumpida, algo como "DisableEvents"?
Por ahora no me quedo otra opción que "apagar" los eventos y usar una alarma (60seg) para refrescar automáticamente la información