首页 > 其他分享 >delphi 回调函数例子 用函数过程作为参数

delphi 回调函数例子 用函数过程作为参数

时间:2023-06-07 21:14:01浏览次数:35  
标签:begin end 函数 delphi TForm1 例子 procedure string

转:
今天有个朋友问我怎么用函数或者过程作为函数的参数呢,我说网上有挺多的,然而他告诉我很多例子运行不起来,我搜了几个测试了下,不知道是不是我自己的软件版本的问题,运行不了,所以自己研究了下,把自己能运行的贴出来,和大家分享分享。


先说说回调函数需要注意的几个步骤吧,

首先要声明一个类型;

type TProc = procedure(str:string) of object; //这里的of object 一定要,不然会出错,也可能是有些方法自己不知道吧,希望知道的可以告诉一声;


第二步:定义一个过程

 

procedure test(str:string); //注意这个作为参数的函数内部的参数必须和TProc 的参数一样;
begin
showmessage(str);
end



第三步 定义一个调用test 这个函数的函数


procedure dotest(F:TProc);
begin
F('这是回调函数的测试');
end

第四步 就可以使用了

procedure show();
begin
dotest(test);
end

如果还是不明白就来电简单的完整的例子吧


unit Unit1;

interface

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

type
TFunc = procedure() of object;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function myTest(f:TFunc):string;
procedure abc();
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.abc;
begin
showmessage('这是回调函数测试');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
myTest(abc);
end;

function TForm1.myTest(f:TFunc):string;
begin
f();
end;

end.

 

测试结果是这样的

 


————————————————
版权声明:本文为CSDN博主「创意VS灵感之雨轩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014028956/article/details/46810537

标签:begin,end,函数,delphi,TForm1,例子,procedure,string
From: https://www.cnblogs.com/wzycode/p/17464565.html

相关文章

  • MATLAB中的函数句柄 理解
    #MATLAB中的函数句柄理解https://zhuanlan.zhihu.com/p/266263265##1、何为函数句柄?函数句柄也是MATLAB中的一种常见的数据类型,它的地位类似于其它计算机语言里的函数对象(Javascript,Python),函数指针(C++),或者函数引用(Perl)。它的作用是将一个函数封装成一个变量,使其能够像其......
  • 基础版EMD分解函数Matlab程序
    不调用matlab自带emd(x)函数,将其内容简化为如下部分EMD分解基础步骤可以参见:[意念回复:经验模态分解(EMD)](https://blog.csdn.net/weixin_39910711/article/details/124661068?spm=1001.2014.3001.5506)原始程序为百度搜索,结合ChatGPT后给出相应注释。%EMD分解程序%作者:CSDN:Mis......
  • 函数
       ......
  • 9、hive的explode、Lateral View侧视图、聚合函数、窗口函数、抽样函数使用详解
    ApacheHive系列文章[1、apache-hive-3.1.2简介及部署(三种部署方式-内嵌模式、本地模式和远程模式)及验证详解][2、hive相关概念详解--架构、读写文件机制、数据存储][3、hive的使用示例详解-建表、数据类型详解、内部外部表、分区表、分桶表][4、hive的使用示例详解-事务表、......
  • PYQT内setFocus函数的作用
    setFocus()函数是QWidget类的一个成员函数,用于将焦点设置到该QWidget上。当一个QWidget被设置为焦点时,它将成为键盘事件的接收者,可以响应键盘事件。在PyQt5中,可以使用setFocus()函数将焦点设置到任何QWidget上,例如QPushButton、QLineEdit、QTextEdit等。当用户点击这些控件时,它们......
  • 【体验有奖】玩转 AIGC,函数计算 x 通义千问预体验,一键部署 AI 应用赢 Airpods
    玩转AIGC,基于函数计算FC部署通义千问预体验从文字生成到图片生成,AIGC的创造力让人惊叹,更多的人开始探索如何使用AI提高生产效率,激发更多创作潜能,然而在实际应用中,AI技术的高门槛让很多人望而却步,普通开发者和零编程经验的人是否也能简单快速地部署一个AI模型应用,享受到科......
  • C++ 友元函数
    类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友......
  • 006 数据库学习笔记--字符串操作函数 + 索引
    常用字符串操作函数:--返回字符串中指定的子串出现的开始位置(索引从1开始)selectCHARINDEX('34','1234567890123')asstartIndex--返回字符串中指定的子串出现的开始位置(索引从1开始,字串前必须加%)selectPATINDEX('%34%','1234567890123')asstartIndex--大小写转化s......
  • js 获取函数的调用者
    办法严格模式arguments.callee.caller不给使用了歪路子截取newError()的报错字符串stackconstgetCall=()=>{letcallArr=newError().stack.split("\n");callArr.splice(0,3);constpattern=/at(\w+)/;callArr=callArr.map(it=>(it.match(patt......
  • 7、hive shell客户端与属性配置、内置运算符、函数(内置运算符与自定义UDF运算符)
    ApacheHive系列文章1、apache-hive-3.1.2简介及部署(三种部署方式-内嵌模式、本地模式和远程模式)及验证详解2、hive相关概念详解--架构、读写文件机制、数据存储3、hive的使用示例详解-建表、数据类型详解、内部外部表、分区表、分桶表4、hive的使用示例详解-事务表、视图、物......