如何在TcxGrid中的值更改后触发事件处理程序?

时间:2009-06-03 00:51:18

标签: delphi event-handling devexpress tcxgrid

我有一个DevExpress TcxGrid,其GridView的OnEditValueChanged事件附加了一个事件处理程序,该事件应该汇总其中一个列中的一些数据。问题是,在将更新的值写入基础数据集之前,此事件在验证期间被触发。我对TcxGrid不太熟悉。有没有人知道在数据集更新后是否有办法解雇事件处理程序

4 个答案:

答案 0 :(得分:6)

使用DataSource.OnDataChange事件怎么样?

答案 1 :(得分:2)

我不确定这是否正是您所需要的,但我发现网格的ImmediatePost选项对于我需要更新摘要的情况非常有用 - 它隐藏在cxView的Data Controller属性下。这使得网格就像电子表格一样 - 只要用户按下单元格中的输入或制表符,记录就会被发布。那么我可能会从数据集的AfterPost事件中触发我的汇总事件吗?

(您可能已经知道了这一点,但gridview本身内置了许多非常有用的摘要选项 - 查看列的Summary属性,并确保ViewOptions中的ShowFooter设置为true - 所以如果你的摘要是一个相对简单的总数或平均数或相似数,让网格做到这一切并为自己省去一些工作。)

答案 2 :(得分:1)

您是否在cxGrid中使用cxTableView或cxDBTableView

如果使用cxDBTableView,则在cxDBTableView属性中的链接数据源的datasource.onchange中设置事件。 (cxDBTableView .datacontroller.datasource)

答案 3 :(得分:0)

我会选择skamradt:仔细观察符合您期望的活动。

否则,您可以在确保数据初始化后插入事件:

 procedure TMyGrid.MyProc_OnDataLoaded( Sender : TObject ); //I made up this event, I'm not sure it exists
 begin
   Self.OnEditValueChanged := MyProc_OnEditValueChanged;
 end;

我强烈建议你不要将它用作常规的开发habbit(通过代码设置事件设置另一个回调是调试地狱的可靠方法),但是如果你真的没有找到任何其他方法来做到这一点。 ..