0

私はdelphi 7を使用しており、私のプロジェクトには多くの利用可能なフォームがあります。使用可能なすべてのフォーム クラス名を取得するために実行しようとしましapplication.component[i].classnameたが、作成されたフォーム クラス名のリストしか取得できません。

プロジェクトで利用可能なすべてのフォームクラス名をリストボックスに取得する方法はありますか?

4

1 に答える 1

2

組み込みのクラス レジストリを使用できます。

  • を呼び出して、すべてのフォーム クラスを登録しますRegisterClass(TMyForm)。これは、通常、クラスを定義するユニットの初期化セクションから行います。
  • レジストリからクラスを復元​​する場合はFindClass、クラス名を渡して呼び出します。
  • 安全のために、FindClassが を継承するクラスを返すことを確認してくださいTForm
  • 最後に、クラスの仮想コンストラクターを使用するかApplication.CreateForm、単に呼び出してフォーム インスタンスを作成します。Create

インスタンス化は次のようになります。

var
  MyClass: TPersistentClass;
  Form: TForm;
....
MyClass := FindClass(ClassName);
if MyClass.InheritsFrom(TForm) then
  Form := TFormClass(MyClass).Create(AnOwner);
于 2013-04-06T20:35:23.983 に答える