屏蔽的事件,如何恢复(100分)

  • 主题发起人 主题发起人 celeries
  • 开始时间 开始时间
C

celeries

Unregistered / Unconfirmed
GUEST, unregistred user!

onheld是我控件中的一个定义的事件
定义事件代码
property OnHeld: TNotifyEvent read FOnHeld write FOnHeld;

现在我在控件中用 onheld:=nil 屏蔽了这个事件,
但在之后我需要用到这个事件,请问如何恢复.????

抛出事件代码
if Assigned(OnHeld) then
FOnHeld(self);
 
你可以这样试以下! 定义一个事件类型指针的变量。
用它保存你将要屏蔽的事件指针,你想恢复的时候,再从
便量那里取回来!这样做我认为可以的。我没有时间帮你测试!
 
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
myPostEvent,FmyEvent: TNotifyEvent;
procedure UserDeclare(sender: TObject);

public
{ Public declarations }
property myEvent: TNotifyEvent read FmyEvent write FmyEvent ;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
uses unit2;
procedure TForm1.UserDeclare(sender: TObject);
begin
ShowMessage('OK'); //这里是用户自定事件的实现代码
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
//Form2.ShowModal;
if Assigned(FmyEvent) then
begin
FmyEvent(nil);
myPostEvent := FmyEvent;//这里是保存原来的事件指针
end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
FmyEvent := UserDeclare; // 这里是赋用户自定义的事件指针
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
FmyEvent := nil;//屏蔽事件!
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
FmyEvent := myPostEvent; //恢复事件指针
end;

end.
看看这里应该会做了吧!
 
接受答案了.
 
后退
顶部