Текущий архив: 2003.08.21;
Скачать: CL | DM;
Вниз
Как отловить изменение значения в TTable Найти похожие ветки
← →
II (2003-07-25 16:41) [0]У меня есть три поля Kol,Cost,Summa.
Мне нужно при изменении Kol или Cost перещитывать поле Summa
Я повесил обработчик на AfterPost чтобы в нем делать следующие
TTable(DataSet).Edit;
TTable(DataSet).FiekdByName("Summa").AsFloat:=
TTable(DataSet).FiekdByName("Kol").AsInteger*
TTable(DataSet).FiekdByName("Cost").AsInteger;
TTable(DataSet).Post; - Вот этот обработчик зацикливается
А еще есть такая неприятность. При редактировании в гриде ячеки пост вызывается только когда я перехожу на следующую строку.
В итоге мне нужно при изменении значения поля пересчитать сумму. Я так понял AfterPost мне не поможет.
Мне кажется тут все просто только не знаю как. Ведь другие программы как то это делают.
← →
Reindeer Moss Eater (2003-07-25 16:45) [1]В обработчике AfterPost ты редактируешь запись и снова вызывается AfterPost.
Что же ты ожидал?
← →
II (2003-07-25 16:48) [2]Я ожидал что, ктото подскажет как этого избежать
← →
Reindeer Moss Eater (2003-07-25 16:48) [3]Перенеси все в OnBeforePost и убери оттудова Edit и Post
← →
Reindeer Moss Eater (2003-07-25 16:49) [4]Кроме всего прочего, зачем тебе приведение типов потребовалось?
← →
II (2003-07-25 16:54) [5]А как надо было?
← →
II (2003-07-25 16:56) [6]А что же делать чтобы это сробатывало после завершения редактирования(после энтера), а не после перехода на другую строку?
← →
Reindeer Moss Eater (2003-07-25 16:57) [7]Так непонятно изъясняюсь?
Надо было в OnBeforePost, без Edit и Post, и приведение типов - это лишнее.
← →
II (2003-07-25 16:58) [8]На счет OnBeforePost, без Edit и Post я понял, все работает спасибо а что неправильно с приведеним типов?
← →
Reindeer Moss Eater (2003-07-25 17:00) [9]А что же делать чтобы это сробатывало после завершения редактирования(после энтера), а не после перехода на другую строку?
1. "Это" бы не потребовалось, если знать основы проектирования БД (первую нормальную форму)
2. "Этого" можно добиться не переходя к след. строке, вызвав метод Post;
← →
Reindeer Moss Eater (2003-07-25 17:00) [10]а что неправильно с приведеним типов?
О Н О Л И Ш Н Е Е
← →
II (2003-07-25 17:02) [11]2. "Этого" можно добиться не переходя к след. строке, вызвав метод Post;
Мне нужно его вызывать после нажатия энтера в редактируемом поле.
А как узнать когда это произошло не знаю
← →
II (2003-07-25 17:04) [12]надо было так?
TTable(DataSet).FiekdByName("Summa").Value:=
TTable(DataSet).FiekdByName("Kol").Value*
TTable(DataSet).FiekdByName("Cost").Value;
← →
Reindeer Moss Eater (2003-07-25 17:04) [13]Мне нужно его вызывать после нажатия энтера в редактируемом поле.
А как узнать когда это произошло не знаю
А если полей 10 (1000) и юзер будет их всех по очереди редактировать?
Станешь постить 10 (1000) раз?
← →
Reindeer Moss Eater (2003-07-25 17:06) [14]надо было так?
TTable(DataSet).FiekdByName("Summa").Value:=
TTable(DataSet).FiekdByName("Kol").Value*
TTable(DataSet).FiekdByName("Cost").Value;
Можно было так
DataSet.FiekdByName("Summa").AsFloat:=
DataSet.FiekdByName("Kol").AsInteger:=
DataSet.FiekdByName("Cost").AsFloat:=
← →
II (2003-07-25 17:37) [15]А если полей 10 (1000) и юзер будет их всех по очереди редактировать?
Станешь постить 10 (1000) раз?
Ну полей у меня 5, а другого выхода я не вижу да это и не критично
← →
Reindeer Moss Eater (2003-07-25 17:48) [16]Кроме событий у датасета есть еще события у TField. Обрати свое внимание на них.
Страницы: 1 вся ветка
Текущий архив: 2003.08.21;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.012 c