加载中…
个人资料
jepsen1
jepsen1
  • 博客等级:
  • 博客积分:0
  • 博客访问:146,507
  • 关注人气:42
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

Delphi7中委托的用法

(2011-01-15 11:18:33)
标签:

杂谈

        委托是一个类,所以其使用同类一样,需要两阶段.声明(定义)委托,创建委托一个或多个实例.
         声明委托语法
        delegate void Operation(unit x);

(定义的这个委托代表方法没有返回值,且有一个unit参数.
        delphi中  

TNotifyEvent = procedure(Sender: TObject) of object;

   在delphi下实现回调的例子

1 {
2 使用委托,将方法做为别一个方法的参数传递的例子(回调)
3 }
4 unit Unit1;
5
6 interface
7
8 uses
9    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
10    Dialogs, StdCtrls;
11
12 type
13    TDelegateClass=procedure(msg:string) of object;//定义一个委托
14    TDelegateClassArray=array[0..1] of TDelegateClass;
15    TForm1 = class(TForm)
16      Button1: TButton;
17      Button2: TButton;
18      procedure Button1Click(Sender: TObject);
19      procedure Button2Click(Sender: TObject);
20   private
21      { Private declarations }
22      procedure UserMethod(msg:string);//委托指定的用户自定义方法
23      procedure UserMethod2(msg:string);//委托指定的用户自定义方法2    
24      procedure doDelegate(Delegate:TDelegateClass;msg:string);//如果委托实例存在,就执行委托
25   public
26      { Public declarations }
27    end;
28
29 var
30    Form1: TForm1;
31
32 implementation
33
34 {$R *.dfm}
35
36 { TForm1 }
37
38 procedure TForm1.doDelegate(Delegate:TDelegateClass;msg:string);
39 begin
40   if Assigned(Delegate) then
41    Delegate(msg);
42 end;
43
44 procedure TForm1.Button1Click(Sender: TObject);
45 begin
46    doDelegate(UserMethod,'test');//调用委托处理程序,显示test信息
47 end;
48
49 procedure TForm1.UserMethod(msg: string);
50 begin
51    showmessage(msg);
52 end;
53
54 procedure TForm1.Button2Click(Sender: TObject);
55 var
56    test:TDelegateClassArray;
57 begin
58    test[0]:=UserMethod;
59    test[1]:=UserMethod2;
60    doDelegate(test[0],'test');
61    doDelegate(test[1],'test');
62 end;
63
64 procedure TForm1.UserMethod2(msg: string);
65 begin
66    showmessage('这是第二个方法');
67 end;
68
69 end.

0

阅读 收藏 转载 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有