unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBGrids, ComObj, StdCtrls, Grids;type // 声明一个函数指针类型
TUpAniInfoProc = procedure(const sInfo: string) of object; TForm1 = class(TForm)
btn1: TButton;
DBGrid1: TDBGrid;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure UpAniInforpoc(const sInfo:string);
end;function DBGridToExcel(dgrSource: TDBGrid;
UpAniInfo: TUpAniInfoProc = nil): Integer;var
Form1: TForm1;implementation{$R *.dfm}function DBGridToExcel(dgrSource: TDBGrid; UpAniInfo: TUpAniInfoProc): Integer;
begin
// do something...
end;{ TForm1 }// TUpAniInfoProc = procedure(const sInfo: string) of object;
// of object 表示这个函数是某一个对象的成员函数,这个对象没有交代,未可知,暂用TForm
// 如此,参数 const sInfo: string 也是无意义的
procedure TForm1.UpAniInforpoc(const sInfo: string);
begin
// do something...
end;// 调用
procedure TForm1.btn1Click(Sender: TObject);
begin
DBGridToExcel(DBGrid1, Self{Form1}.UpAniInforpoc);
end;end.
解决方案 »
- 不显示删除回复显示所有回复显示星级回复显示得分回复 跪求高手啊,我每次按了ctrl+f2也就是program reset的时候,都会弹出下面的对话框,然后就必
- cxgrid fix band 在56s版本怎么就有问题了?
- 数据精度问题
- delphi编译报错 too many resoutces to hands
- 在线急等。请大家帮忙。控件自动排列。
- 关于删除的问题
- ACCESS数据库中这样的sql如何写啊?高手请进。
- 请教变量问题
- 在线等待:超过800K的大字段
- 在调用datetime函数取系统当前时间,如何把其年、月、日分割开来?
- 谁有用delphi写的权限控制的代码呢?共享一下
- delphi 能做Windows ce开发吗
不过看LZ的代码,设计好像有问题,而且貌似也基本没有OOP的概念。
TUpAniInfoProc = procedure (const sInfo: string) of object;
这是一个过程类型,有“of object”的是方法指针,具体实现是要参考该对象的实现过程,意思是该对象中找一个名称相同(UpAniInfoProc)参数相同的方法。如果不加“of object”的话,就在全局找。
你在调用DBGridToExcel函数的时候,对TUpAniInfoProc类型参数的指定要看你是用的那个类了,比如A类实现了这个过程,B类也实现了这个过程,用哪个类就掉用哪个类的过程。
2楼说的参数无意义不对吧
个人认为是这样的,这种方法很少用到,只是在看delphi的源码的时候经常见到