我想在程序(VCL)中对a的信号变化做出反应 布尔变量(调用不同的函数,例如 - 启动/停止测量)。我怎么才能意识到这一点?还有另一种没有计时器的方式吗?
我使用Delphi 7并且我在短时间内使用Delphi。
答案 0 :(得分:3)
如果新值与当前值不同,则必须对属性使用setter方法并在该setter内部进行检查。
如果是,则设置值并触发事件(此处为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;