如何在C ++ Builder XE3中动态调用表单?

时间:2014-03-16 03:30:47

标签: c++builder c++builder-xe3

我正在构建一个使用DB填充菜单的应用程序。我可以创建菜单项,但我无法链接" On Click"特定形式的事件。我已经在我的数据库中存储了表单类的名称,并尝试使用RTTI在运行时绑定它们。以下是我试图运行的代码片段。

__fastcall TfrmMainMDI::TfrmMainMDI(TComponent *Owner)
    : TForm(Owner)
{
    // Register 2 form classes
    RegisterClass(__classid(TfrmSecurity));
    RegisterClass(__classid(TfrmPassword)); 
} 

现在,当我尝试运行以下代码来调用表单时,它会提供"访问冲突"错误。

    TForm *frm = (TForm*)TFormClass(FindClass(formName));
    UnicodeString str = frm->Name;
    frm->Show();

2 个答案:

答案 0 :(得分:0)

这样做:

TForm *frm = 0;
Application->CreateForm( TFormClass(FindClass(formName)), &frm );

然后,如果frm不为空,

frm->Show();

答案 1 :(得分:0)

TForm *frm = new TForm(this);

if( frm != NULL )
{
   frm->ShowModal();

   //or

   frm->Show();
}