Показать сообщение отдельно
  #8  
Старый 05.03.2013, 12:28
U.B.M. U.B.M. вне форума
Новичок
 
Регистрация: 06.10.2011
Сообщения: 94
Версия Delphi: Delphi 7
Репутация: 13
По умолчанию

Цитата:
Сообщение от icWasya
Во первых

Код:
if ComboBox1.ItemIndex = 0 then ..
else
if ComboBox1.ItemIndex = 1 then ..
Ну и если к декабрю прибавить 11, то EncodeDate вылетит с ошибкой.

Нужно использовать функции типа IncMonth

последнее лучше так уж тогда
Код:
if ComboBox1.items.Strings[13]='12 месяцев' then DateTimePicker3.Date := EncodeDate(Y+1 , M, D-1);
end;

Для N месяцев (N=1..11)
Код:
then DateTimePicker3.Date := EncodeDate(Y + (M+N) div 12, (M+N) mod 12, D-1)

соответственно, если нынешняя дата, скажем так, 11 месяц, то через 11 месяцев будет
(11+11) mod 12 = 22 mod 12 = 10 месяц
(11+11) div 12 = 22 div 12 = 1, т.е переход в следующий год.

Как-то так.
Ответить с цитированием