【发布时间】:2009-07-23 07:10:31
【问题描述】:
对于每个类的设置器,我必须实现一些事件逻辑(OnChanging、OnChanged):
procedure TBlock.SetWeightIn(const Value: Double);
var OldValue: Double;
begin
OldValue := FWeightIn;
DoOnChanging(OldValue, Value);
FWeightIn := Value;
DoOnChanged(OldValue, Value);
end;
procedure TBlock.SetWeightOut(const Value: Double);
var OldValue: Double;
begin
OldValue := FWeightOut;
DoOnChanging(OldValue, Value);
FWeightOut := Value;
DoOnChanged(OldValue, Value);
end;
您能否建议一种方法来实现这一点,而无需为每个 setter 复制所有这些行?
【问题讨论】:
-
+1 vor general 事件库编程中经常会遇到的问题。
-
您应该首先检查 Value OldValue,它是整个 VCL 中使用的惯用语。在方法开始时,或者在 OnChanging 事件之后(取决于 OnChanging 是否获取 var 参数,即是否可以更改新值)。
标签: delphi pascal delphi-2006