フォームがデータベース内の EXE の外部に保持されているアプリケーションには、C++ Builder を使用します。アプリケーション コードは C++ です
これにより、再コンパイルせずにフォームとフォーム/アクションを変更できます。以下は、フォームをロードするジョブを実行するコードのスニペットです。
RegisterClass(__classid(TButton));
RegisterClass(__classid(TEdit));
RegisterClass(__classid(TRadioGroup));
RegisterClass(__classid(TGroupBox));
RegisterClass(__classid(TCheckBox));
RegisterClass(__classid(TRadioButton));
RegisterClass(__classid(TTimer));
RegisterClass(__classid(TListBox));
RegisterClass(__classid(TComboBox));
RegisterClass(__classid(TBitBtn));
RegisterClass(__classid(TSpeedButton));
RegisterClass(__classid(TMaskEdit));
RegisterClass(__classid(TProgressBar));
ms = new TMemoryStream;
ms2 = new TMemoryStream;
// Loading Module into Memory Stream
ms->Position = 0;
ms->LoadFromFile(Filename->Text);
ms->Position = 0;
pModule = new TForm(this);
// Reading Module Definition
if( !Inputisbin->Checked )
{
ms2->Position = 0;
ObjectTextToBinary(ms, ms2);
ms2->Position = 0;
ms2->ReadComponent(pModule);
}
else
ms->ReadComponent(pModule);
Log->Lines->Add("Displaying Module");
pModule->Show();
参照されているすべてのクラスを登録するために呼び出すことができる組み込み関数があるかどうか知りたいです。自分ですべてのオブジェクトのメモリストリームまたはファイルをスキャンし、それぞれに対して RegisterClass を呼び出すことは可能だと思いますが、誰かが既にこれを行った関数を知っていることを望んでいました。
そのため、すべてのフォームがこれらのクラスをすべて使用するわけではないため、実際に継承されるものだけを登録するとよいでしょう。