动态创建对象
2010-11-02 15:32
218 查看
单元一代码:
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 public end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); const ContrlClassArry: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.createControlObj(self,ContrlClassArry[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.
单元二代码:
unit Unit2; interface uses Windows, SysUtils, Classes,Controls, Forms; Type TControlClass =class of TControl; TControlFactory=class public class function createControlObj(AOwner:TWinControl ;ControlClass:TControlClass):TControl; end; implementation class function TControlFactory.createControlObj(AOwner:TWinControl ;ControlClass:TControlClass):TControl; var FControlObj:TControl; begin FControlObj:=ControlClass.Create(AOwner); FControlObj.Parent:=AOwner; FControlObj.Name:=FControlObj.ClassName; FControlObj.SetBounds(10,10,250,150); result:=FControlObj; end; end.
相关文章推荐
- 用模板实现单例模式(线程安全)、模板方式实现动态创建对象
- 动态创建多个对象并分行显示实例
- document对象 动态的创建元素(节点)/添加元素(节点)/删除元素(节点)
- 反射动态创建对象
- C#回顾 - 8.利用反射动态创建对象
- javascript创建对象之动态原型模式(五)
- MFC之对象的动态创建
- 《Entity Framework 6 Recipes》中文翻译系列 (38) ------ 第七章 使用对象服务之动态创建连接字符串和从数据库读取模型
- protobuf在java应用中通过反射动态创建对象
- 利用反射动态创建对象
- qml动态创建组件对象
- 【转】C# 运行时动态对象创建
- 动态创建类的对象
- JavaScript DOM编程基础精华02(window对象的属性,事件中的this,动态创建DOM,innerText和innerHTML)
- 如何利用Skyline6.1的接口创建动态对象DynamicObject
- C# 利用反射动态创建对象[转]
- 利用map动态创建C++类对象
- js 动态创建网页对象
- 一个ASP创建动态对象的工厂类(类似PHP的stdClass)
- oracle 日志对象创建语句及常用动态性能视图