クラスについてはじめに

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


up next
Last update: 2002/11/20