フレーム コードからフレームのオーナー フォームのクラスタイプを取得し、そのタイプを TFormClass に変換するにはどうすればよいですか。フォーム クラスを登録する必要があることはわかっているので、GetClassで取得できますが、そこで行き詰まります。
質問する
1467 次
1 に答える
7
ホスト フォームのクラス型は次のように取得されます。
HostFormClassType := TFormClass(GetParentForm(Self).ClassType);
ここで私が書くとき、私はSelf
それをあなたのフレームと見なします。「所有者」とおっしゃいましたが、本当の意味はフレームが存在するフォームだと思います。これは通常、フレームの所有者と同じですが、常にそうとは限りません。
何も登録したり、呼び出したりする必要はありませんGetClass
。
これに関する唯一のわずかな問題は、ではなくGetParentForm
から派生したものを返す可能性があることです。したがって、上記のコードのキャストは正しくない可能性があります。ランタイム テストを含めることで、これに対処できます。TCustomForm
TForm
var
ClassType: TClass;
....
ClassType := GetParentForm(Self).ClassType;
Assert(ClassType.InheritsFrom(TForm));
HostFormClassType := TFormClass(ClassType);
于 2013-03-20T12:23:28.460 に答える