![]() |
|
|
#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
|
||||
|
||||
|
Это что вообще за изврат?
|
|
#5
|
||||
|
||||
|
Цитата:
|
|
#6
|
||||
|
||||
|
Цитата:
|
|
#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); |
|
#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
|
||||
|
||||
|
Цитата:
|