Как правильно проконтролировать ввод даты

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Как правильно проконтролировать ввод даты

Сообщение Climber » 08.06.2009 17:32:33

Пользователь вводит дату в TDateEdit. Надо сделать так, чтобы нельзя было ввести дату меньше, чем текущая. Я попробовал так:
Код: Выделить всё
procedure TForm1.DateEdit1Change(Sender: TObject);
begin
  if DateEdit1.Date<Date then
    begin
      ShowMessage('Сообщение пользователю о том, что он не прав');
      // Любой из способов дает ошибку
      DateEdit1.Text:='';           
      DateEdit1.Date:=Date;   
    end;
end;
С другими компонентами аналогичная конструкция работает, а вот с DateEdit'ом вываливается ошибка. Надо, чтобы текст в DateEdit'е заменялся на текущую дату или пустую строку.

Добавлено спустя 25 минут 57 секунд:
Забыл добавить: версия lazarus 0.9.26.2, Windows XP.
И вообще, вот такой код:
Код: Выделить всё
procedure TForm1.DateEdit1Change(Sender: TObject);
begin
  ShowMessage('Сообщение');
end;
end;
Выводит сообщение 4 раза подряд, а потом вызывает Access Violation...
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Как правильно проконтролировать ввод даты

Сообщение Attid » 09.06.2009 15:48:45

если мне не изменяет память надо использовать OnAcceptDate
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Как правильно проконтролировать ввод даты

Сообщение VirtUX » 09.06.2009 17:03:36

Attid писал(а):если мне не изменяет память надо использовать OnAcceptDate

Есть глюк (баг): при нажатии на кнопочку вызова календаря он обрабатывает это событие и после выбора даты. Короче дважды.
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: Как правильно проконтролировать ввод даты

Сообщение Climber » 10.06.2009 17:39:56

C OnAcceptDate уже лучше, но Access Violation остался. Причем это, видимо, баг компонента, потому что AV возникает после выхода из DateEditAcceptDate. (Отладчик у меня так и не заработал, точнее сказать не могу).
Кстати, версия лазаря (которая выводится в заголовке окна) у меня сейчас выглядит как "Lazarus IDE v0.9.26.2 бета", может, поправят со временем (это не единственный баг компонента TDateEdit, который у меня вылез).
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Как правильно проконтролировать ввод даты

Сообщение Attid » 11.06.2009 10:26:01

Climber писал(а):может, поправят со временем

может, если в трекер отправишь или патч сдалаешь.

Добавлено спустя 37 секунд:
ЗЫ еще можешь на RX компоненты взлянуть, там быстрее правятся ошибки =)
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Как правильно проконтролировать ввод даты

Сообщение Climber » 11.06.2009 12:14:35

Attid писал(а):ЗЫ еще можешь на RX компоненты взлянуть, там быстрее правятся ошибки =)

А ссылочку можно? И, раз пошла такая пьянка, на еще какие-нибудь интересные компоненты, вдруг пригодится...
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Как правильно проконтролировать ввод даты

Сообщение Attid » 11.06.2009 16:37:26

Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26

Рейтинг@Mail.ru