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.