控件动态产生器(使用RegisterClasses提前进行注册)

代码

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->unit pgDynamicGenerate;
//动态产生器

interface
uses
  pgGUISprite, pgGUIControls, DXSprite, Classes;

type
  TSpriteClass = class of TpgGUISprite;
  //定义一个类型数组

  TClassArray = array[1..6] of TSpriteClass;
const
  ClassArray: TClassArray = (TpgButton, TpgControl, TpgCustomEdit, TpgFontComponent, TpgForm, TpgMouse);

function pgSpriteCreate(SpriteClass: TSpriteClass; AParent: TSprite; const SpriteName: string = ‘‘): TpgGUISprite;
function GenerateComponent(const ClassName: string; AParent: TSprite; const SpriteName: string = ‘‘): TpgGUISprite;
procedure initRegisterClasses;
procedure finaUnRegisterClass;

implementation

function pgSpriteCreate(SpriteClass: TSpriteClass; AParent: TSprite; const SpriteName: string = ‘‘): TpgGUISprite;
begin
  Result := SpriteClass.Create(AParent);
  with TpgGUISprite(Result) do
  begin
    if ControlName <> ‘‘ then
      ControlName := SpriteName;
  end;
end;

function GenerateComponent(const ClassName: string; AParent: TSprite; const SpriteName: string = ‘‘): TpgGUISprite;
var
  mClass: TSpriteClass;
  mObj: TpgGUISprite;
begin
  Result := nil;
  mClass := TSpriteClass(GetClass(ClassName));
  if mClass = nil then exit
  else
  begin
    mObj := mClass.Create(AParent);
    TpgGUISprite(mObj).ControlName := SpriteName;
    Result := mObj;
  end;
end;

procedure initRegisterClasses;
var
  i: Integer;
  className: TPersistentClass;
begin
  for i:=Low(ClassArray) to High(ClassArray) do
  begin
    className:= ClassArray[i];
    RegisterClasses(className);
  end;
end;

procedure finaUnRegisterClass;
var
  i: Integer;
  className: TPersistentClass;
begin
  for i:=Low(ClassArray) to High(ClassArray) do
  begin
    className:= ClassArray[i];
    UnRegisterClass(className);
  end;
end;

initialization
  initRegisterClasses;
finalization
  finaUnRegisterClass;

end.

http://www.cnblogs.com/kfarvid/archive/2010/01/18/1651154.html

时间: 2024-08-04 01:11:56

控件动态产生器(使用RegisterClasses提前进行注册)的相关文章

C# DataGridView控件动态添加新行

C# DataGridView控件动态添加新行 DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如需要动态为DataGridView控件添加新行,方法有很多种,下面简单介绍如何为DataGridView控件动态添加新行的两种方法: 方法一: int index=this.dataGridView1.Rows.Add(); this.dataGridView1.Rows[index].Cells[

C# DataGridView控件 动态添加新行

DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如需要动态为DataGridView控件添加新行,方法有很多种,下面简单介绍如何为DataGridView控件动态添加新行的两种方法: 方法一: int index=this.dataGridView1.Rows.Add(); this.dataGridView1.Rows[index].Cells[0].Value = "1"; thi

C# Winform控件动态删除

WPF控件的动态删除请参考WPF动态删除指定类型控件 今天在实现控件动态删除过程中遇到了点小Trouble,就是在删除的过程中只能删除一半,具体代码如下: foreach (var control in from ctls in controlUtility.GetControls(panel1) where ctls.Name.StartsWith("BtnTable") select ctls) { panel1.Controls.Remove(control); control.

BMDThread控件动态创建多线程示例

http://www.cnblogs.com/railgunman/archive/2010/12/08/1900688.html BMDThread控件是一套相当成熟的线程控件,使用它可以让你快速的创建.管理线程.    可以到CSDN或者盒子上下载BMDThread控件.    下面我们用多线程模拟客户端发送文件的例子来简单认识一下它.    在窗体中放置一个TIDClient,TBMDThread,TBMDThreadGroup.三个TEdit,两个按钮(开始线程,结束线程),一个MEMO

Xpage定制控件动态绑定域

1.结果:(数据)域属性->表达式语言内容为:compositeData.CurDoc[compositeData.BindingFieldName]2.BindingFieldName为控件自定义字符串属性,xpage输入3.CurDoc为控件自定义属性:类型为:com.ibm.xsp.model.DataContext,编辑器为:数据源采集器:缺省值为:currentDocument4.xpage传入CurDoc值为:currentDocument

soui中,列表控件动态高度的使用注意

1.listview的模板template中,需要增加defHeight属性,即默认高度,同时,不能出现itemHeight属性,否则动态高度会失效 2.数据适配器中,重写getViewDesiredSize,类似下面的代码 DWORD dwState = pItem->GetState(); if((dwState & WndState_Check) || (dwState & WndState_PushDown)) { return CSize(0,80); } return C

HTMLayout列表控件动态添加列表项,预览本机字体。

%5Bpython%5D%E8%8E%B7%E5%8F%96%E7%BD%91%E9%A1%B5%E4%B8%AD%E5%86%85%E5%AE%B9%E4%B8%BA%E6%B1%89%E5%AD%97%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E5%88%A4%E6%96%AD http://auto.315che.com/lagunagubei/qa23798045.htm?0z29 http://auto.315che.com/feixia

用户控件,动态创建添加用户控件

用户控件的制作步骤 1,新建一个项目,文件>新建>项目. 2,添加>新建项>用户控件.文件类型为.cs 使用用户控件 在用户控件设计业点击工具栏中的生成项,选择第一项生成解决方案,或直接点F6: 生成成功后在windows窗体的工具栏最顶端就会显示此用户控件 动态添加控件 输入一个值为n,点击按钮,动态生成n个按钮,并编号号 private void button1_Click(object sender, EventArgs e) { //先获取用户输入的是几 int count

New UI-Java代码动态添加控件或xml布局

New UI-Java代码动态添加控件或xml布局  --转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途! 小猪Android开发交流群已建立,欢迎大家加入,无论是新手,菜鸟,大神都可以,小猪一个人的 力量毕竟是有限的,写出来的东西肯定会有很多纰漏不足,欢迎大家指出,集思广益,让小猪的博文 更加的详尽,帮到更多的人,O(∩_∩)O谢谢! 小猪Android开发交流群:小猪Android开发交流群群号:421858269 新Android UI实例大全目录:http://blog.