【发布时间】:2014-02-18 09:20:48
【问题描述】:
我正在使用TcxGridDBBandedTableView,并且有两列TcxGridDBBandedColumn。
vwABC : TcxGridDBBandedTableView
vwABCField1 : TcxGridDBBandedColumn
vwABCField2 : TcxGridDBBandedColumn
当我更改 vwABCField1 中的任何内容时,应清除 vwABCField2 值。为此,我正在使用 vwABCField1 的 OnEditValueChanged 属性,如下所示:
procedure TMyForm.vwABCField1PropertiesEditValueChanged(Sender: TObject);
begin
vwABCField2.EditValue := '';
end;
在调试时,当我来到 vwABCField2.EditValue := ''; 语句时,我再也没有返回并陷入 infine 循环,一段时间后我得到 stackoverflow 错误。
vwABCField2.EditValue := ''; 无限次递归调用vwABCField1PropertiesEditValueChanged 过程。我不知道为什么。我没有在vwABCField2 的OnEditValueChanged 事件上声明任何内容。
更新
如果我在上面的函数中写了其他东西而不是vwABCField2.EditValue := '';,它只会被调用一次。例如
procedure TMyForm.vwABCField1PropertiesEditValueChanged(Sender:TObject);
begin
ShowMessage("hi");
end;
工作正常。所以我怀疑罪魁祸首是vwABCField2.EditValue := ''; 声明。
【问题讨论】:
-
@StefanGlienke - 是的,我查过了。 vwABCField1PropertiesEditValueChanged 方法被一次又一次地调用。
-
你应该看到它来自第二次,因为你说不应该发生
-
Stackoverflow 错误震惊
-
也许对 vwABCField2 的更改会强制对数据库进行某种更新,然后遍历所有字段并触发另一个 Change()。查看调用堆栈,跟踪 DevEx 代码,制作可重现的案例以在 DevEx 论坛上发布。
-
您是否在 DevEx 论坛中搜索过“堆栈溢出”?这是否相关:devexpress.com/Support/Center/Question/Details/Q523958
标签: delphi devexpress vcl