DELPHI新手求教个很基础的问题----一直没弄懂----------麻烦大家帮下!!!
1.关于TNotifyEvent的使用
-----定义
private
FOnClick: TNotifyEvent;
public
property OnClick:TNotifyEvent read FOnClick write FOnClick;
----使用
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.OnClick:=FOnClick;
end;
--------------------------
这样子做有什么用?网上找了TNotifyEvent总是那两上例子,没看懂。。。
----------------------------------
2.另外再问个简单的小问题:为什么私有变量很多程序里前缀都加“F”来标识呢?
这个F是什么英文意思吗?
[解决办法]
F->数据域(Field)的意思
就像类名T开头->Type意思
至少TNotifyEvent
就像你定义一个字符类型变量s:string一样
只不过它表示的是事件的方法指针,指向一个函数地址;这个函数可以是自己写的,也可以是系统的
这是我的见解,有错之处,楼下解释一下哈
[解决办法]
FOnClick是内部触发的事件;
我们只关心OnClick,这是供外部调用的接口,一旦设置OnClick属性,FOnClick就会执行。
例:
双击button1,会产生button1click事件,这个可以看作是TNotifyEvent的具体实例了
当然也可以自定义,如:
Procedure Txx.xxoo(Sender:TObject);
Begin
…
End;
赋值:
Button1.onclick:=xxoo;
即只要设置了OnClick方法,就会触发read/write过程(即FOnClick);
[解决办法]
FOnClick是一个事件指针,可以从外部传递过来,方便执行类外部自己定义的东西
[解决办法]
就像5L说的,事件声明后,可以从外部传递事件方法,就像你写buttonclick,组件publiced的事件是可以对外发布的,但是事件是消息驱动的,光写事件还不行,还要把消息处理也写进去,让消息处理函数去调用事件方法,详细例子就不贴了,delphi代码里有的是,点进去找个简单的例如tbutton看看就明白了
[解决办法]
- Delphi(Pascal) code
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); private FMyEvent:TNotifyEvent; procedure TriggerMyEvent(Sender:TObject); public property OnMyEvent:TNotifyEvent read FMyEvent write FMyEvent; end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.TriggerMyEvent(Sender: TObject);begin ShowMessage('This is a self event, just simple!');end;procedure TForm1.FormCreate(Sender: TObject);begin Form1.OnMyEvent:= TriggerMyEvent; Button1.OnClick:=Form1.OnMyEvent;end;end.