AnsiString类型如何转换为Form类型?

cfqmxh 2007-03-09 11:53:44
如代码:
void __fastcall TForm1::showFrm(AnsiString id)
{
TForm *tempFrm;
tempFrm=new TForm2(this);如何用变量替换为tempFrm=new id(this);
tempFrm->Show();
}
...全文
366 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
n27741 2007-06-17
  • 打赏
  • 举报
回复
楼上正解!

用Application作为容器,保存起来

然后从Application对象中获取

切记!是不加T的类名!!!!

例如TForm1
Application->FindComponent(Fomr1)
jacknes009 2007-06-17
  • 打赏
  • 举报
回复
String str = "Form" + IntToStr(i);
TForm *f = (TForm *)(Application->FindComponent(str))
f->Show();
xiaoyuezhong 2007-06-17
  • 打赏
  • 举报
回复
mark~
Jim@luckeeinc.com 2007-06-15
  • 打赏
  • 举报
回复
String str = "Form" + IntToStr(i);
TForm *f = (TForm *)(Application->FindComponent(str))
f->Show();
donwmufromdying 2007-06-15
  • 打赏
  • 举报
回复
其实,使用模版类可以解决这个问题!具体你可以参考thinking in c++ Edition2的实做篇。刚好有这么个例子。
i_love_pc 2007-06-15
  • 打赏
  • 举报
回复
使用控件数组,或者干脆用一个switch(id){case:}
fujie1970 2007-06-14
  • 打赏
  • 举报
回复
TMetaClass* mc = FindClass("TForm1");
TForm* fm = dynamic_cast<TForm*>(mc);
fm->Show();
ywj157 2007-03-11
  • 打赏
  • 举报
回复
再加一个*定义 Form数组,看行不。
constantine 2007-03-09
  • 打赏
  • 举报
回复
看RegisterClass, findClass 之类的函数就行了
ccrun.com 2007-03-09
  • 打赏
  • 举报
回复
VCL原生类/类工厂实现
http://www.ccrun.com/article.asp?i=655&d=a38061
cfqmxh 2007-03-09
  • 打赏
  • 举报
回复
不行吧!
void __fastcall TForm1::showFrm(AnsiString id)
{
TForm *tempFrm;
tempFrm=new (*TForm)id(this);这样转换吗?不行呀!
tempFrm->Show();
}
jaffy 2007-03-09
  • 打赏
  • 举报
回复
强制转换 (*Form)
cfqmxh 2007-03-09
  • 打赏
  • 举报
回复
我有很多个Form,如Form1,Form2,Form3....Form100,这些在工程中都是有的,它们处理不同的功能.我在一Edit中如果输入1则调用Form1,2则调用Form2.以此类推,其实也可以用if语句来一条条判断.但代码就很长了,如果写成一个调用函数就简单些了.
laowang2 2007-03-09
  • 打赏
  • 举报
回复
函数模板。以前有人问过这个问题。
kangji 2007-03-09
  • 打赏
  • 举报
回复
不明白楼主的意思
鸡蛋换成鸭蛋,还算凑活,如果把鸡蛋换成炸弹,是不是太离谱了?
cfqmxh 2007-03-09
  • 打赏
  • 举报
回复
什么都行,只要能解决问题.
daydayup234 2007-03-09
  • 打赏
  • 举报
回复
宏行不

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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