高手问的问题 :)(100分)

  • 主题发起人 主题发起人 ypy
  • 开始时间 开始时间
Y

ypy

Unregistered / Unconfirmed
GUEST, unregistred user!
(不好意思,这个标题纯粹为了吸引眼球)

我想指定Edit的OnExit事件
procedure Form1.Create(...);
begin
Edit1.OnExit:=DoExit();
end;

function DoExit(?):?;
begin
// do something
end;

DoExit 函数是一个单独的函数不属于任何类,我的问题是:
这个函数的形式怎么表示(参数,返回值怎么写)?

注:不想这样写
procedure Edit1.OnExit(..);
begin
DoExit(..);
end;

procedure TEdit.CMExit(Var Message:TCMExit);
begin
inherited;
DoExit(..);
end;
我只想用上面的方法,怎么办?
 
procedure Form1.Create(...);
begin
Edit1.OnExit:=DoExit;
end;

procedure Form1.DoExit(Sender:TObject);
begin
// do something
end;
或者
procedure Form1.Create(...);
begin
Edit1.OnExit:=DoExit1;
end;

procedure DoExit1(Sender;TObject);
begin
DoExit(..);
end;

function DoExit(..):..;
begin
// do something
end;



 
不是我想要的,仔细看一下问题。
 
建议:
Delphi 1 中有源代码。
高版本Delphi中,不允许有这样的语法。
你见过 这样的语法(?):
type
pPointer=^5;
指针只指向指针!
 
DoExit是过程,不是函数
其参数和OnExit的一样
 
to ypy:
在 CoDelphi 上不是已经答复你了吗?
 
----------------------------------------------------------
function DoExit(?):?;
begin
// do something
end;

DoExit 函数是一个单独的函数不属于任何类,我的问题是:
这个函数的形式怎么表示(参数,返回值怎么写)?
----------------------------------------------------------

TNotifyEvent 事件必须有宿主,也就是说:
1)你必须在该类中建立过程;
2)OnExit 的声名:
type
TForm1 = class(TForm)
private
procedure DoExit1(Sender: TObject);
...
end;
3)DoExit1的使用:
...
DoExit1(Edit1); //这种情况指定 Edit1 为消息宿主对象;

DoExit1(nil); //不指定任何特定宿主
---------------------------------------------------------
不对,搞乱了------ 第 3)点
Edit1.OnExit := DoExit1;
处理后,DoExit1()中的 Sender 参数就是 Edit1。
Edit1 会自己传递这个参数。除非是你自己手工调用该方法(那么 3 是对的)。
 
接受答案了.
 
后退
顶部