オブジェクト変数の使い方
オブジェクト モデルの利用:インデックス への移動
オブジェクト変数は,同じ型か代入互換性のある型の別のオブジェクト変数に代入できます。特に,値を代入するオブジェクト変数の型が上位と下位の関係にある場合,代入先が上位であれば代入できます。たとえば,次のような TSimpleForm 型宣言と変数宣言部があるとします。変数宣言部には AForm と Simple の 2 つの変数が宣言されています。
type TSimpleForm = class(TForm) Button1: TButton; Edit1: TEdit; private { Private 宣言 } public { Public 宣言 } end; var AForm: TForm; SimpleForm: TSimpleForm;
AForm は TForm 型に属し,SimpleForm は TSimpleForm 型に属します。TSimpleForm は TForm の下位オブジェクトなので,次の代入文は有効です。
AForm := SimpleForm;
ボタンの OnClick イベントのイベントハンドラを記述したとします。ボタンをクリックすると,この OnClick のイベントハンドラが呼び出されます。どのイベントハンドラにも TObject 型の Sender パラメータがあります。
procedure TForm1.Button1Click(Sender: TObject); begin . . . end;
Sender 型が TObject に属しているため,Sender には任意のオブジェクトを割り当てられます。Sender の値は常に,発生したイベントに応答するコントロールやコンポーネントを指しています。予約語 is を使って Sender を調べると,イベントハンドラを呼び出したコンポーネントやコントロールの型がわかります。次に例を示します。
if Sender is TEdit then DoSomething else DoSomethingElse;