应该给Edit1的onExit属性设置一个TNotifyEvent类型的值。TNotifyEvent的定义如下:
type
TNotifyEvent = procedure(Sender: TObject) of object;
因此,你的DoExit过程应该这样写:
procedure DoExit(Sender: TObject);
begin
...
end;你上面写的function DoExit(?):?是错误的,肯定通不过编译。
type
TNotifyEvent = procedure(Sender: TObject) of object;
因此,你的DoExit过程应该这样写:
procedure DoExit(Sender: TObject);
begin
...
end;你上面写的function DoExit(?):?是错误的,肯定通不过编译。
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure doExit(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.doExit(Sender: TObject);
begin
ShowMessage('Edit1 Exit');
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.onExit:=doExit;
end;end.
能否给一个带多点源码的?
blucecat:
不想这样写。
procedure doExitCheck(Sender: TObject);
begin
ShowMessage('Edit1 Exit');
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.onExit:=doExitCheck;
end;注意:procedure doExitCheck(Sender: TObject);不是类成员函数。今天我这样实现了procedure DoExitCheck(Sender: TObject);
begin
showmessage('333'); //没问题
sender.ClassName ; //有问题
end;procedure TDateWindow.Button6Click(Sender: TObject);
var
proc: procedure(Sender :TObject) of object;
begin
@proc:=@DoExitCheck;
Edit1.OnExit :=proc;
end;为什么访问sender参数时有问题?
> sender.ClassName ; //有问题 showmessage( (sender as TEdit).classname);
^^^^^^^^^^^^^^^^
编译一下你就知道了,Sender变量访问不了。