陷入死循环,如何解?(50分)

J

jobsxy

Unregistered / Unconfirmed
GUEST, unregistred user!
有这样一张表:
基准价
折扣率
会员价

运算关系是:基准价*折扣率=会员价

介面是这样安排的,首先有个默认的折扣率,当用户输入基准价后,即根据上述公式算出会员价
当用户改变折扣率时也同上操作
当用户手动改变会员价时,我需要计算出折扣率。

由于以上操作分别在这几个字段的change里进行的,于是就出现了一个死循环,
即输入基准价后,会员价发生改变,于是激活会员价的change事件,又去修改了折扣率的值
则又激活了折扣率的change事件,又去激活会员价的change。。。。。。如此如此。。。

应该如何解呢?
 
用一个全局变量或者使用控件自身的Tag信息(我常用这种方法)作为标志位,判断OnChange
是不是程序自身导致的。

eg:

Edit1OnChange:
if Edit2.Tag=0 then
begin
Edit1.Tag:=1
//设定标志位
Edit2.Text:=Edit1.Text+'123';
Edit1.Tag:=0
//恢复标志
end;

Edit2OnChange:
if Edit1.Tag=0 then
begin
Edit2.Tag:=1
//同上
Edit1.Text:=Edit2.Text+'ABC';
Edit2.Tag:=0
//同上
end;
 
多人接受答案了。
 
那就把change事件改成Exit事件
 

Similar threads

S
回复
0
查看
747
SUNSTONE的Delphi笔记
S
S
回复
0
查看
696
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
969
SUNSTONE的Delphi笔记
S
顶部