Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.025 c
1-1155712822
Dell3r
2006-08-16 11:20
2006.10.01
Доступ к закладкам в .rtf


15-1157968326
Сергей_С
2006-09-11 13:52
2006.10.01
DCU, собранная под Delphi6 не компилируется под Delphi7


2-1157634240
Задачник
2006-09-07 17:04
2006.10.01
Танцы PopupMenu. с Потоком.


1-1155743180
DevilDevil
2006-08-16 19:46
2006.10.01
Как правильно изменить цвет ячейки Excel?


15-1157969722
Александр Иванов
2006-09-11 14:15
2006.10.01
Вопрос по XPath




   Наверх