Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как определить, что пользователь изменил данные в dbGrid? [D6, Paradox]


Ильдар ©   (2002-12-09 08:02:00) 

Требуется "на лету" проводить вычисления по строке после изменения пользователем данных в любом из полей dbGrid. Как определить, что значение поля изменено и какое поле изменено?


Виталий Панасенко   (2002-12-09 18:20:00) [1]

>MMF (09.12.02 14:43)
Для этого существует событие OnNewRecord


MMF   (2002-12-09 14:43:00) [2]

>roottim (09.12.02 14:38)
А как насчет подстановки значения поля по-умолчанию, например цены при выборе поля Товар.


roottim   (2002-12-09 14:38:00) [3]

вообще для этого предназначены Calculate поля, и в OnCalcField пишут вычисления. см. HELP


MMF   (2002-12-09 14:02:00) [4]

> Ильдар (09.12.02 13:55)
Все так и делают. Никакой рекурсии не будет, если правильно написать.


Ильдар   (2002-12-09 13:55:00) [5]

C TField.OnChange(Sender: TField) есть проблема. При вычислениях будут изменяться поля, для которых начнёт срабатывать событие OnChange, которое в свою очередь породит новое вычисление и т.д. В общем получится нечто вроде бесконечной рекурсии.


passm   (2002-12-09 11:58:00) [6]

Ильдар (09.12.02 11:50)> Что мешает ориентироваться на Sender?


Ильдар   (2002-12-09 11:50:00) [7]

В том то и дело, что алгоритм вычислений зависит от того, какое поле изменилось!


passm   (2002-12-09 11:21:00) [8]

Ильдар (09.12.02 08:02)> TField.OnChange(Sender: TField);


Виталий Панасенко   (2002-12-09 09:35:00) [9]

По-моему, проще все пересчитывать по новому, чем вычислять, какое поле изменилось. Ведь для вычисления используются заведомо известные поля и смысла в "Как определить, что значение поля изменено и какое поле изменено?", кажись, нет. Это можно делать как в вычисляемых полях, так и обработчике BeforePost.


Наверх

Титульная страница Поиск, карта сайта Написать письмо