![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TFibDataSet обмирает OnSetText
DelphiLexx © (2006-07-27 17:32:00)В FibDataSet'е на определенное поля наложен обработчик события OnSetText в котором ведется проверка вводимых данных.
if Text = (определенный критерий) then
Sender.AsFloat := Text;
FibDataSet.Post;
else
MessageBox(Self.Handle, 'Не правильно введены данные', 'Ошибка', MB_ICONERROR or MB_OK)
Проблема в том, что после того как пользователь ввел данные и нажамал Enter поле все равно остается в режиме редактирования.
Как с этим бороться?
ЮЮ (2006-07-28 11:35:00) [1]
> Если не предпринять дополнительных телодвижений...
Если до этого не предпринять дополнительных телодвижений по кэшированию изменений в DataSet-е. Хотя с FibDataSet-ом, признаюсь, на знаком
Johnmen (2006-07-28 10:01:00) [2]
> ЮЮ © (28.07.06 09:34) [9]
> > FibDataSet.Post;
> На кой нужно после изменения каждого поля записывать изменения
> в базу?
Строго говоря, после поста изменения в базу не пишутся. Если не предпринять дополнительных телодвижений...
ЮЮ (2006-07-28 09:34:00) [3]
> //потвержаем внесенные изменения
> FibDataSet.Post;
На кой нужно после изменения каждого поля записывать изменения в базу?
Достаточно вызвать Exception, если данные некорректны
DelphiLexx (2006-07-28 09:29:00) [4]
> if (Sender as TStringField).Value<>'конкрентное условие'
> then
> raise Exception.Create('Пургу гоним, товарищЬ!')
Так как тут подтвердить или отменить внесенные данные.
Мне нужно вот так:
if (Sender as TStringField).Value = 'конкрентное условие'
then
//потвержаем внесенные изменения
else
//изменения не вносятся
ЮЮ (2006-07-28 09:25:00) [5]Sender.AsString := Text;
А точно параметр в обработчике так называется?
А то у TField свойсто Text, и если в коде именно оно, то возможна бесконечная рекурсия.
Отладчик для чего дан?
Виталий Панасенко (2006-07-28 09:22:00) [6]
> DelphiLexx © (28.07.06 08:47) [3]
>
> > А OnValidate тогда зачем придумали ?
>
> В него не передается Text.
Ты это сУрьезно ? Но зато туда передается Sender : TField, который можно привести к любому необходимому типу поля
if (Sender as TStringField).Value<>'конкрентное условие' then
raise Exception.Create('Пургу гоним, товарищЬ!')
Johnmen (2006-07-28 09:07:00) [7]проверка вводимых данных обычно делается в других местах
напр. в BeforePost
DelphiLexx (2006-07-28 08:48:00) [8]
> И че, компилятор ничего не говорит ?
Sender.AsString := Text;
DelphiLexx (2006-07-28 08:47:00) [9]
> А OnValidate тогда зачем придумали ?
В него не передается Text.
PEAKTOP (2006-07-27 19:14:00) [10]
> .........
> Sender.AsFloat := Text;
> .........
И че, компилятор ничего не говорит ?
Виталий Панасенко (2006-07-27 18:02:00) [11]А OnValidate тогда зачем придумали ?