把字符串转化为TPersistentClass参数

COMPUTERZZZ 2009-06-08 11:41:42
ClassName:=mListItem.SubItems[1];
RegisterClass('T'+ClassName); //这句出错: incompatible types:'TPersistentClass' and 'String'
with TFormClass(GetClass('T'+ClassName)).Create(Application) do
show;

请问这句怎么改!
...全文
78 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdmh 2009-06-08
  • 打赏
  • 举报
回复
http://www.cnblogs.com/Icebird/archive/2008/04/16/gcandrc.html
GetClass与RegisterClass的应用一例
COMPUTERZZZ 2009-06-08
  • 打赏
  • 举报
回复
你这个代码不对吧,VClass:=FindClass('T'+ClassName); 单步调试提示是这个出错,还没有注册怎么可能找到这个类呢?
COMPUTERZZZ 2009-06-08
  • 打赏
  • 举报
回复
SmallHand:
我按你的代码写的,但在运行时,提示'Class TP0012 not found'
这个窗体是有的呀!
火龙岛主 2009-06-08
  • 打赏
  • 举报
回复
var
vClass: TPersistentClass;
...
ClassName:=mListItem.SubItems[1];
vClass := FindClass('T'+ClassName)
if vClass <> nil then
RegisterClass(vClass);
with TFormClass(GetClass('T'+ClassName)).Create(Application) do
show;
taxi 2009-06-08
  • 打赏
  • 举报
回复
你要注册你的类,必须从TPersistent派生,然后调用RegisterClass注册,然后可以通过GetClass访问。
taxi 2009-06-08
  • 打赏
  • 举报
回复
看看RegisterClass的原型:
procedure RegisterClass(AClass: TPersistentClass);


里面的参数是个类类型,不是字符串。
COMPUTERZZZ 2009-06-08
  • 打赏
  • 举报
回复
OK,我自已搞定了
COMPUTERZZZ 2009-06-08
  • 打赏
  • 举报
回复
有呀,有写:
finalization
UnRegisterClass(TP0012)
火龙岛主 2009-06-08
  • 打赏
  • 举报
回复
在finalization反注册UnRegisterClass(Tyourclass)了吗?
COMPUTERZZZ 2009-06-08
  • 打赏
  • 举报
回复
taxi:我的对应的窗体的Initializtion中RegisterClass注册这个了类,现在可以显示窗体了,但是退出时提示:Stack overflow
taxi 2009-06-08
  • 打赏
  • 举报
回复
你必须在某个地方先注册你的类,比如主窗体的OnCreate事件或单元的Initialization中,然后才可以通过GetClass访问。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧