[Solved] exception при вводе левой даты в dbgrid

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

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

[Solved] exception при вводе левой даты в dbgrid

Сообщение count » 25.03.2012 23:38:20

Вопрос: как обработать ввод неверной даты в DBgrid?
Суть проблемы: если в поле типа datetime ввести что-то левое (а grid это вполне позволяет) - то при исключении выдается диалог с двумя кнопками (ok и cancel) из которых одна - просто прибивает приложение.
Глупый вопрос: как отловить это исключение? (поиск как-то не помог)
Последний раз редактировалось count 26.03.2012 20:20:53, всего редактировалось 1 раз.
count
незнакомец
 
Сообщения: 9
Зарегистрирован: 06.03.2011 21:41:15

Re: exception при вводе левой даты в dbgrid

Сообщение Ism » 26.03.2012 00:02:54

Уже сотый раз , наверное , скажу , сделайте тестовый проект с демонстрацией ошибки
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: exception при вводе левой даты в dbgrid

Сообщение count » 26.03.2012 00:34:34

тестовый проект во вложении, первая колонка - целые числа, там даже ничего левого не введешь, а вот в дату (вторая колонка)- завсегда можно всякий мусор вписать и поймать исключение....

пробовал под win32 и под linux
и такое ощущение что незнаю чего-то совсем элементарного... заранее благодарен за помощь.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
count
незнакомец
 
Сообщения: 9
Зарегистрирован: 06.03.2011 21:41:15

Re: exception при вводе левой даты в dbgrid

Сообщение Ism » 26.03.2012 00:58:46

Ну вообщето это нормально выдавать ошибку при неверной инфе. Как вариант можно проверять символы до ввода
http://forum.vingrad.ru/topic-46953.html

Если только по одному столбцу, то тоже можно , должны быть свойства DBGrid
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: exception при вводе левой даты в dbgrid

Сообщение count » 26.03.2012 01:28:42

проверять символы до ввода - подскажите как в случае с датой? (я лично не догнал: там может быть все что угодно в зависимости от региональных настроек, которые пользователь волен крутить как левой задней пятке хочется)

на винграде был еще вариант с обработкой на датасете - однако проблема в гриде: пробуем в приложенный проект вписать обработчик onbeforepost у датасета (memdataset там):
Код: Выделить всё
procedure TForm1.MemDataset1BeforePost(DataSet: TDataSet);
var d:TDateTime;
begin
if DBGrid1.SelectedField.FieldName ='MemDataset1Field2' then
begin
   try
     ShowMessage(DBGrid1.SelectedField.Value);
     d:=DBGrid1.SelectedField.Value;

   except
     DBGrid1.SelectedField.Value:=now;
   end;
end;
end;                   

обратите внимание - в нормальной ситуации выводится сообщение, производится вставка, если вместо даты "бред" - должно быть сообщение "бред" а потом исключение, обработанное нами. таки нет, поимеем исключение. у грида приемлимых обработчиков не заметил (может плохо смотрю?). какие свойства грида вы имели в виду?

Добавлено спустя 1 минуту 30 секунд:
и чсх в первую колонку почему-то ввести "бред" не получается...

Добавлено спустя 18 часов 50 минут 8 секунд:
на базовом форуме ответили:
http://lazarus.freepascal.org/index.php ... 443.0.html
count
незнакомец
 
Сообщения: 9
Зарегистрирован: 06.03.2011 21:41:15


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru