这个算不算delphi中的委托(50)

  • 主题发起人 主题发起人 qi_jianzhou
  • 开始时间 开始时间
Q

qi_jianzhou

Unregistered / Unconfirmed
GUEST, unregistred user!
在看 .net 的委托时想到了欢迎大家讨论ps:不要看我的变量命名,我是随意命名的--------------unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TTestProd = procedure (aName:string); TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private procedure showName(aaa:TTestProd;aName:string); //procedure show1(aName:string); //procedure show2(aName:string); public { Public declarations } end;procedure show1(aName:string);procedure show2(aName:string);var Form1: TForm1;implementation{$R *.dfm}{ TForm1 }{ TForm1 }procedure show1(aName: string);begin ShowMessage('中车'+aName);end;procedure show2(aName: string);begin ShowMessage('中车222'+aName);end;procedure TForm1.showName(aaa: TTestProd; aName: string);begin aaa(aName);end;procedure TForm1.Button1Click(Sender: TObject);var at:TTestProd; f:TForm1;begin f := TForm1.Create(Application); at := show1; self.showName(at,'aaa'); at := show2; self.showName(at,'aaabbbb');end;end.
 
这样做只是类似单独的委托,实际还是函数指针而C#里委托关键的一点是可以一次执行多个委托函数类似如下代码var at:TTestProd;begin at += show1; {当然delphi里没有这样的语法...-_-} at += show2; self.showName(at,'aaa');end;最后会执行ShowMessage('中车aaa');ShowMessage('中车222aaa');
 
也是,delphi 没有那个同时有多个委托函数,怎么说 delphi 也不弱,只是不怎么注意罢了,呵
 
类似的功能,
 
自己写一个啊,搞个Tlist,放函数指针,然后就可以 一次调用 多个委托函数,
 

Similar threads

I
回复
0
查看
752
import
I
I
回复
0
查看
390
import
I
I
回复
0
查看
560
import
I
I
回复
0
查看
551
import
I
后退
顶部