Вам не нужен MonthCalendar, чтобы сделать это. Часть TDateTime к RHS десятичной точки фактически является «номером дня», поэтому, если вы вычтете одно из них из другого, вы найдете «дни между». Примените Trun c к обоим, чтобы отбросить части времени суток. См. http://docwiki.embarcadero.com/Libraries/Rio/en/System.TDateTime для определения TDateTime.
Так, например, даны
var
D1,
D2 : TDateTime;
DaysBetween : Integer;
, а D1 и D2 - это два TDateTimes (которые можно ввести, если вы wi sh с использованием TMonthCalendar), затем
DaysBetween := Trunc(D2) - Trunc(D1);
При вызове встроенной функции Trunc
отбрасывается дробная часть времени TDateTime (то есть partr) справа от десятичной запятой), так что 23:59 в один день и 00:01 в следующий рассчитываются как один день. Это может или не может быть желаемый результат, в зависимости от вашего приложения, поэтому я предложил рассчитать его самостоятельно, а не использовать встроенную функцию DaysBetween.