別のユニットで TForm を拡張しました...
TForm = class(Forms.TForm)
protected
{ convenient extensions }
public
{ more extensions }
end;
そして、このユニット (拡張された TForm を使用) は、これらの拡張機能を適用したいフォームのすべてのユニットで宣言されています...
ただし、これらのユニットの一部には、次のコード スニペットがあります。
Initialization
RegisterClass(TFormN);
Finalization
UnRegisterClass(TFormN);
しかし、この方法では [EFilerError] 「TForm という名前のクラスは既に存在します」というメッセージが表示されます。
ここ数日、この競合を解決/回避する方法を探していましたが、成功しませんでした...
誰もこれを経験したことがありますか...?または、この問題の理由を明らかにすることはできますか?
問題は、このユニットを拡張形式で 2 つのプロジェクトに既に実装していることです。
ちょうど今、3 番目のプロジェクトでは、インスタンス化されずにフォーム クラスが呼び出されます...そして、拡張クラス フォームを次のように変更することはできません。
TForm = クラス(Forms.TForm)
に:
TStyleForm = クラス(Forms.TForm)
...
私が必要とするのは次のようなものです:
TFormStyle = class(Forms.TForm)
public
constructor Create(AOwner: TComponent); override;
end;
TForm = ^TFormStyle;
しかし、ユニットでは次のような宣言を行うことはできません:
TMyForm = class(TForm)
{ something... }
end;
今はポインタです...