yanyyx

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在操作数据库中使用 FClientDataSet 的 FieldsChange 来触发某件事代码如下:

procedure FieldsChange(Sender: TField);
begin
  TField(Sender).Value :
= FClientDataSet.Fields.FieldByName('ID').Value + TField(Sender).Value;
end;

 

程序来执行的时候报

estackoverflow with message 'stack overflow'

错误,堆栈溢出。

是陷入重复循环。

修改代码如下

 

代码
procedure TDBOperator.PW_FieldsChange(Sender: TField);
begin
  TField(Sender).OnChange :
= nil;
  
with FClientDataSet do
  
begin
    Edit;
    TField(Sender).Value :
= Fields.FieldByName('ID').Value + TField(Sender).Value;
  
end;
  TField(Sender).OnChange :
= PW_FieldsChange;
  FieldChange(Sender);
end;

 

 

先关掉,做某事,手工触发一下,再加上触发事件。OK
posted on 2010-07-05 00:10  Yanyyx  阅读(788)  评论(0编辑  收藏  举报