zoukankan      html  css  js  c++  java
  • 关于类的入门例子(7): 遍历窗体的所有父类

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    //
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage(Self.ClassName);                         {TForm1      - Form1 的类名}
      ShowMessage(Self.ClassParent.ClassName);             {TForm       - Form1 的父类名}
      ShowMessage(Self.ClassParent.ClassParent.ClassName); {TCustomForm - Form1 的爷爷类名}
    end;
    
    //
    procedure TForm1.Button2Click(Sender: TObject);
    var
      MyClass: TClass;
      {TClass 是 TObject 的类引用; 它和 TObject 有着相同的功能, 但总之不是一个类型}
    begin
      {对象的 ClassType 方法返回对象的 TClass}
      ShowMessage(Self.ClassType.ClassName); {TForm1 - Form1 的类名}
    
      MyClass := Self.ClassType;
      ShowMessage(MyClass.ClassName);        {TForm1 - Form1 的类名}
    end;
    
    //
    procedure TForm1.Button3Click(Sender: TObject);
    var
      MyClass: TClass;
    begin
      {对象的 ClassParent 方法返回的也是 TClass, 可以把对象的 ClassParent 赋予 TClass 变量}
    
      MyClass := Self.ClassType;
      ShowMessage(MyClass.ClassName); {TForm1      - Form1 的类名}
    
      MyClass := MyClass.ClassParent;
      ShowMessage(MyClass.ClassName); {TForm       - Form1 的父类名}
    
      MyClass := MyClass.ClassParent;
      ShowMessage(MyClass.ClassName); {TCustomForm - Form1 的爷爷类名}
    end;
    
    //遍历窗体的所有父类
    procedure TForm1.Button4Click(Sender: TObject);
    var
      MyClass: TClass;
    begin
      MyClass := Self.ClassType;
    
      while MyClass <> nil do
      begin
        ShowMessage(MyClass.ClassName);
        MyClass := MyClass.ClassParent;
      end;
    
    {将依次显示:
      TForm1
      TForm
      TCustomForm
      TScrollingWinControl
      TWinControl
      TControl
      TComponent
      TPersistent
      TObject
    }
    end;
    
    end.
    
  • 相关阅读:
    【BZOJ】2019: [Usaco2009 Nov]找工作(spfa)
    【BZOJ】3668: [Noi2014]起床困难综合症(暴力)
    Redis 字符串结构和常用命令
    Redis实现存取数据+数据存取
    Spring 使用RedisTemplate操作Redis
    使用 java替换web项目的web.xml
    SQL server 从创建数据库到查询数据的简单操作
    SQL server 安装教程
    IntelliJ IDEA 注册码(因为之前的地址被封杀了,所以换了个地址)
    对程序员有帮助的几个非技术实用链接(点我,你不会后悔的)
  • 原文地址:https://www.cnblogs.com/del/p/1035474.html
Copyright © 2011-2022 走看看