|  | 
 
 | 
| 
			 
			#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  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
  |