Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Получить предыдушее поле


Автор: AlanFree 1.11.2006, 15:21
У меня есть грид в нем есть поле Kol_Vo после изменение его значения мне нужно выполнить определенный код.
Я для этого использую событие DataChange
Код

procedure TFrmNakPrih.DataSourceDataChange(Sender: TObject; Field: TField);
begin
  if // сдесь нужно получить поле которое было только что активным
  With ADOQuery do
  begin
  SQL.Clear;
  SQL.Add('UPDATE Nak_Prih Set Sum_Opt=:PrmOpt, Sum_Rozn=:PrmRozn');
  Parameters.ParseSQL(SQL.Text, true);
  Parameters.ParamByName('PrmOpt').Value:='5';
  Parameters.ParamByName('PrmRozn').Value:='6';
  ExecSQL;
  end;
end;

end.

Как мне  получить поле которое было только что активным?
Или есть еще какой то способ что бы мне почучить событие после обновления поля Kol_Vo ?

Автор: Rodman 1.11.2006, 16:27
а нельзя ли
сделай глобальную переменную типа


Код

var LastCode:String;
...
procedure TFrmNakPrih.DataSourceDataChange(Sender: TObject; Field: TField);
begin
  if (Length(LastCode)>0)then
begin
  With ADOQuery do
  begin
  SQL.Clear;
  SQL.Add('UPDATE Nak_Prih Set Sum_Opt=:PrmOpt, Sum_Rozn=:PrmRozn');
  Parameters.ParseSQL(SQL.Text, true);
  Parameters.ParamByName('PrmOpt').Value:='5';
  Parameters.ParamByName('PrmRozn').Value:='6';
  ExecSQL;
  end;
end;
LastCode:=NewCode;
end;

Автор: AlanFree 1.11.2006, 16:58
И еще вопрос.
Сужествует ли событие в гриде которое происходило бы после обновления поля но до того как поле потеряло фокус?

Автор: Akella 1.11.2006, 17:04
один топик -один вопрос smile 

Автор: AlanFree 1.11.2006, 17:08
Akella,  ок

Автор: Akella 1.11.2006, 17:10
наверное нет, но можно заставить юзеров для подтверждения сохранения нажмить Enter, тогда
Код

procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if key = vk_return then begin
    что-то делаем
  end;//if
end;


Добавлено @ 17:11 
данные обновились, но фокус ввода ещё не потеряли

Автор: AlanFree 1.11.2006, 17:20
Akella,  пасибо попробую

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)