Показать сообщение отдельно
  #1  
Старый 03.05.2011, 21:53
Регина Регина вне форума
Прохожий
 
Регистрация: 08.04.2008
Сообщения: 15
Репутация: 10
Восклицание DateTimePicker MinDate MaxDate

возникла проблема с периодом в этом элементе. На форме есть комбобокс, через него выбираю дату (1 января допустим) на его событии closeup прописала чтобы при выборе в 1ой и 2ой датапиккеры (выводились 1 января и 2 января). Это все работает. У меня база данных огромная, и когда в датапиккере перехожу между таблицами идет большая закачка данных. Из-за этого упростила комбобоксом. Суть в том, чтобы при выборе месяца - январь, пользователи через сами датапиккеры не могли выбрать другой месяц. извините кода с собой нет, напишу на память:
Код:
procedure cb_periodChange();
var dtd:string;
y,m,d:word;
i:integer;
begin
 dtd:=copy(cb_period.Text,1,2)+'.'+TRIM(cb_year.Text);
 DecodeDate(db_end.Date,y,m,d);
 if StrToDate(AnsiRightStr('0'+IntToStr(d),2)+'.'+dtd)>Date then
 begin
  showmessage('Неправильно выбран период!');
  cb_period.SelectAll;
  db_begin.Date:=StrToDate(AnsiRightStr('0'+IntToStr(d-1),2)+'.'+dtd);
  db_end.Date:=StrToDate(AnsiRighrStr('0'+IntToStr(d),2)+'.'+dtd);
  dbgrideh1.DataSource.DataSet.Close;
  exit;
 end else
 begin
  i:=DaysInMonth(StrToDate('01.'+dtd));
  db_begin.MaxDate:=StrToDate(AnsiRightStr('0'+IntTostr(i),2)+'.'+dtd);
  db_begin.MinDate:=StrToDate('01.'+dtd);
  db_end.MaxDate:=StrToDate(AnsiRightStr('0'+IntTostr(i),2)+'.'+dtd);
  db_end.MinDate:=StrToDate('01.'+dtd);
  tlb_updateClick(self);
 end;
end;
последние с датами точно не помню там переменные, и ошибка даже не в этом.
Допустим запустила , выбрала январь - комбобокс захлопнулся - дбгрид заполнился данными и в датапиккерах можно просматривать - только январь. Это Правильно. Но если в комбоксе я выберу февраль, выходит ошибка что типа уже есть максимальная дата 30 января. Это я понимаю, но неужели в коде MaxDate И MinDate перезаписать никак?
Ответить с цитированием