社区
Delphi
帖子详情
疑问:通过类名创建对象??
wasay007
2003-10-20 02:26:03
请问各位:
怎样用类名动态创建对象呀?
...全文
228
11
打赏
收藏
疑问:通过类名创建对象??
请问各位: 怎样用类名动态创建对象呀?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tigerhohoo
2003-10-20
打赏
举报
回复
TButtonClass = class of TControl;
procedure TForm1.RadioGroup1Click(Sender: TObject);
const
BUTTONS : array[0..2] of TButtonClass = (TBitBtn, TButton, TSpeedButton);
begin
CreateButton( BUTTONS[ RadioGroup1.ItemIndex]);
end;
procedure TForm1.CreateButton(ButtonClass : TButtonClass);
var
AButton : TControl;
begin
AButton := ButtonClass.Create(Self);
AButton.Parent := Self;
...
end;
wasay007
2003-10-20
打赏
举报
回复
类名是字符串形式的,怎么创建啊?
Linux2001
2003-10-20
打赏
举报
回复
你所谓的类名是什么,如果不是字符串形式那么很容易解决,如果是字符串形式,恐怕只有使用比较BT的方法了!不过仍然很Easy
superyys
2003-10-20
打赏
举报
回复
我贴错地方了,,,在这里有完整的
http://expert.csdn.net/Expert/TopicView3.asp?id=2374764
superyys
2003-10-20
打赏
举报
回复
参考
1. Herb Sutter. Exceptional C++. Addison-Wesley, Reading, MA. 1999.
侯捷.《Exceptional C++中文版》.培生教育出版集团.2000.
2. 虫虫.《天方夜谭VCL:多态》.C++ View.2001,10.
3. 侯捷.《深入浅出MFC》,2/e.松岗电脑图资料股份有限公司/华中科技大学出版社.1997/2001.
4. 虫虫.《天方夜谭VCL:开门》.C++ View.2001,9.
5. Scott Meyers. More Effective C++. Addison-Wesley, Reading, MA. 1996.
侯捷.《More Effective C++中文版》.培生教育出版集团.2000.
6. GoF. Design Patterns: Elements of Resuable Object-Oriented Software. Addison-Wesley, Reading, MA. 1995.
李英军等.《设计模式:可复用面向对象软件软件的基础》.机械工业出版社.2000.
superyys
2003-10-20
打赏
举报
回复
天方夜谭VCL: 生死
虫虫
生命是什么?科学和宗教都给出了不同的诠释。有句话也许说得更有意思:生命是这样一种东西,如果你把它当作一个开场或结局,那么它总是一样的;而当你把它当作一个过程,它总是不同的。其实,万事万物又何尝不是分别以生和死作为开场和结局呢?对象也不例外,不过生成以及销毁对象都需要健全的机制作保证。否则不仅对象本身遭殃,甚至会导致程序乃至整个系统崩溃。
传说中,东方的天、人、阿修罗、畜生、饿鬼、地狱六道轮回(以及由此演变出的丰都鬼城),和西方的地狱、炼狱、天堂,都有一套非常完整、严密、健全的机制,管理着时空中各种生命体。同样,一套框架也需要这么一套机制来管理记忆体中的对象,以保证正常运作。VCL自然也不例外。但虫虫这次并不准备详细分析涉及VCL对象生死的代码,相信大家对剖析涉及底层汇编都有了一定的经验。所以前面虫虫会对这方面提几句,把重点放在设计的结构和模式上,并解决一个在BBS上看到的问题。
对象生成
对象生成的方式几乎都是一样,一般流程如右图所示(VCL类的初始化是指初始化VMT和接口指针)。对象一般生存在两个地方,栈(stack)或自由存储区(free store)[1]中。由于Object Pascal只支持第二种方式,所以VCL类都在自由存储区中,表现在C++中就是必须使用new和delete分配、回收空间,速度自然会比存在于栈中的普通C++类要慢一些。
控制VCL对象生成过程的代码主要在TObject::InstanceSize、TObject:: NewInstance、TObject::InitInstance几个成员函数中。有兴趣的朋友可对照右图分析一下,源代码在 Source/Vcl/system.pas里,没有什么特别之处。我们将把重点主要放在分析动态生成(Dynamic Creation)机制上。
动态生成是一个相当实用的技术。比如上次我们提到的一个绘制图形的程序[2],具体的图形以插件的方式提供,主程序对相应的图形类一无所知,但是仍然需要 “动态”地生成这些对象。又比如Delphi/C++ Builder的IDE对象设计器,也是一个很好的例子:鼠标双击,一个对象就动态生成在设计面板,可以供我们设计之用了。C++语言本身并没有也不可能提供对动态生成的支持,不过MFC中用宏(macro)模拟就可以取得令人满意的效果[3]。
图1 对象生成流程
34535345345345345345
2003-10-20
打赏
举报
回复
可以告诉你,基本上无解。
即使解决了,也是非常规途径(用RegisterClasses)。
这个问题涉及到编译器的问题了
angle097113
2003-10-20
打赏
举报
回复
var
from1:Tform1;
begin
form1:=Tform1.Create(self);
form1.showmodal;
end;
zhaojinghui
2003-10-20
打赏
举报
回复
up
pankun
2003-10-20
打赏
举报
回复
你这个类要从TPersistent继承才行,才有RTTI支持.
再用GetClass(类名)
wasay007
2003-10-20
打赏
举报
回复
大虾们,有谁知道吗
Java核心技术精讲
内容简介: 面向对JAVA核心知识还一知半解的同学: 从重新认识反射的定义开始,了解JAVA的核心技术; 理解Java中9大内置Class实例; 详细介绍包名、
类名
、接口、继承、修饰符等内容; 深入理解List、Map、Set的实现机制以及原理 深入理解泛型的原理以及在日常工作中应该如何使用 为什么需要学习这门课程? Java是后端热度最高的语言,而许多JAVA工程师只了解JAVA的基本使用,但是却不理解它核心原理,导致出现一些Bug,不知道如何去解决。而本门课会深入讲解JAVA核心技术,从原理层面再到应用层面,带你层层剖析,让你知其然并知其所以然。 课程大纲: 为了让大家快速系统了解JAVA核心知识全貌,我为您总结了「Java核心知识框架图」,帮您梳理学习重点,建议收藏!
Java8中直接new对象和用
类名
::new
创建对象
这两种形式有什么区别
小编这两天在看算法相关的知识,结果遇到了java8的东西,于是开始研究java8(小编对于自己的性格也很无奈,不影响算法的情况下,是应该继续看算法的。但是里面涉及到的java8知识不懂,就感觉很别扭,于是就开始研究java8),在看到 构造方法引用 相关的知识时,看到了一个别人问的问题Java8中直接new对象和用
类名
::new
创建对象
这两种形式有什么区别吗?一直想不明白这个问题: public static void main(String[] args
c# 工厂模式
类名
转对象
方式一:通过
类名
来生成对象(优势:方便;劣势:不能以递增方式增加需转化成对象的类文件,即每次发布需整个项目重新编译)经测试正确 public class FruitFactory { public IFruit MakeFruit(string Name) { IFruit MyFruit = null; try { Type type = Type.Ge...
java中Class对象获取方式:
类名
.class, class.forName(), getClass()区别
在我们了解三个方法的区别之前,我们先思考一下,什么是Class类,为什么会有Class类? ①、什么是Class类 在java世界里,一切皆对象。从某种意义上来说,java有两种对象:实例对象和Class对象。每个类的运行时的类型信息就是用Class对象表示的。它包含了与类有关的信息。其实我们的实例对象就通过Class对象来创建的。Java使用Class对象执行其RTTI(运行时类型识别,Run-Time Type Identification),多态是基于RTTI实现的。 ...
关于类的学习总结
一,基础知识 1,类的定义(PS) 概念:类是对具有相同属性和行为的一组对象的抽象与统一描述。是用户自定义的数据类型,包括行为和属性两个部分,属性以数据表示,行为通过函数实现。 (1)定义格式class
类名
{ public: 公有数据成员和成员函数; protected: 保护数据成员和成员函数; ...
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章