|
#1
|
||||
|
||||
Начинающие
Здравствуйте!подскажите пож-та что в коде не правильно?
Код:
if ComboBox1.items.Strings[1]='10 дней' then DateTimePicker3.Date:=DateTimePicker3.Date + 10 else if ComboBox1.items.Strings[2]='1 месяц' then DateTimePicker3.Date := EncodeDate(Y , M+1, D-1) else if ComboBox1.items.Strings[3]='2 месяц' then DateTimePicker3.Date := EncodeDate(Y , M+2, D-1) else if ComboBox1.items.Strings[4]='3 месяц' then DateTimePicker3.Date := EncodeDate(Y , M+3, D-1) else if ComboBox1.items.Strings[5]='4 месяц' then DateTimePicker3.Date := EncodeDate(Y , M+4, D-1) else if ComboBox1.items.Strings[6]='5 месяцев' then DateTimePicker3.Date := EncodeDate(Y , M+5, D-1) else if ComboBox1.items.Strings[7]='6 месяцев' then DateTimePicker3.Date := EncodeDate(Y , M+6, D-1) else if ComboBox1.items.Strings[8]='7 месяцев' then DateTimePicker3.Date := EncodeDate(Y , M+7, D-1) else if ComboBox1.items.Strings[9]=8 'месяцев' then DateTimePicker3.Date := EncodeDate(Y , M+8, D-1) else if ComboBox1.items.Strings[10]='9 месяцев' then DateTimePicker3.Date := EncodeDate(Y , M+9, D-1) else if ComboBox1.items.Strings[11]='10 месяцев' then DateTimePicker3.Date := EncodeDate(Y , M+10, D-1) else if ComboBox1.items.Strings[12]='11 месяцев' then DateTimePicker3.Date := EncodeDate(Y , M+11, D-1) else if ComboBox1.items.Strings[13]='12 месяцев' then DateTimePicker3.Date := EncodeDate(Y , M+12, D-1); end; |
#2
|
||||
|
||||
17-ую строчку замени на:
Код:
if ComboBox1.items.Strings[9]='8 месяцев' then DateTimePicker3.Date := EncodeDate(Y , M+8, D-1) Пишу программы за еду. __________________ |
#3
|
||||
|
||||
все равно не работает(
|
#4
|
||||
|
||||
Это что вообще за изврат?
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
||||
|
||||
Цитата:
Пишу программы за еду. __________________ |
#6
|
||||
|
||||
Цитата:
Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#7
|
|||
|
|||
Во первых
Код:
if ComboBox1.ItemIndex = 0 then .. else if ComboBox1.ItemIndex = 1 then .. Нужно использовать функции типа IncMonth |
#8
|
|||
|
|||
Цитата:
последнее лучше так уж тогда Код:
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, т.е переход в следующий год. Как-то так. |
#9
|
||||
|
||||
никчему заморачиваться,
Код:
IncMonth(DateTimePicker3.Date, ComboBox1.ItemIndex); Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#10
|
||||
|
||||
Цитата:
|
#11
|
||||
|
||||
Цитата:
|
#12
|
||||
|
||||
Ну как дети, чес-слово.
Код: Код:
uses DateUtils; function GetDecimal(Value:string):Integer; var sResult:string; i: Integer; begin sResult:=''; for i := 1 to Length(Value) do if CharInSet(Value[i],['0'..'9']) then sResult:=sResult+Value[i]; Result:=StrToIntDef(sResult,0); end; procedure TForm1.ComboBox1Change(Sender: TObject); begin if Pos(AnsiUpperCase('дн'),AnsiUpperCase((Sender as TComboBox).Text))>0 then DateTimePicker1.Date:=IncDay(DateTimePicker1.Date,-1*GetDecimal((Sender as TComboBox).Text)); if Pos(AnsiUpperCase('ме'),AnsiUpperCase((Sender as TComboBox).Text))>0 then DateTimePicker1.Date:=IncMonth(DateTimePicker1.Date,-1*GetDecimal((Sender as TComboBox).Text)); if (Pos(AnsiUpperCase('го'),AnsiUpperCase((Sender as TComboBox).Text))>0) or (Pos(AnsiUpperCase('ле'),AnsiUpperCase((Sender as TComboBox).Text))>0) then DateTimePicker1.Date:=IncYear(DateTimePicker1.Date,-1*GetDecimal((Sender as TComboBox).Text)); end; то чем заполнен комбобокс Код:
15 дней 2 дня 100 дней 1 месяц 3 месяца 5 месяцев 1 год 5 лет вычитает из DateTimePicker'а указанный период. Написано за 2 минуты на коленке Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#13
|
||||
|
||||
Но все же спасибо за помощь!
|
#14
|
||||
|
||||
Цитата:
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#15
|
||||
|
||||
Цитата:
|