クラスを変数で渡す
クラスを関数の引数で渡したい場合があります。
その場合どうやって記述すればよいのか??Object Pascalには「クラス参照型」と言う型があります。 これを使うとスマートに解決できます。
詳細はヘルプの「クラス参照型」を参照して下さい。
以下の例は手作りの手続き「CreateNewForm」にフォームのクラスを渡しています。
■ クラス参照型を使った例 |
type TTest = class of TCustomForm; TForm1 = class(TForm) Button1: TButton; CheckBox1: TCheckBox; procedure Button1Click(Sender: TObject) private {Private 宣言} procedure CreateNewForm(FormClass: TTest); public {Public 宣言} end var Form1: TForm1 implementation uses Unit2, Unit3; {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin if CheckBox1.Checked then begin CreateNewForm(TForm2); end else begin CreateNewForm(TForm3); end; end; procedure TForm1.CreateNewForm(FormClass :TTest); var Form : TCustomForm; begin Form := FormClass.Create(Self); Form.ShowModal; Form.Release; end; |