Попробуй использовать OnEditValueChanged.
Небольшой пример с моими коментариями:
procedure TMyForm.QuantityPropertiesEditValueChanged(Sender: TObject);
var
Edit1: TcxCustomEdit;
begin
Edit1 := Sender as TcxCustomEdit;
if VarIsNumeric(Edit1.EditValue) then // здесь то, что ввели, но значение пока не сохранилось
begin
with Grid2TableView.DataController do
begin
if Edit1.EditValue<=MaxQuantity.EditValue then
begin
Edit1.PostEditValue; // сохраняем введенное значение
CalculateDiscount(RowNum.EditValue-1);
Calculate(RowNum.EditValue-1);
end
else
if MaxQuantity.EditValue>0 then
begin
Edit1.Reset; // восстановим старое значение
end;
end;
end;
end;