Para chequear que estás conectado, quizás deberías hacer algo en la base de datos, dentro de un try ... except.
Por ejemplo
QueryDummy es un query que hace algo simple
Código SQL
[-]select count(*) from tabla
Código Delphi
[-]procedure TfrmPrincipal.Timer1Timer(Sender: TObject);
begin
try
with QueryDummy do
begin
if no Transaction.InTransaction do Transaction.StartTransaction;
ExecQuery;
Transaction.Commit;
end;
except
if cn.Connected then
cn.Connected := False;
if not cn.Connected then
cn.Connected := True;
end;
end;