Per ogni setter di una classe devo implementare una logica evento (OnChanging, OnChanged):setter ripetute 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;
ti invitiamo a suggerire un modo per implementare questo senza duplicare tutte queste linee per ogni setter?
+1 vor problema generale che troverete molto spesso nella programmazione di basi di eventi. –
Dovresti prima controllare Valore <> OldValue, è il solito idioma usato in tutto il VCL. O all'inizio del metodo, o dopo l'evento OnChanging (dipende dal fatto che OnChanging ottenga o meno un parametro var, cioè se possa cambiare o meno il nuovo valore). – mghie