unit Unit_global;interface
uses Forms,SysUtils;procedure MenuItemClick(Form_name:Tform;FormClass:TFormClass);
procedure close_window(form_name:Tform) ;implementation//菜单打开窗口
procedure MenuItemClick(Form_name:Tform;FormClass:TFormClass);
begin
if Form_name=nil then
begin
Form_name:=FormClass.Create(Application);
Form_name.OnClose:=close_window(Form_name);
Form_name.Show ;
end
else
Form_name.Show;
end;//关闭窗口事件
procedure close_window(form_name:Tform) ;
begin
form_name.Action.Free ;
form_name:=nil;
end;end.上述代码在编译时报错:[Error] Unit_global.pas(17): Incompatible types: 'TCloseEvent' and 'procedure, untyped pointer or untyped parameter'应该怎么写呢?
uses Forms,SysUtils;procedure MenuItemClick(Form_name:Tform;FormClass:TFormClass);
procedure close_window(form_name:Tform) ;implementation//菜单打开窗口
procedure MenuItemClick(Form_name:Tform;FormClass:TFormClass);
begin
if Form_name=nil then
begin
Form_name:=FormClass.Create(Application);
Form_name.OnClose:=close_window(Form_name);
Form_name.Show ;
end
else
Form_name.Show;
end;//关闭窗口事件
procedure close_window(form_name:Tform) ;
begin
form_name.Action.Free ;
form_name:=nil;
end;end.上述代码在编译时报错:[Error] Unit_global.pas(17): Incompatible types: 'TCloseEvent' and 'procedure, untyped pointer or untyped parameter'应该怎么写呢?
这是一个过程定义,不是事件的定义,所以不兼容。
Form_name.OnClose:=close_window(Form_name);
var Action: TCloseAction);
begin
Action:=Cafree;
Form2:=nil;
end;那具体应该怎么改呢?
改成
procedure close_window(Sender: TObject; var Action: TCloseAction) ;
那我这句应该怎么写?
Form_name.OnClose:=close_window(Form_name);
var Action: TCloseAction);
begin
Action:=Cafree;
end;//关闭窗口事件
procedure close_window(form_name:Tform) ;
begin
form_name.OnClose = frmclose;
form_name.close;
form_name := nil;
end;