类里面的事件委托怎么搞

自然静 2013-11-23 03:35:47
看delphi高手突破,对其中的事件委托比较迷惑。写的下面的代码不能运行,请高手们指导一下:

//定义部分
type
TForm1 = class(TForm)
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
procedure UserMethod(msg: string); //委托指定的用户自定义方法


{ Private declarations }
public
{ Public declarations }
end;

type
TParent = class
private
a: Integer;
public
constructor Create();
procedure geta;
end;

TssnEditorEvent = class
private
// 回调函数指针
m_OnEditorChange: TNotifyEvent;
public
procedure OnEditorSelectionChange(Sender: TObject);
procedure SetOnEditorSelectionChange(Value: TNotifyEvent);
end;

//使用部分,

var
g_EditorEvent: TssnEditorEvent = nil;



procedure TForm1.btn1Click(Sender: TObject);
var
p: TParent;
e: TssnEditorEvent;
begin
//
p := TParent.Create;
e := TssnEditorEvent.Create;

e.SetOnEditorSelectionChange(UserMethod);
p.geta;

e.Free;
p.Free;
end;

procedure TForm1.UserMethod(msg: string);
begin
showmessage(msg);
end;

{ TParent }

constructor TParent.Create;
begin
a := 1;
end;

procedure TParent.geta;
begin
g_EditorEvent.OnEditorSelectionChange(nil);
ShowMessage('from a class named parent: ' + IntToStr(a));
end;

{ TssnEditorEvent }

procedure TssnEditorEvent.OnEditorSelectionChange(Sender: TObject);
begin
if Assigned(m_OnEditorChange) then
m_OnEditorChange(Sender); // 调用回调函数
end;

procedure TssnEditorEvent.SetOnEditorSelectionChange(Value: TNotifyEvent);
begin
m_OnEditorChange := Value;
end;


...全文
89 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Frank6600 2013-11-23
  • 打赏
  • 举报
回复
TSelectionChangeEvent = procedure(Sender: TObject; msg: string) of object; TssnEditor = class private FOnSelectionChange: TSelectionChangeEvent; procedure Select; public property OnSelectionChange: TSelecionChangeEvent read FOnSelectionChange write FOnSelectionChange; end; procedure TForm1.UserMessage(Sender: TObject; msg: string); begin showmessage(msg); end; procedure TssnEditor.Select; begin if Assigned(FOnSelectionChange) then FOnSelectionChange(Self, 'hi, selection change.....'); end; e.OnSelectionChange:=UserMessage;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧