在程序中对信号变化做出反应

时间:2016-07-27 08:25:04

标签: delphi events event-handling delphi-7

我想在程序(VCL)中对a的信号变化做出反应 布尔变量(调用不同的函数,例如 - 启动/停止测量)。我怎么才能意识到这一点?还有另一种没有计时器的方式吗?

我使用Delphi 7并且我在短时间内使用Delphi。

1 个答案:

答案 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;