Sie müssen eine Setter-Methode für die Eigenschaft verwenden und innerhalb dieser Setter überprüfen, ob der neue Wert vom aktuellen Wert abweicht.
Wenn ja, dann wird der Wert eingestellt und Feuer ein Ereignis (hier die OnCanStartChanged
)
uses
Classes;
type
TFoo = class
private
FCanStart : Boolean;
FOnCanStartChanged: TNotifyEvent;
procedure SetCanStart(const Value: Boolean);
procedure SetOnCanStartChanged(const Value: TNotifyEvent);
protected
procedure DoCanStartChanged(); virtual;
public
property CanStart : Boolean read FCanStart write SetCanStart;
property OnCanStartChanged: TNotifyEvent read FOnCanStartChanged write SetOnCanStartChanged;
end;
{ TFoo }
procedure TFoo.DoCanStartChanged;
begin
if Assigned(FOnCanStartChanged)
then
FOnCanStartChanged(Self);
end;
procedure TFoo.SetCanStart(const Value: Boolean);
begin
if FCanStart <> Value
then
begin
FCanStart := Value;
DoCanStartChanged();
end;
end;
procedure TFoo.SetOnCanStartChanged(const Value: TNotifyEvent);
begin
FOnCanStartChanged := Value;
end;
Wenn Ihre * variabel * a * Eigenschaft sein kann *, dann können Sie ein Ereignis aus der Eigenschaft Setter ausgelöst, wenn der Wert zu setzen ist anders als der aktuelle Wert der Eigenschaft –
@Sir Rufo Ich habe die Variable als Eigenschaft: 'Prozedur SetCanStart (const Wert: boolean); Funktion GetCanStart: boolean; Eigenschaft CanStart: boolescher Wert GetCanStart write SetCanStart; ' – genakust
Sie können Ereignisse nicht auslösen, wenn sich Variablen ändern. Sie müssen die Variable irgendwie einkapseln. Eigentum ist eine Möglichkeit. Eine andere Prozedur. –