unit Unit1;
interface
uses
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.