关于对DELPHI事件驱动机制疑惑的问题 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

hntjc 2003-02-03 02:19:18
我编了一只工程,这工程(.dpr)文件里有两只FORM,名字分别为FORM1,FORM2

在FORM2的ONKEYUP里写了根据不同按鍵做不同功能的代码

FORM1呢USES了FORM2

我想在FORM1的ONKEYUP时调用FORM2的ONKEYUP事件

我这样来写了

form1.onkeyup 代码如下了
var
tempkey:word;

begin
tempkey:=key;
form2.onkeyup(nil,tempkey,[])
end;

上面代码的意思就是把按FORM1的鍵值传到form2里了,并且执行FORM2里相应的程序段

但根本不执行form2的onkeyup


为何会这样呢,哪里错了

...全文
36 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjb8000 2003-02-05
  • 打赏
  • 举报
回复
如果FORM2已创建,程序好象没问题,这种用法很常见,你在FORM2内调用试试!!
RamjetZhang 2003-02-05
  • 打赏
  • 举报
回复
begin
tempkey:=key;
form2.onkeyup(nil,tempkey,[])
end;

我用了很好,一点没错?
Eastunfail 2003-02-04
  • 打赏
  • 举报
回复
为什么不用SendMessage?
ehom 2003-02-04
  • 打赏
  • 举报
回复
OnKeyUp指向的不就是一个事件处理过程,直接或间接调用效果是等同的,不存在麻烦不麻烦的问题!

既然已经确定窗体室例已创建,这样试试!

if @Form2.OnKeyUp<>nil then Form2.OnKeyUp(nil,tempkey,[]);

如果不出错了,说明就是我上面说的第一个错误!
hntjc 2003-02-04
  • 打赏
  • 举报
回复
我的功能代码已经写在了FORM2的ONKEYUP里了

再按照楼上的大虾写一个过程了,搬来搬去了太麻烦了


我想直接从FORM1里调用FORM2的ONKEYUP事件

但用
FORM2.ONKEYUP(NIL,TEMPKEY,[])运行的时候了执行了出错

出错的信息好像了什么内存地址无效之类的

我的窗口了是工程里AUTOCREATE的
Billy_Chen28 2003-02-04
  • 打赏
  • 举报
回复
消息所响应的事件是由操作系统控制分发的,你最好采用手动发送相同的消息给FORM2
xiaoxiao_8 2003-02-04
  • 打赏
  • 举报
回复
或者这样也行:
form2.keyup(nil,tempkey,[])

直接写上子程序的名字,不要加ON
xiaoxiao_8 2003-02-04
  • 打赏
  • 举报
回复
既然是在FORM1 的ONKEYUP时调用FORM2中的一个过程,那不用搞得这么麻烦。
在FORM2中写一个过程,如procedure Form2.form1Keyup(key:word);
在Form1.onkeyup中,写一句: form2.form1keyup(key);
就可以了

RamjetZhang 2003-02-04
  • 打赏
  • 举报
回复
你的form2创建了否?只要建了,sender是nil或者form1倒无所谓;
执行时出错了?
hntjc 2003-02-04
  • 打赏
  • 举报
回复
楼上的大虾了你这句话什么意思啦

form2的那个处理程序了是在FORM2 的ONKEYUP里,怎么会运做在FORM1里呢


我只不过了是在FORM1里手工调用FORM2的ONKEYUP里


大家讨论讨论了
sunware 2003-02-03
  • 打赏
  • 举报
回复
上面代码的意思就是把按FORM1的鍵值传到form2里了

大错特错!

这只不过是把Form1的键值作参数传给Form2的那个处理程序了,而这个处理程序是运作在Form1里的.Form2可从来没接到过这么个按键消息哦!
ehom 2003-02-03
  • 打赏
  • 举报
回复
1.方法指针FOnKeyUp没有指向一对象方法,也就是没有给OnKeyUp赋一时间处理方法!

2.窗体实例Form2还未创建!
pilicat 2003-02-03
  • 打赏
  • 举报
回复
改为:
form2.onkeyup(form1,tempkey,[]);
试试看吧.

5,388

社区成员

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

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