クラスについて、初めて学ぶ場合、それは 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 が乗っていると思います。ボタンを押しますと、そのエディットに表示されている文字列がメッセージボックスに表示される事になります。新しくコンポーネントを作成する場合には、既存のクラスから派生させて作る必要があります。ですからここでは、クラス、継承などについて紹介して行こうと思っています。それでは、いっしょにがんばっていきましょう。