各位老师好。
我是个delphi菜鸟,问各位老师几个问题。
1、窗体的onactivate、oncreate这几个窗体激活事件有什么区别?
2、窗体的onclose、onclosequery、ondeactivate、ondestroy这几个窗体关闭事件有什么区别?
我是个delphi菜鸟,问各位老师几个问题。
1、窗体的onactivate、oncreate这几个窗体激活事件有什么区别?
2、窗体的onclose、onclosequery、ondeactivate、ondestroy这几个窗体关闭事件有什么区别?
1、窗体的onactivate、oncreate这几个窗体激活事件有什么区别? 有区别,onactivate,当窗体激活时执行(可能执行多次)
oncreate 当窗体类实例化时执行(只能执行一次)
oncreate 先于onactivate执行 2、窗体的onclose、
onclosequery、
ondeactivate、ondestroy这几个窗体关闭事件有什么区别? onclose是当窗体关闭的时候执行(可能多次)
onclosequery是当窗体关闭前执行onclose()之前
ondeactivate 当窗体不在激活状态时执行
ondestroy 当窗体对像销毁时执行
procedure DoNestedActivation(Msg: Cardinal; Control: TWinControl; Form: TCustomForm);
begin
if Control = nil then Exit;
{ Find the closest parent which is a form }
while (Control.Parent <> nil) and not (Control is TCustomForm) do
Control := Control.Parent;
if Assigned(Control) and (Control <> Form) then
SendMessage(Control.Handle, Msg, 0, 0)
end;
相反,就是ondeactivate事件,这是丢失焦点,从当前状态转入非激活状态在执行这些事件的时候,OnCreate事件早已执行,onCreate事件是初始化事件,也叫创建事件。是构造函数
2、onclose事件是在窗体被关闭之前所要执行的事件。hide窗体不会执行这个事件。
FormCloseQuery事件比较的有意思,它也是关闭窗口之前要执行的事件,它在onclose事件之前执行,这个事件中有个参数Canclose可以用来限制你关闭窗口。CanClose:=False;表示不可以关闭,相反CanClose:=true允许关闭
与oncreate构造函数事件对应的是ondestroy销毁函数事件,只是在窗口结束时,释放所有窗口资源之前所执行的事件