如何给动态生成的Form加上事件处理代码?(100分)

  • 主题发起人 主题发起人 Thinboy
  • 开始时间 开始时间
T

Thinboy

Unregistered / Unconfirmed
GUEST, unregistred user!
如何给动态生成的Form加上事件处理代码?
我现在用一个过程如下:
procedure ShowForm(FormClass:TFormClass;
var Form);
begin
Application.CreateForm(FormClass,Form);
Form.OnClose:=CloseForm;

end;

procedure CloseForm;
begin
...
end;

这一段程序,在Form.OnClose:=CloseForm这里就出错了,
问题在于Form这个变量,访问不了OnClose, 且还有其它
属性都不能访问,有什么方法吗?
谢谢!
 
OnClose定义如下:
TCloseEvent = procedure(Sender: TObject;
var Action: TCloseAction)
of object;
1.你要把你的CloseForm设为
procedure CloseForm(Sender: TObject;
var Action: TCloseAction);
2.ShowForm中设一变量 Var AForm:TForm
AForm:=TForm(Form)
然后AForm.onClose:=CloesForm;

如下:
type
TForm1 = class(TForm)
private
{ Private declarations }
public
procedure CloseForm(Sender: TObject;
var Action: TCloseAction);
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.DFM}
procedure ShowForm(FormClass:TFormClass;
var Form);
Var
a:TForm;
begin
Application.CreateForm(FormClass,Form);
A:=TForm(Form);
A.OnClose:=form1.CloseForm;
end;
procedure TForm1.CloseForm(Sender: TObject;
var Action: TCloseAction);
begin
ShowMessage('Close');
end;
end.

 
就这样。
 
关键是要把closeform这个proceduer定义在public部分,这样动态定义的东东
就可以访问它了.
 
nose忘了一点, 他只注意到了参数表相同, 却忘了of object.
^^^^^^^^^^
必须是类似:
procedure TMyForm.CloseForm(.......);
才行.
 
你不是在举例吧。onclose还用得着这样吗?
 
关键是自定义处理事件的参数要符合事件规定参数:-)
 
接受答案了.
 
后退
顶部