Dla każdej podstawce z klasy trzeba zaimplementować pewne logiki zdarzenia (OnChanging, onChanged):Powtarzające ustawiaczy logika w 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;
Czy możesz zaproponować sposób zaimplementować to bez powielania wszystkie te wiersze dla każdego seter?
+1 VOR ogólny problem, że znajdziesz bardzo często w programowaniu baz zdarzeń. –
Powinieneś najpierw sprawdzić wartość <> OldValue, jest to zwykle idiom używany w VCL. Albo na początku metody, albo po zdarzeniu OnChanging (zależy od tego, czy OnChanging otrzymuje parametr var, czy też nie, tj. Czy może zmienić nową wartość, czy nie). – mghie