Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.01;
Скачать: CL | DM;

Вниз

TFibDataSet обмирает OnSetText   Найти похожие ветки 

 
DelphiLexx ©   (2006-07-27 17:32) [0]

В FibDataSet"е на определенное поля наложен обработчик события OnSetText в котором ведется проверка вводимых данных.

if Text = (определенный критерий) then
   Sender.AsFloat := Text;
   FibDataSet.Post;
 else
   MessageBox(Self.Handle, "Не правильно введены данные", "Ошибка", MB_ICONERROR or MB_OK)

Проблема в том, что после того как пользователь ввел данные и нажамал Enter поле все равно остается в режиме редактирования.
Как с этим бороться?


 
Виталий Панасенко   (2006-07-27 18:02) [1]

А OnValidate тогда зачем придумали ?


 
PEAKTOP ©   (2006-07-27 19:14) [2]


>   .........
>    Sender.AsFloat := Text;
>   .........

И че, компилятор ничего не говорит ?


 
DelphiLexx ©   (2006-07-28 08:47) [3]


> А OnValidate тогда зачем придумали ?

В него не передается Text.


 
DelphiLexx ©   (2006-07-28 08:48) [4]


> И че, компилятор ничего не говорит ?

Sender.AsString := Text;


 
Johnmen ©   (2006-07-28 09:07) [5]

проверка вводимых данных обычно делается в других местах
напр. в BeforePost


 
Виталий Панасенко   (2006-07-28 09:22) [6]


> DelphiLexx ©   (28.07.06 08:47) [3]
>
> > А OnValidate тогда зачем придумали ?
>
> В него не передается Text.

Ты это сУрьезно ? Но зато туда передается Sender : TField, который можно привести к любому необходимому типу поля
if (Sender as TStringField).Value<>"конкрентное условие" then
 raise Exception.Create("Пургу гоним, товарищЬ!")


 
ЮЮ ©   (2006-07-28 09:25) [7]

Sender.AsString := Text;

А точно параметр в обработчике так называется?
А то у TField свойсто Text, и если в коде именно оно, то возможна бесконечная рекурсия.

Отладчик для чего дан?


 
DelphiLexx ©   (2006-07-28 09:29) [8]


> if (Sender as TStringField).Value<>"конкрентное условие"
> then
>  raise Exception.Create("Пургу гоним, товарищЬ!")

Так как тут подтвердить или отменить внесенные данные.
Мне нужно вот так:

 if (Sender as TStringField).Value = "конкрентное условие"
 then
  //потвержаем внесенные изменения
 else
  //изменения не вносятся


 
ЮЮ ©   (2006-07-28 09:34) [9]


> //потвержаем внесенные изменения


>  FibDataSet.Post;


На кой нужно после изменения каждого поля записывать изменения в базу?

Достаточно вызвать Exception, если данные некорректны


 
Johnmen ©   (2006-07-28 10:01) [10]


> ЮЮ ©   (28.07.06 09:34) [9]
> >  FibDataSet.Post;
> На кой нужно после изменения каждого поля записывать изменения
> в базу?


Строго говоря, после поста изменения в базу не пишутся. Если не предпринять дополнительных телодвижений...


 
ЮЮ ©   (2006-07-28 11:35) [11]


> Если не предпринять дополнительных телодвижений...

Если до этого не предпринять дополнительных телодвижений по кэшированию изменений в DataSet-е. Хотя с FibDataSet-ом, признаюсь, на знаком



Страницы: 1 вся ветка

Текущий архив: 2006.10.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
15-1157985150
Ломброзо
2006-09-11 18:32
2006.10.01
Ищу tool для Oracle


15-1157982084
Rule
2006-09-11 17:41
2006.10.01
понедельничная задачка, для поступающих в первый класс


3-1154110257
Игорь__
2006-07-28 22:10
2006.10.01
Paradox: проблема с фильтрацией.


15-1158048993
Виталий Панасенко
2006-09-12 12:16
2006.10.01
Turbo Delphi


8-1142090760
Endor
2006-03-11 18:26
2006.10.01
OGG, WMA