delphi动态创建控件
动态创建控件
其实动态创建控件很简单,相信看过本文后你会全明白的。
1 先在单元的initialization 部分注册它,(这样在单元使用时会自动注册的)如:
RegisterClass( TButton );
2 使用FindClass 或 GetClass函数取得类参考,如:
var MetaClass : TPersistentClass;
MetaClass := FindClass( 'TForm2');
3 映射MetaClass为一般类型,否则你不能调用正确的constructor (因为你没指明所需参数)
var ComponentMetaClass : TComponentClass;
ComponentMetaClass := TComponentClass( MetaClass );
4 调用constructor
var AForm: TComponent;
AForm := ComponentMetaClass.Create( self );
5 AForm 现在成为一个有效的类实例,可以调用它的方法了。
TForm(AForm).Show;
或
var SomeForm : TForm;
SomeForm := TForm( AForm );
SomeForm.Show;
完整示例:
procedure TForm1.Button1Click(Sender: TObject);
var MetaClass : TPersistentClass;
ComponentMetaClass : TComponentClass;
AForm: TComponent;
begin
MetaClass := FindClass( 'TForm2');
ComponentMetaClass := TComponentClass( MetaClass );
AForm := ComponentMetaClass.Create( self );
TForm(AForm).Show;
end;
或者是
TFormTForm( TComponentClass( FindClass( 'TForm2' ) ).Create( Self )).Show;

delphi动态创建控件的更多相关文章
- 小子给大家分享一个或者多个新手创建tableview经常会遇到的坑(动态创建控件,xib的重用)
小子最近做了一个根据接口返回的数据在Cell中动态创建控件,感觉应该会一部分人卡在这里,小子就跟大家分享一下: 1.控件重复创建:这个问题出现的原因是动态创建的cell内容的时候,无法进行重用设置,所 ...
- VisionPro笔记(1):动态创建控件
VisionPro学习笔记(1):动态创建控件 有的时候可能需要在程序中动态创建控件,VisionPro实例中提供了一例动态创建Blob控件的方法.当然,动态创建过多的控件会极大的消耗系统的资源,建 ...
- 【转载】MFC动态创建控件及其消息响应函数
原文:http://blog.sina.com.cn/s/blog_4a08244901014ok1.html 这几天专门调研了一下MFC中如何动态创建控件及其消息响应函数. 参考帖子如下: (1)h ...
- MFC动态创建控件及其消息响应函数
这几天专门调研了一下MFC中如何动态创建控件及其消息响应函数. 参考帖子如下: (1)http://topic.csdn.net/u/20101204/13/5f1b1e70-2f1c-4205-ba ...
- 在DELPHI中动态创建控件以及控件的事件
在DELPHI中我们经常要动态的创建控件以及控件的事件.例如,我们可能想根据程序需要动态的创建一些Tshape组件来创建某个图形,并使得在鼠标移动上去之后可以完成某些操作.这一般需要需要三步: 生成一 ...
- MFC 动态创建控件
动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个容器,一 ...
- Delphi动态添加控件
{动态添加导航} var Panl:Tpanel; MainPage,Subpage:TPageControl; TabSheet1: TTabSheet; ToolBar2: TToolBar; S ...
- Winfrom动态创建控件
FlowLayoutPanel flowLayoutPanel1 = new FlowLayoutPanel();for (int i = 0; i < 9; i++){ Button b ...
- 动态创建控件 #Create(...)
在类中创建一个控件对象;例:CButton m_btn; 用Create创建一个对象(#其实已经与其绑定)m_btn.Create(.....); #注意Create()函数的参数 问题一:点击一个b ...
随机推荐
- boost regex expression
Boost.Regex provides three different functions to search for regular expressions 1. regex_match #inc ...
- L1、L2损失函数、Huber损失函数
L1范数损失函数,也被称为最小绝对值偏差(LAD),最小绝对值误差(LAE) L2范数损失函数,也被称为最小平方误差(LSE) L2损失函数 L1损失函数 不是非常的鲁棒(robust) 鲁棒 稳定解 ...
- flutter Could not find the built application bundle
报错信息Could not find the built application bundle at build/ios/iphoneos/Runner.app. Error launching ap ...
- 【Java架构:基础技术】一篇文章搞掂:Maven
本文篇幅较长,建议合理利用右上角目录进行查看(如果没有目录请刷新). 本文基于<Maven 实战>一书进行总结和扩展,大家也可以自行研读此书. 一.Maven简介 1.1.什么是Maven ...
- 远程到Server系统安装和使用QTP
转自http://www.51testing.com/html/40/307440-832446.html 感谢作者 多童鞋都问在2003上如何安装QTP,为何单机许可不能使用? 我在N太serve ...
- IOS 创建目录/文件夹
•IOS 应用目录简介 个文件夹:Documents, Library和 tmp.Library包含Caches.Preferences目录. Documents:应用中用户数据可以放在这里,iTun ...
- 90、Tensorflow实现分布式学习,多台电脑,多个GPU 异步试学习
''' Created on 2017年5月28日 @author: weizhen ''' import time import tensorflow as tf from tensorflow.e ...
- 1、jQuery操作Dom
1.添加元素 <code> <script language="JavaScript">$().ready(function(){$("input ...
- 机器学习笔记--classification_report&精确度/召回率/F1值
https://blog.csdn.net/akadiao/article/details/78788864 准确率=正确数/预测正确数=P 召回率=正确数/真实正确数=R F1 F1值是精确度和召回 ...
- JSON与Java对象的互相转换
JSON与Java对象的互相转换 例一(单个对象进行赋值): @RequestMapping("test1.do") @ResponseBody public JSONObject ...