为什么是先inherited再赋值?高手帮忙看看解决思路
为什么是先inherited再赋值?高手帮忙看看
今天看个改变程序类名的例子程序,有个疑问:
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WinClassName := MYAPPNAME;
end;
这段程序中为什么先inherited后才改变WinClassName呢?
这样调用CreateParams类名不是还没改变吗?但测试结果
又是正确的...
------解决方案--------------------
inherited 是执行原方法的代码,再执行自定义的代码.
这里的Params.WinclassName在前后两句时,其值是不一样了.
------解决方案--------------------
inherited 是执行原方法的代码
然后执行自定义方法
------解决方案--------------------
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);//先创建参数列表;
//利用组件本拥有的创建方法来创建参数表;当然想自己来创建,也可用其他方法了。但用
//组件本身的方法是较为安全的。
Params.WinClassName := MYAPPNAME;//创建列表后,对某个参数赋值操作;OVER!
end;
参数列表一定要先创建,再赋值,否则,报内存访问错!AV错。
今天看个改变程序类名的例子程序,有个疑问:
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WinClassName := MYAPPNAME;
end;
这段程序中为什么先inherited后才改变WinClassName呢?
这样调用CreateParams类名不是还没改变吗?但测试结果
又是正确的...
------解决方案--------------------
inherited 是执行原方法的代码,再执行自定义的代码.
这里的Params.WinclassName在前后两句时,其值是不一样了.
------解决方案--------------------
inherited 是执行原方法的代码
然后执行自定义方法
------解决方案--------------------
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);//先创建参数列表;
//利用组件本拥有的创建方法来创建参数表;当然想自己来创建,也可用其他方法了。但用
//组件本身的方法是较为安全的。
Params.WinClassName := MYAPPNAME;//创建列表后,对某个参数赋值操作;OVER!
end;
参数列表一定要先创建,再赋值,否则,报内存访问错!AV错。