Вся проблема была оказывается в:
Всегда было: TimerEstimate.enabled=true
Код:
procedure TFmMelody.TimerEstimateTimer(Sender: TObject);
begin
if LbMelody.Count*(LbMelody.ItemIndex+1)<>0 then
Begin
TimeOfPreListen:=TimeOfPreListen+Round(TimerEstimate.Interval/1000); // Увеличиваем время затраченное на просмотр.
LbEstimate.Caption:='Просмотрено '+IntToStr(Round((LbMelody.ItemIndex+1)*100/LbMelody.Count))+'% мелодий. Вы ещё будете просматривать и прослушивать '+GetLengthOfMelodyInMinSec(Round(TimeOfPreListen*LbMelody.Count/(LbMelody.ItemIndex+1)-TimeOfPreListen))+' (оценочно), прослушиваете: '+GetLengthOfMelodyInMinSec(TimeOfPreListen);
End;
end;
теперь оценку времени оставшегося до окончания прослушивания списка мелодий включаю только при Form.Activate, а выключаю при Form.FormCloseQuery