Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.27;
Скачать: CL | DM;

Вниз

Отследить изменение поля таблицы в DBGrid   Найти похожие ветки 

 
neat   (2005-03-03 11:03) [0]

Здравствуйте Все!
Вопрос простой, но отнял у меня довольно много времени. Как отследить, изменялось ли (использую 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;


 
Johnmen ©   (2005-03-03 11:06) [1]

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


 
ЮЮ ©   (2005-03-03 11:15) [2]

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


 
neat   (2005-03-03 12:58) [3]

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


 
Johnmen ©   (2005-03-03 13:03) [4]

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


 
ЮЮ ©   (2005-03-03 13:04) [5]

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


 
clickmaker ©   (2005-03-03 13:05) [6]

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

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


 
neat   (2005-03-03 13:33) [7]

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

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

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


 
ЮЮ ©   (2005-03-03 13:39) [8]

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

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



Страницы: 1 вся ветка

Текущий архив: 2005.03.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.049 c
3-1109061060
Ragazor
2005-02-22 11:31
2005.03.27
Как правильно настроить Paradox базу через ODBC?


1-1110452106
SMART_n
2005-03-10 13:55
2005.03.27
Размер строки...


9-1104767109
FRick
2005-01-03 18:45
2005.03.27
GLScene_манипуляция ланшавтом!


1-1110818082
nes
2005-03-14 19:34
2005.03.27
Связь 2-х компов....


1-1110852340
diabolik_krsk
2005-03-15 05:05
2005.03.27
Tmenu + TResourceStream + TBitmap