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

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

Отследить изменение поля таблицы в DBGrid [D7]


neat ©   (2005-03-03 11:03:00) 

Здравствуйте Все!
Вопрос простой, но отнял у меня довольно много времени. Как отследить, изменялось ли (использую DBGrid) значение конкретного(WBD) поля. Я решил это так. Может существуют другие способы ?

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
If Field <> nil then begin
   If Field.FieldName = 'WBD' then
   begin
     Table1['PN']:=Table1['WBF']-Table1['WBD'];
     Table1.Post;
   end;
end;


ЮЮ   (2005-03-03 13:39:00) [1]

А почему это не воткнуть в BeforePost?

И вообще, как насчет "Выкинь его из таблицы (PN), если это просто разность двух полей, и будет тебе счастье (а то ведь в таблице можно ещё поменять WBF и само PN - без твой программы - и что тогда будет?"


neat   (2005-03-03 13:33:00) [2]

Fields Editor наверное хорошее решение, но ведь это создаются статические поля, мне тогда придётся весь модуль перелопачивать (он у меня не маленький).

сравни Field.Value и Field.NewValue - это если включено CachedUpdates. Простите я не знаю как это использовать. Посмотрел в Help - там есть процедуры, котрые неизвестно в каком модуле, в общем не получилось.

Ну и так, как написано в хелпе F1 - если знаешь, так и напиши, мне ответ нужен, а не намёк. Я итак времени потратил немало, ты мне предлагаешь ещё потренироваться.


clickmaker   (2005-03-03 13:05:00) [3]

DataSet.UpdateStatus
для текущей записи, в цикле мона проверить для всех

для конкретного поля сравни Field.Value и Field.NewValue после Post


ЮЮ   (2005-03-03 13:04:00) [4]

В DataSet-е вызвать Fields Editor, добавить все поля, а у поля конкретное_поле написать обработчик OnChange


Johnmen   (2005-03-03 13:03:00) [5]

Ну и так, как написано в хелпе F1


neat   (2005-03-03 12:58:00) [6]

конкретное_поле.OnChange - ну и как это использовать ?


ЮЮ   (2005-03-03 11:15:00) [7]

DataSource1DataChange - этот обработчик вызовется и просто при переходе с записи на запись, есле при этом значение поля Field меняется. Выкинь его из таблицы (PN), если это просто разность двух полей, и будет тебе счастье (а то ведь в таблице можно ещё поменять WBF и само PN - без твой программы - и что тогда будет?


Johnmen   (2005-03-03 11:06:00) [8]

конкретное_поле.OnChange


Наверх

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