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


Автор: Akella 1.9.2006, 14:48
есть событие OnEditValueChanged


Изменяю значение ячейки, жмакаю Enter - в ShowMessage вываливается старое значение ячейки?
Как, в каком событии получить новое значение ячейки?
Код

procedure TfmNewArrival.dbgArrivalDetEditValueChanged(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
begin
 if AItem.name = 'dbgArrivalDetPRICE_WO_NDS' then begin
   ShowMessage(dbgArrivalDetPRICE_WO_NDS.EditValue);
 end;
end;

 smile  smile 

дело в том, что нужно реализовать пересчет 2-х других полей на основе одного редактируемого.

Автор: Fedia 2.9.2006, 00:06
Цитата(Akella @  1.9.2006,  14:48 Найти цитируемый пост)
дело в том, что нужно реализовать пересчет 2-х других полей на основе одного редактируемого.

На cxGrid отображается таблица БД ? Если да, то какой компонент доступа к данным используешь ?

Автор: Fedia 2.9.2006, 08:46
Таки нашел ! Для получения доступа к новому значению ячейки можно использовать такой способ:
Код

procedure TForm1.cxGrid1DBTableView1EditValueChanged(
  Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
begin
  if AItem.name = 'dbgArrivalDetPRICE_WO_NDS' then
  ShowMessage(AItem.GridView.Controller.EditingController.Edit.EditValue);
end;

Правда если требуется производить расчет значений других полей на основе редактируемого и используется компонент доступа к таблице БД, то расчеты лучше производить на событии OnCalcFields этого компонента.

Автор: Akella 4.9.2006, 08:14
Цитата(Fedia @  2.9.2006,  08:46 Найти цитируемый пост)
ShowMessage(AItem.GridView.Controller.EditingController.Edit.EditValue);

вываливается 2 раза, первый раз со старым значением, а второй с новымsmile 

Автор: Fedia 4.9.2006, 09:47
Цитата(Akella @  4.9.2006,  08:14 Найти цитируемый пост)
вываливается 2 раза, первый раз со старым значением, а второй с новым 

У меня один раз. Возможно у тебя изменения происходят два раза. Первый раз вручную, а второй раз в одном из обработчиков.
Довольно много информации по DevExpress можно найти http://forum.ru-board.com/topic.cgi?forum=33&topic=2214&start=980.

Автор: Akella 4.9.2006, 11:08
Код
procedure TfmNewArrival.dbgArrivalDetEditValueChanged(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
begin
 if AItem.name = 'dbgArrivalDetPRICE_WO_NDS' then begin
   dbgArrivalDetPRICE_W_VAT.EditValue := dbgArrivalDetPRICE_WO_NDS.GridView.Controller.EditingController.Edit.EditValue * 1.20;
   dbgArrivalDetVAT.EditValue         := dbgArrivalDetPRICE_W_VAT.EditValue -
                                         dbgArrivalDetPRICE_WO_NDS.GridView.Controller.EditingController.Edit.EditValue;
 end;
end;


вот, что получилось - работает нормально, спасибище

Автор: Fedia 4.9.2006, 12:03
Akella, 
Удачи тебе в дальнейшей работе smile

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