主窗体和继承窗体

 程序将第一个创建的窗体作为主窗体。如果创建了一个后,在其他窗体尚未创建的时候便释放调,
此时又创建了一个窗体,那么第二次创建的窗体就会变成主窗体了。
 关闭主窗体,程序就认为是终止运行,并且调用 Free 释放掉主窗体资源,进而程序结束退出。
而关闭其他非主窗体,程序只是将其隐藏起来了。

  子窗体会将主窗体的属性方法继承下来,对于主窗体中手动增加的方法(即声明在访问控制级别
private、protected、published、public 中的方法),除非显示的增加 virtual 关键字,并在子
类中显示的使用 override 关键字,否则不会使用多态的方式来继承(即晚绑定的方式)。而窗体的
元素方法(即那些没有任何控制级别关键字限制的方法,如一个窗体的 FormCreate 方法,或者说窗
体根据用户的操作自动生成的方法),会默认的使用多态的方式来继承。

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);  // 子窗体默认会使用多态的的形式继承
  private
    { Private declarations }
  public
    { Public declarations }
    procedure DoSomething;  // 除非使用 virtual 和 override 关键字,否则子窗体不
                 //会以多态的方式继承
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DoSomething;
begin
  // 除非使用 virtual 和 override 关键字,否则子窗体不会以多态的方式继承
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  // 子窗体默认会使用多态的的形式继承
end;

end.

另注:在继承自己的窗体时,最好先将其加入工程,然后再使用向导来创建对应子类,否则
   会存在一个很“隐晦”,而且不易发现,虽然这个错误在运行时并没有发现有什么影
   响,但以防万一。(当用Ctrl+鼠标链接到父类窗体单元,再将其关闭,在鼠标放置
   到子类声明处class后括号中的父类时,编译器的提示信息好想就部能够检测到父类
   的信息了,于是报错了。还有就是创建的方法在使用ctrl + shift + c等自动创建代码
   的情况下,不会自动加入"inherited"关键字,似乎无法实现晚绑定。)

转载于:https://www.cnblogs.com/spiritofcloud/p/3898367.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值