1

DB を使用してメニューにデータを入力するアプリケーションを構築しています。メニュー項目を作成できますが、「クリック時」イベントを特定のフォームにリンクするのに問題があります。フォーム クラスの名前を DB に保存し、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();
4

2 に答える 2

0

これを行う:

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

frmnull でない場合、

frm->Show();
于 2014-03-16T03:54:29.317 に答える
0
TForm *frm = new TForm(this);

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

   //or

   frm->Show();
}
于 2014-09-02T16:41:50.117 に答える