想在DLL中引入控件的事件,比如TTimer的OnTimer事件在DLL中触发,但是不知道如何写这个方法,
把Procedure OnTimer(Sender: TObject);这个过程赋值给Timer的OnTimer属性显然是不行的,因为事件方法中有一个隐含的Self参数,而在dll中申明的方法不是类的成员也就不具备Self参数,所以赋值不成功。
那要如何申明这个过程呢?依稀记得以前有个大侠写过这种方法,好像是这个样子的:procedure OnTimer(Sender: TObject) of calss;
但是上面的那个方法编译通不过,显然有误。
在此特向大侠们请教。
把Procedure OnTimer(Sender: TObject);这个过程赋值给Timer的OnTimer属性显然是不行的,因为事件方法中有一个隐含的Self参数,而在dll中申明的方法不是类的成员也就不具备Self参数,所以赋值不成功。
那要如何申明这个过程呢?依稀记得以前有个大侠写过这种方法,好像是这个样子的:procedure OnTimer(Sender: TObject) of calss;
但是上面的那个方法编译通不过,显然有误。
在此特向大侠们请教。
解决方案 »
- delphi基础问题:char字符数组赋值。
- 请教浮点数循环写法.
- delphi 安装PageControl问题
- 有一段代码看不懂能否解释?谢谢.
- 在delphi中怎么样把JPEG,bmp,png,tif等格式文件转换为JPG
- 高分请教,ACTIVEFORM远程访问文件的问题!
- 我做了一套分布式应用开发环境和应用服务器,有兴趣的进来看看
- 求教!如何用DELPHI实现ORACLE 8i数据库的数据导出和导入!(急!!!!!)
- Delphi求指点
- 小弟我水平不够,请大家帮帮忙
- 研究了半天,终于找出了如何在没有excel的情况下将数据导出成excel文件的方法
- fastreport打印报表的问题?急!
可惜我没有《delphi 深度历险》这本书,不过这本书的知名度早已如雷贯耳。在下倒是有《delphi 深度探索》一书。
uses Classes ...
procedure SetOnTimeEvent(Aproc:TNotifyEvent);stdcall;
...
...
procedure SetOnTimeEvent(Aproc:TNotifyEvent);
begin
if Assigned(Aproc) then
Timer.OnTimer := Aproc;
end;
//--------------------------------------------
在调用程序中
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
public
procedure ProcOnTimeEvent(Sender:TObject);
end;
...
...
procedure TForm1.FormCreate(Sender: TObject);
begin
SetOnTimeEvent(ProcOnTimeEvent);//将ProcOnTimeEvent赋给DLL中Timer的OnTimer
end;procedure TForm1.ProcOnTimeEvent(Sender: TObject);
begin
//OnTimer事件中要执行的动作
end;
我给两个建议:
1.SetTimer();把DLL种的一个OnTimer过程指针传进去!
2.做一个回调函数,在调用段也是把函数基址传进去
protected
Timer:TTimer;
procedure DoOnTime(Sender:TObject);//将此赋给Timer.OnTimer
public
constructor Create(AOwner: TComponent);override;
destructor Destroy;
...
...
end;