![]() |
|
|
#16
|
||||
|
||||
|
AnsiUpperCase('дн') - зачем? можно ж сразу uppercase константой задать.
Да и если дельфи ХЕ и выше, то там надо не Pos, а AnsiPos использовать. |
|
#17
|
||||
|
||||
|
Народ, объясните кто-нить код, а то мне некогда.
|
|
#18
|
||||
|
||||
|
Цитата:
![]() |
|
#19
|
||||
|
||||
|
Абисняю
Код:
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;Последний раз редактировалось M.A.D.M.A.N., 05.03.2013 в 14:42. |
|
#20
|
||||
|
||||
|
Цитата:
![]() |