社区
Delphi
帖子详情
关于TNotifyEvent事件响应函数指针
slough
2002-09-23 10:00:28
本人打算声明一个普通的procedure,然后将其指针赋予菜单项MenuItem的OnClick事件(TNotifyEvent指针),编译报“类型无效”;尝试用一个Form的方法(响应该Form的某菜单项的OnClick事件)赋予原来那个菜单项的OnClick,倒是可以实现。
不知那位大侠能帮我把程序再提高一些?就是实现用普通的过程指针转换成TNotifyEvent指针?
...全文
161
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 投长城一票
delphi
事件
赋值操作
在Delphi编程中,
事件
(
Event
s)是一种特殊的函数
指针
,用于传递方法或者回调机制,使得对象之间可以进行通信。
事件
赋值操作是Delphi中一个重要的概念,它允许我们动态地将一个方法绑定到特定的
事件
上。下面将详细...
在C++ Builder中定义
事件
如果你用过VC,你就知道在VC中并不存在什么
事件
,而只有消息处理函数,而在C++ BUILDER中则是由
事件
处理函数来负责响应消息。同是,
事件
本身也是一
指针
,它是一个闭包,通常在C++ BUILDER中有两种
事件
:通知类型
事件
...
C++Builder 动态生成定时器,创建定时器管理类
定时器是做客户端时常用的一类控件,只需要设置定时时间,开启定时器,然后创建定时
事件
响应函数
,就能定时执行特定的功能,用起来很方便。当时当工程比较大,定时器比较多时,界面看起来就会比较混乱,当定时器名字...
在C++ Builder中定义
事件
(转)
在C++ Builder中定义
事件
(转)[@more@]在C++ BUILDER中,
事件
是一种委托模型,它是对消息的封装。如果你用过VC,你就知道在VC中并不存在什么
事件
,而只有消息处理函数,而在C++ BUILDER中则是由...
Delphi学习-
事件
机制
这里就是今天要说的了,那就是
事件
机制,众所周知Windows下各个Win32程序的运作都是通过消息来驱动的,而Delphi则将各种各样的消息包装,于是成为了
事件
,比如你想写一个按钮,让用户点这个按钮的时候,弹出一个...
Delphi
5,930
社区成员
262,938
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章