如何在dll中引入VCL组件的事件。

hexenzhou 2004-06-24 02:23:14
想在DLL中引入控件的事件,比如TTimer的OnTimer事件在DLL中触发,但是不知道如何写这个方法,
把Procedure OnTimer(Sender: TObject);这个过程赋值给Timer的OnTimer属性显然是不行的,因为事件方法中有一个隐含的Self参数,而在dll中申明的方法不是类的成员也就不具备Self参数,所以赋值不成功。
那要如何申明这个过程呢?依稀记得以前有个大侠写过这种方法,好像是这个样子的:procedure OnTimer(Sender: TObject) of calss;
但是上面的那个方法编译通不过,显然有误。
在此特向大侠们请教。
...全文
172 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hexenzhou 2004-06-25
  • 打赏
  • 举报
回复
谢谢delphi_xizhousheng兄:

Timer还可以用SetTimer之类的API函数搞定,那其他的VCL组件的事件怎么办,该不会都用API函数吧,偶的DLL里还有WinSocket以及其他的VCL组件哦!
delphi_xizhousheng 2004-06-25
  • 打赏
  • 举报
回复
亲爱的朋友:
我给两个建议:
1.SetTimer();把DLL种的一个OnTimer过程指针传进去!
2.做一个回调函数,在调用段也是把函数基址传进去
hexenzhou 2004-06-25
  • 打赏
  • 举报
回复
自己再up!难道就真的找不到答案吗?
firef 2004-06-25
  • 打赏
  • 举报
回复
既然OnTimer就是要赋给个对象方法,就在Dll中定义个类,也没什么不行啊

TMyObject = class(TComponent)
protected
Timer:TTimer;
procedure DoOnTime(Sender:TObject);//将此赋给Timer.OnTimer
public
constructor Create(AOwner: TComponent);override;
destructor Destroy;
...
...
end;
hexenzhou 2004-06-24
  • 打赏
  • 举报
回复
to firef兄:OnTimer要在Dll中触发哦,不是引出去。
firef 2004-06-24
  • 打赏
  • 举报
回复
Timer是在DLL中吗?

//在dll中定义个对外函数
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;
hexenzhou 2004-06-24
  • 打赏
  • 举报
回复
引入一个Form后,dll增加了700多k的数据沉余,感觉很不爽。
hexenzhou 2004-06-24
  • 打赏
  • 举报
回复
难道遇见aiirii兄,在下甚感欣慰!
可惜我没有《delphi 深度历险》这本书,不过这本书的知名度早已如雷贯耳。在下倒是有《delphi 深度探索》一书。
aiirii 2004-06-24
  • 打赏
  • 举报
回复
<<delphi 深度歷險>> 說的比較詳細
aiirii 2004-06-24
  • 打赏
  • 举报
回复
簡單點的, 引入一個form就可
hexenzhou 2004-06-24
  • 打赏
  • 举报
回复
自己up一下!

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧