Главная страница
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.067 c
2-1158250956
ph0sgen
2006-09-14 20:22
2006.10.01
перевести тип с С++ на Delphi


15-1157972190
SergP
2006-09-11 14:56
2006.10.01
Как сделать чтобы винда сама прописывала маршруты?


1-1156149962
MegaVolt
2006-08-21 12:46
2006.10.01
Как сделать чтобы при drag&amp;drop моё приложение оставалось активно


15-1157911918
sportman
2006-09-10 22:11
2006.10.01
Сеть и почта!!!


2-1158164932
Danla13
2006-09-13 20:28
2006.10.01
картинки и Delphi