unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;type TForm1 = class(TForm) RadioGroup1: TRadioGroup; procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormCreate(Sender: TObject); procedure RadioGroup1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}var ClassRef: TControlClass; //TControlClass 是 TControl 的类引用procedure TForm1.FormCreate(Sender: TObject);begin RadioGroup1.Width := 300; RadioGroup1.Columns := 3; RadioGroup1.Items.Add('Button'); RadioGroup1.Items.Add('Edit'); RadioGroup1.Items.Add('Lable'); RadioGroup1.ItemIndex := 0; ClassRef := TButton;end;procedure TForm1.RadioGroup1Click(Sender: TObject);begin case RadioGroup1.ItemIndex of 0: ClassRef := TButton; 1: ClassRef := TEdit; 2: ClassRef := TLabel; end;end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);var NewCtrl: TControl;begin NewCtrl := ClassRef.Create(Self); NewCtrl.Name := ClassRef.ClassName + IntToStr(Self.ControlCount); NewCtrl.Parent := Self; NewCtrl.Left := X; NewCtrl.Top := Y;end;end.