Für jedes Setter einer Klasse Ich habe einige Ereignislogik (OnChanging, OnChanged) zu implementieren:Wiederholte Setter-Logik in Delphi
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;
Können Sie bitte einen Weg vorschlagen, dies zu implementieren, ohne für jede all diese Zeilen duplizieren Setter?
+1 vor generelles Problem, dass Sie sehr finden oft in der Event-Bases-Programmierung. –
Sie sollten zuerst überprüfen, dass Wert <> OldValue, es ist die übliche Redewendung in der VCL verwendet wird. Entweder am Anfang der Methode oder nach dem OnChanging-Ereignis (hängt davon ab, ob OnChanging einen var-Parameter erhält oder nicht, d. H. Ob der neue Wert geändert werden kann oder nicht). – mghie