社区
Delphi
帖子详情
关于TNotifyEvent事件响应函数指针
slough
2002-09-23 10:00:28
本人打算声明一个普通的procedure,然后将其指针赋予菜单项MenuItem的OnClick事件(TNotifyEvent指针),编译报“类型无效”;尝试用一个Form的方法(响应该Form的某菜单项的OnClick事件)赋予原来那个菜单项的OnClick,倒是可以实现。
不知那位大侠能帮我把程序再提高一些?就是实现用普通的过程指针转换成TNotifyEvent指针?
...全文
137
6
打赏
收藏
关于TNotifyEvent事件响应函数指针
本人打算声明一个普通的procedure,然后将其指针赋予菜单项MenuItem的OnClick事件(TNotifyEvent指针),编译报“类型无效”;尝试用一个Form的方法(响应该Form的某菜单项的OnClick事件)赋予原来那个菜单项的OnClick,倒是可以实现。 不知那位大侠能帮我把程序再提高一些?就是实现用普通的过程指针转换成TNotifyEvent指针?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
slough
2002-09-24
打赏
举报
回复
感谢Del_C_Sharp的发表!!
不过@取出来的函数的入口点没必要再用Pointer转化,直接可以复制给另一个函数入口点。
另外两位没理解我的意思,恕不能给分了,抱歉!
stanely
2002-09-23
打赏
举报
回复
TNotifyenent其实就是一个指针类型。
mm:TNotifyEvent ;这句就是定义一个指针。当然初始化为空了。
如果你给mm负值指向一个procedure 的话,可以这样使用:
var
obj:tobject;
begin
mm(obj);
end;
stanely
2002-09-23
打赏
举报
回复
实现这个功能,你用TNotufyevent干什么?舍近求远呀!
直接来:
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.OnFormCreate(Sender: TObject);
var
item:tmenuitem;
begin
item:=tmenuitem.create(self);
item.onclick:=test;
mainitem1.add(item);
end;
procedure TForm1.test(Sender: TObject);
begin
showmessage(tmenuitem(sender).caption);
end;
stanely
2002-09-23
打赏
举报
回复
var
Form1: TForm1;
mm:TNotifyEvent ;
implementation
{$R *.dfm}
procedure TForm1.OnFormCreate(Sender: TObject);
var
item:tmenuitem;
begin
mm:=test;
item:=tmenuitem.create(self);
item.onclick:=mm;
mainitem1.add(item);
end;
procedure TForm1.test(Sender: TObject);
begin
showmessage(tmenuitem(sender).caption);
end;
del_c_sharp
2002-09-23
打赏
举报
回复
楼上可能没理解清楚.
应该这样
var
Form1: TForm1;mm:TNotifyEvent ;
implementation
{$R *.dfm}
procedure mmm(Sender: TObject);
begin
showmessage(' ');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
@mm:=pointer(@mmm);
button1.OnClick := mm;
end;
newyj
2002-09-23
打赏
举报
回复
没有问题
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
fdgg1: TMenuItem;
procedure ff(sender:tobject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{ TForm1 }
procedure TForm1.ff(sender: tobject);
begin
showmessage('ffff');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
fdgg1.OnClick := ff;
end;
end.
请大家去 http://www.new7wonders.com/c/voting.php 投长城一票
在C++ Builder中定义
事件
如果你用过VC,你就知道在VC中并不存在什么
事件
,而只有消息处理函数,而在C++ BUILDER中则是由
事件
处理函数来负责响应消息。同是,
事件
本身也是一
指针
,它是一个闭包,通常在C++ BUILDER中有两种
事件
:通知类型
事件
...
C++Builder 动态生成定时器,创建定时器管理类
定时器是做客户端时常用的一类控件,只需要设置定时时间,开启定时器,然后创建定时
事件
响应函数
,就能定时执行特定的功能,用起来很方便。当时当工程比较大,定时器比较多时,界面看起来就会比较混乱,当定时器名字...
Delphi学习-
事件
机制
这里就是今天要说的了,那就是
事件
机制,众所周知Windows下各个Win32程序的运作都是通过消息来驱动的,而Delphi则将各种各样的消息包装,于是成为了
事件
,比如你想写一个按钮,让用户点这个按钮的时候,弹出一个...
Delphi7.0常用函数-属性-
事件
abort 函数 引起放弃的意外处理 addexitproc 函数 将一过程添加到运行时库的结束过程表中 addr 函数 返回指定对象的地址 adjustlinebreaks 函数 将给定字符串的行分隔符调整为cr/lf 序列 allocmem 函数 在堆栈上...
在C++ Builder中定义
事件
(转)
在C++ Builder中定义
事件
(转)[@more@]在C++ BUILDER中,
事件
是一种委托模型,它是对消息的封装。如果你用过VC,你就知道在VC中并不存在什么
事件
,而只有消息处理函数,而在C++ BUILDER中则是由...
Delphi
5,378
社区成员
262,720
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章