Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2010, 21:23   #1
namazi74
 
Регистрация: 09.04.2010
Сообщений: 5
По умолчанию Событие OnChange - на одно из полей

Вечер добрый.
В DBGrid'e отображается несколько полей: поле_1, поле_2, поле_3. При изменении значения в поле_3 должна появляться форма с диалогом. Но у меня она появляется при изменении значения любого поля. Почему, не пойму.
Delphi7, Microsoft SQL Server 2008, подключение осуществляется через ADOQuery, где на событие OnChange поля ADOQueryUchtehdsotr (поле_3)прописан код:
Код:
procedure TDataModule3.ADOQueryUchtehdsotrChange(Sender: TField);
begin
  PeremForm.Show;
end;
namazi74 вне форума Ответить с цитированием
Старый 21.04.2010, 10:54   #2
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

попробуй обрабатывать событие dbgrid-a onDrawDataCell
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Старый 21.04.2010, 11:54   #3
ProScor
 
Регистрация: 06.10.2009
Сообщений: 5
По умолчанию

Возможно, указанная процедура является обработчиком не только события OnChange поля ADOQueryUchtehdsotr...
Ну а как вариант, можно проверять имя поля:
Код:
procedure TDataModule3.ADOQueryUchtehdsotrChange(Sender: TField);
begin
  if(sender.name='ADOQueryUchtehdsotr')then
    PeremForm.Show;
end;
ProScor вне форума Ответить с цитированием
Старый 21.04.2010, 12:08   #4
namazi74
 
Регистрация: 09.04.2010
Сообщений: 5
По умолчанию

Спасибо за помощь. Судя по всему происходит обновление всех полей, а не только того, которое было изменено, поэтому и срабатывает событие OnChange. Рабочий код выглядит так:
Код:
procedure TDataModule3.ADOQueryUchtehdsotrChange(Sender: TField);
begin
  with MainForm.DBGrid1 do
  If SelectedField.FieldName='dsotr' then PeremForm.Show
end;
namazi74 вне форума Ответить с цитированием
Старый 22.04.2010, 12:52   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

procedure TDataModule3.ADOQueryUchtehdsotrCha nge(Sender: TField);

скажите а для кого здесь есть параметр Sender: TField который прямо говорит какое поле меняется.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При удалении записей значения полей с type:=Autoincrement (т.е+) в оставшихся полей не изменяются kenta БД в Delphi 2 29.10.2009 08:28
Объеденение полей запроса в для отображения нескольких полей в одном списке mrCreator Microsoft Office Access 3 08.08.2009 00:53
Данные из двух полей исх. таблицы в одно поле сводной таблицы Strelec79 Microsoft Office Excel 2 02.08.2009 13:59
TEdit.Onchange azat Компоненты Delphi 1 27.11.2007 12:36
Вычисления по условию. Событие onChange Наташа Помощь студентам 13 27.12.2006 12:28