当前位置: 首页 > news >正文

杭州专业做网站公司/网站空间租用

杭州专业做网站公司,网站空间租用,邢台做网站推广服务,酒店网站模板下载onclick是TNotifyEvent类型; type TNotifyEvent procedure(Sender: TObject) of object; 就是说他是一个过程,而且是有一个TObject的参数,并且包含在一个对象里~~ 关于类的方法: (不是类方法…

onclick是TNotifyEvent类型;    

type  

  TNotifyEvent   =   procedure(Sender:   TObject)   of   object;    

就是说他是一个过程,而且是有一个TObject的参数,并且包含在一个对象里~~  

关于类的方法:   (不是类方法,这里指object   pascal中的静态方法,相当于C++的成员函数)        

1:   带有隐含参数   self        

2:   方法是方法,数据是数据。        

3:Delphi的方法是一个结构              

type                  

TMethod   =   record                      

  Code:   Pointer;     //方法的入口地址                      

  Data:   Pointer;     //类实例指针(Self参数)                  

end;        

我们调用类的方法,其实分为2个部分,        

1:调用方法的代码,通过类来获得方法入口地址。        

2:访问对象的数据(也可能不访问),通过类的方法的那个隐含参数Self来访问。  

我做了一个测试:        

TMyObject   =   class        

  private            

    FName:   string;        

  public            

    procedure   ChangeName(AName:   string);            

    procedure   ShowPrivate;        

end;        

procedure   TMyObject.ChangeName(AName:   string);    

begin        

  FName   :=   AName;   //修改私有变量        

  ShowMessage('My   name   is   to   be   changed   to   '   +   AName);    

end;        

procedure   TMyObject.ShowPrivate;    

begin        

  ShowMessage('My   name   is   '   +   FName);    

end;        

procedure  

TForm1.Button1Click(Sender:   TObject);    

type        

TCallFun   =   procedure(AName:   string)   of   object;    

var        

E:   TMyObject;        

M:   TMethod;    

begin        

   E   :=   TMyObject.Create;        

  M.Code   :=   @TMyObject.ChangeName;   //这里设置要访问的方法的入口地址        

  M.Data   :=   @Pointer(E)^;       //设置Self参数,即类实例指针 @Pointer(E)^与Pointer(E)一样的         TCallFun(M)('Xbl');        

  E.ShowPrivate;     //My   name   is   Xbl        

  E.Free;    

end;    

 

  delphi里的普通函数指针pointer 为4个字节,但是对象的方法指针是8个字节,由对象指针self(4字节)和函数指针(4字节)组合而成. 将普通的函数指针变成对象的方法指针就不是难事了.

下面是简单的例子代码.

procedure  Button2Click(Sender: TObject);  //这里是一个普通的函数

implementation {$R *.DFM}

procedure  Button2Click(Sender: TObject);

begin  

  ShowMessage('1');

end;

procedure TForm1.Button1Click(Sender: TObject);

var  

  Method: TMethod;

begin  

  Method.Code := @Button2Click;      //取得Button2Click函数指针  

  Method.Data := nil;                               //也可以是self  

  Button2.OnClick := TNotifyEvent(Method);

end;  

 

How to execute a method (procedure/function) by name Category: Pascal Here's a simple trick to execute a Delphi object's method by name: ~~~~~~~~~~~~~~~~~~~~~~~~~

type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject) ;

procedure CallMeByName(Sender: TObject) ;

private

procedure ExecMethod(OnObject: TObject; MethodName: string) ;

end;

var

Form1: TForm1;

type

TExec = procedure of object;

procedure TForm1.ExecMethod(OnObject: TObject; MethodName: string) ;

var

Routine: TMethod;

Exec: TExec;

begin

Routine.Data := Pointer(OnObject) ;

Routine.Code := OnObject.MethodAddress(MethodName) ;

if NOT Assigned(Routine.Code) then Exit;

Exec := TExec(Routine) ;

Exec;

end;

procedure TForm1.CallMeByName(Sender: TObject) ;

begin

ShowMessage('Hello Delphi!') ;

end;

procedure TForm1.Button1Click(Sender: TObject) ;

begin

ExecMethod(Form1, 'CallMeByName') ;

end;

转载于:https://www.cnblogs.com/h2zZhou/p/5753165.html

http://www.jmfq.cn/news/4970485.html

相关文章:

  • 怎么推广app软件/襄阳seo优化排名
  • 西安做网站多钱/介绍产品的营销推文
  • 网络违法犯罪网站举报/seo效果分析
  • 广州佛山最新疫情/武汉seo优化顾问
  • 郑州网站制作怎么样/网站友链查询接口
  • 免费网站建设排行/swot分析
  • 长沙第三方网站建设公司/网络广告的计费方式
  • 欧派整装大家居装修公司加盟/厦门seo管理
  • 网站建设与维护工作/今天国际新闻大事
  • 专门做母婴的网站有哪些/搜狗推广效果好吗
  • 深圳网站建设营销服务平台/网站怎么做推广
  • 精准扶贫网站建设的意义/网络营销服务商有哪些
  • 河南郑州网站建设/网络营销与策划实践报告
  • 哪些网站可以做调查问卷/百度推广联系人
  • 做独立网站需要软件吗/淘宝数据分析
  • 郴州做网站的/营销管理培训课程
  • 家乡网站设计模板/百度seo优化推广公司
  • 茶山网站建设公司/营销网络推广
  • 旅游网站建设成都/杭州网站seo公司
  • 云主机服务器/深圳企业seo
  • wordpress 国内加速/哈尔滨网络优化推广公司
  • 嘉兴微信网站建设/专业网页设计和网站制作公司
  • 大连的网站设计公司/北京做的好的seo公司
  • 申请网站建设的请示/教你如何快速建站
  • 桂林北京网站建设/推广代理公司
  • 现在建网站/品牌营销案例
  • 护肤品 网站建设策划书/seo蜘蛛池
  • 怎么自己做彩票网站/seo代码优化工具
  • 长春seo网站建设费用/技能培训
  • 小说网站开发的看书软件/seo值是什么意思