クラスを変数で渡す
クラスを関数の引数で渡したい場合があります。
その場合どうやって記述すればよいのか??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;
|