Базовая диагностика включает в себя помещение подозрительного кода в попытку, кроме блока с основным ShowMessage в обработчике исключений.
try
if YesNoMsg('Delete?') then
begin
..........
**F5.Click;**
end;
except
on E: Exception do
ShowMessage(E.ClassName + #13#10 + E.Message);
end;
Если вам не нравится ShowMessage, у вас всегда может быть TMemo в форме, к которому вы можете добавить текст
Memo1.Lines.Add('2 records deleted successfully, about to click F5 :-) ');
Кроме того, защитное программирование предлагает вам проверить результат предыдущей строки кода, прежде чем переходить к следующей инструкции (особенно, если это подпрограмма, которая удаляет несколько записей). Вы должны превратить его в подпрограмму, которая возвращает как минимум 2 различных возможных результата, плюс собственный обработчик исключений (по крайней мере, чтобы вы могли поместить в него точку останова, когда захотите), а не просто заключать ее в функцию, которая возвращает True в конце.
Кроме того, я бы переместил эту строку F5.Click в процедуру с именем DeleteSomething и вызвал бы ее вместо этого.
Если ничего не помогает, запишите на нем живые дневные огни. Когда отладчик не может помочь, регистрация - следующая лучшая вещь.