Delphiマンセー

このエントリーをはてなブックマークに追加
399デフォルトの名無しさん
今日はクラスをクラス名の文字列から作るお勉強だ。
その為にはまず、クラス名を登録しなければいけない。
登録するのはこうだ。
RegisterClass(TForm1);

そして、クラス名からコンポーネントを作成するには、
with TComponentClass(FindClass('TForm1')).Create(Application) as TForm do
begin
  Left:=Left+5;
  Show;
end;

つまり、FindClass すると、クラス参照型を返してくれるので、そのクラスをコンポーネント参照型に代入してとやる
with TForm(FindClass('TForm1')).Create(Application) do ・・・
とやっても良さそうに思うかな? これはTFormはクラス型なのでダメだ。

もしやるなら、
with TFormClass(FindClass('TForm1')).Create(Application) do ・・・
こうだけど、TForm1がTFormじゃない場合に困ったことになる事も考えておこう。

さて、FindClass の他に GetClass というのもある。
GetClassはそのクラスが無い時にnilを返す
FindClassはクラスが無ければ例外を出してくれる。