
05.03.2013, 14:38
|
 |
Sir Richard Abramson
|
|
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
|
|
Абисняю
Код:
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;
З.Ы. немного переформатировал код для удобства чтения
Код:
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);
// обработчик изменения комбобокса
var
cbStr: string;
begin
cbStr := AnsiUpperCase((Sender as TComboBox).Text);
if Pos('ДН', cbStr)>0 then // если в комбококче выбрана строчка, в которой есть слово "дн"
DateTimePicker1.Date:=IncDay(DateTimePicker1.Date,-1*GetDecimal(cbStr) // инкрементим день
else
if Pos('МЕ', cbStr)>0 then // аналогично
DateTimePicker1.Date:=IncMonth(DateTimePicker1.Date,-1*GetDecimal(cbStr) // инкрементим месяц
else
if (Pos('ГО', cbStr)>0 ) or (Pos('ЛЕ', cbStr)>0 ) then
DateTimePicker1.Date:=IncYear(DateTimePicker1.Date,-1*GetDecimal(cbStr) // инкрементим год
end;
|