Para cada colocador de una clase que tengo que aplicar un poco de lógica evento (OnChanging, OnChanged):set repetidas en 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;
¿Puede usted por favor sugerir una manera de poner en práctica esta sin duplicar todas estas líneas para cada ¿setter?
1 vor problema general que encontrará muy a menudo en la programación de bases de eventos. –
Primero debe verificar Value <> OldValue, es la expresión habitual que se utiliza en todo el VCL. Ya sea al inicio del método o después del evento OnChanging (depende de si OnChanging obtiene un parámetro var o no, es decir, si podría cambiar el nuevo valor o no). – mghie