在一个TForm类的定义部分,在published部分,即private之前的定义控件、事件的部分,自定义一个过程,如procedure aaa(Sender:TObject;var Key:Char);参数部分与KeyPress事件的相同,在窗体内部的含有KeyPress事件的控件中,就可以在属性编辑器中直接选择这个过程作这这一事件的处理过程,小弟有一疑问,Delphi是如何关联特定事件和过程的?就像我们可以手动用代码指定一个事件的处理过程一样:如在如上定义一个键盘处理事件后,可以用Edit1.OnKeyPress:=aaa来指定TEdit1的键盘处理事件就是过程aaa.请高手帮忙,解决心中疑问,如果觉得分不够,我可以再发贴给分。
如果有相关的文章,请转贴,如果有相关的电子书,请给一个书名或地址,小弟在些谢过了。
如果有相关的文章,请转贴,如果有相关的电子书,请给一个书名或地址,小弟在些谢过了。
解决方案 »
- 有点难度的问题,能否截获SQL并且修改执行
- 非主窗体最小化时,如何让其出现在任务栏,而不是屏幕的左下角?
- 谁能告诉我,那个好用的输入IP地址的控件,救命啊!!!!!!
- 经过一段时间的努力,为公司开发了一个小东东,大家去看看啊!多提意见!
- 这就是程序员的下场吗? 今天公司一位30多的程序员惨遭解雇
- 软件,希望提出建议
- 报表问题:如何控制多条数据(每条一页)每页我要加入一个给定的当前记录的两个子段的和。用RQLabel表示
- 怎么编程比较两编word的文档完全一致,包括字体大小,颜色等等
- 调用ComboBox的Text值作为数据库名称查询数据
- 这个sql语句好难写,sql高手请进。
- 做个测试的
- 实现象windows点选的功能,我动态创建了一些PANEL,当压住CTRL的时候可以连续的选PANEL,PANEL的颜色
实际是函数指针
procedure TWinControl.KeyPress(var Key: Char);
begin
if Assigned(FOnKeyPress) then FOnKeyPress(Self, Key);
end;
有两种形式,第一种是你手动写关联代码,就像你说的那样:
如在如上定义一个键盘处理事件后,可以用Edit1.OnKeyPress:=aaa来指定TEdit1的键盘处理事件就是过程aaa.,相信你应该明白它内部的关联的吧,和二楼写的一样。第二是IDE帮助你关联,你双击对象察看器中的OnKeyPress,那么窗体类中就自动生成一个事件处理函数给你写代码,而这时你却看不到OnKeyPress和那个处理函数关联的代码,即看不到这样的代码:Edit1.OnKeyPress:=aaa。那是因为IDE把关联写到DFM文件中了,所以你看不到
你这样做:建一个工程,在From1的对象察看器中双击OnKeyPress事件,生成一个事件处理函数。然后在窗体设计器中右击菜单,选View As Text项。则可以看到下面的DFM文件了:object Form1: TForm1
Left = 158
Top = 119
Width = 544
Height = 375
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnKeyPress = FormKeyPress//看到了没有,DFM文件已经帮你关联好了。
PixelsPerInch = 96
TextHeight = 13
end
实际是函数指针
zzllabc(抱朴子--清心释累,绝率忘情)
毕竟是带星的高人啊,
说到心里去了,给分。
zzllabc(抱朴子--清心释累,绝率忘情)
linzhengqun(风) 两位高人,
毕竟是带星的高人啊,
说到心里去了,给分。
zzllabc(抱朴子--清心释累,绝率忘情) 的话实际上是抄 meiqingsong(阿飛)
如果你要给分,应该给meiqingsong(阿飛)
千万不要因为他是星就忽视了三角的人。