事件问题(40分)

  • 主题发起人 主题发起人 新手101010
  • 开始时间 开始时间

新手101010

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个类中的私有单元中加入了一个Boolean类型的变量,并在程序中控制该变量,我想在该变量的值改变时触发一个自定义的事件,但不知道怎么写,请高手们帮帮我,我一直对事件的产生不明白,还请大家指点一二
 
1.你要把该变量设置为私有变量,发布的时候用属性来发布。
2.发布一个事件,响应该属性。
 
测试代码:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TMyClass =Class
private
Fenable:Boolean;
Fonchange:TNotifyEvent;
procedure SetEnable(const Value:boolean);
public
published
property Enable:boolean read Fenable write SetEnable;
property OnEnableChange:TNotifyEvent read Fonchange write Fonchange;
end;
TForm1 = class(TForm)
btn1: TButton;
edt1: TEdit;
btn2: TButton;
procedure btn2Click(Sender: TObject);
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public

end;

var
Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }

{ TMyClass }

procedure TMyClass.SetEnable(const Value:boolean);
begin
if Value<>Fenable then
begin
Fenable:=value;
Fonchange(self)
//调用事件函数。
end;
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
ShowMessage('MyClass boolean property Changed');
end;

procedure TForm1.btn1Click(Sender: TObject);
var
c:Tmyclass;
begin
c:=Tmyclass.Create;
c.enable :=false;
c.OnEnableChange:=btn2Click
// 设置触发事件
c.Enable :=True
//改变属性值。
c.Free;
end;

end.
 
c.OnEnableChange:=Button2.OnClick
// 设置触发事件
 
接受答案了.
 
后退
顶部