zoukankan      html  css  js  c++  java
  • 主窗体和继承窗体

     程序将第一个创建的窗体作为主窗体。如果创建了一个后,在其他窗体尚未创建的时候便释放调,
    此时又创建了一个窗体,那么第二次创建的窗体就会变成主窗体了。
     关闭主窗体,程序就认为是终止运行,并且调用 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"关键字,似乎无法实现晚绑定。)

  • 相关阅读:
    NET微信公众号开发环境搭建(一)-了解微信由来
    JS:复制内容到剪贴板(无插件,兼容所有浏览器)
    js 压缩上传的图片方法(默认上传的是file文件)
    vue封装组件调用时绑定click事件
    vue cli3 区分开发环境,测试环境,正式环境(二)
    vue 动态修改网页标题 title
    vue移动端适配(px转vw)postcss-px-to-viewport配置
    veu创建项目,自定义配置
    vue cli3配置开发环境、测试环境、生产(线上)环境(一)
    vue封装axios
  • 原文地址:https://www.cnblogs.com/spiritofcloud/p/3898367.html
Copyright © 2011-2022 走看看