网上搜集资料 参考写的代码 实现控件的动态创建 完整代码如下:
(实现界面)
-------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls;
type
TControlClass =class of TControl ;
TForm1 = class(TForm)
RadioGroup1: TRadioGroup;
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
const
ControlClassArry: array[0..2]of
TControlClass= (TMonthCalendar,TMemo,TColorBox) ;
var
i:integer;
ControlObj:TObject ;
begin
for i:=0 to controlcount-1 do
if (Controls[i] is TMonthCalendar) or (controls[i] is TMemo)
or (Controls[i] is TColorBox) then
Controls[i].Free ;
ControlObj:= TControlFactory.create(self,ControlClassArry[RadioGroup1.ItemIndex]);
Label1.Caption :=ControlObj.ClassName ;
if (ControlObj is TMemo) then TMemo(ControlObj).Lines.Add('测试成功!');
if (ControlObj is TColorBox) then TColorBox(ControlObj).ItemIndex :=2;
end;
end.
-------------------
2009-11-04