クラスについて、初めて学ぶ場合、それは record と少し似ているものと考えると分かりやすいかもしれません。簡単に言うと「まとまり」です。もちろん クラスと record は、本質的には全く異なるものです。
まず最初に、Delphi を起動した時点で既にエディタに書かれているソースを見てみましょう。
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} end.
色を変えた所に、注目してください。ここでは、TForm クラスを親クラスとする「クラス TForm1」を宣言しています。( これについては、この後で、詳しく見ていきます。) また、今まで使用してきた Button、Edit、RadioGroup 等は、全てクラスのインスタンス( オブジェクト )として使用してきています。例えば、Button を貼り付けて下さい。Button1: TButton; というのが、クラス TForm1 の中に潜り込んだと思います。この TButton は、TForm1 と同じようにクラスを意味しています。Button1 はただの変数です。つまり、TButton クラスの変数 Button1 を宣言している事になります。また、この事から分かるように、Delphi では、クラス名の先頭に T を付ける慣習があります。(これは、Type の T のようです。)
クラスについての詳細を見る前に、具体的な例を見てみる事にしましょう。Delphi では、オリジナルのコンポーネントを手軽に作る事が出来ます。また、この作成したコンポーネントは、コンポーネントパレットに登録する事もできますので、例えば、別の人が作成したコンポーネントを登録したりと、拡張性、柔軟性にとても優れています。一旦、コンポーネントパレットに登録してしまえば、それを単にフォームに貼り付けてしまえばいいだけですから、使用する事も、驚くほど簡単に出来ます。ここでは、実際にオリジナルのコンポーネントを作って見ます。作るコンポーネントは、単に、そのデフォルトの仕様を変えただけにします。
コンポーネントを作る場合は、まずその上位クラスを決めなければなりません。ここでは TEdit から派生したクラス TMyEdit を作る事にします。
とりあえず、作ってみましょう。フォームにボタンを貼り付けて下さい。
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} type TMyEdit = class(TEdit) public constructor Create(AOwner: TComponent); override; end; var MyEdit: TMyEdit; { TMyEdit } constructor TMyEdit.Create(AOwner: TComponent); begin inherited; Color := clYellow; Text := 'MyEdit'; end; { TForm1 } procedure TForm1.FormCreate(Sender: TObject); begin MyEdit := TMyEdit.Create(Self); MyEdit.Parent := Self; MyEdit.Left := 10; MyEdit.Top := 10; end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(MyEdit.Text); end; end.
実行してみると、フォームには TEdit から派生させた TMyEdit が乗っていると思います。ボタンを押しますと、そのエディットに表示されている文字列がメッセージボックスに表示される事になります。新しくコンポーネントを作成する場合には、既存のクラスから派生させて作る必要があります。ですからここでは、クラス、継承などについて紹介して行こうと思っています。それでは、いっしょにがんばっていきましょう。