Pour chaque poseur d'une classe que je dois mettre en œuvre une logique d'événement (OnChanging, OnChanged):logique de setters répétées dans 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;
Pouvez-vous s'il vous plaît suggérer une façon de mettre en œuvre ce sans dupliquer toutes ces lignes pour chaque setter?
+1 vor problème général que vous trouverez très souvent dans la programmation des bases d'événements. –
Vous devriez d'abord vérifier que Value <> OldValue, c'est l'idiome habituel utilisé dans la VCL. Soit au début de la méthode, soit après l'événement OnChanging (selon que OnChanging obtient ou non un paramètre var, c'est-à-dire s'il peut ou non changer la nouvelle valeur). – mghie