表示: Delphi C++
表示設定

Delphi のオブジェクトの概要

提供:RAD Studio XE2
移動: 案内, 検索

オブジェクト モデルの使い方:インデックス への移動

新規プロジェクトを作成すると,IDE は新規フォームを表示してカスタマイズできるようにします。コードエディタで,自動生成されたユニットがこのフォームの新しいクラス型を宣言し,新規フォームインスタンスを作成するコードが生成されます。新規の Windows アプリケーションで生成されるコードの例を下に示します。

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 を派生させています。

前述のように,クラスはデータフィールドを持つという点でレコードと共通していますが,メソッドも持つという点でレコードと異なります。メソッドはオブジェクトのデータに作用するコードです。しかし,上の例で TForm1 にはデータフィールドもメソッドも示されていません。この理由は,フォームにコンポーネント(新しいオブジェクトのフィールド)を追加しておらず,イベントハンドラ(新しいオブジェクトのメソッド)を作成していないためです。型宣言には示されていませんが,TForm1 にはデータフィールドもメソッドもあります。

変数宣言で,新しい型である TForm1 の変数として Form1 を宣言しています。

var
  Form1: TForm1;

Form1 は,クラス型 TForm1 のインスタンス(オブジェクト)を表します。同じクラス型の複数のインスタンスを宣言することもできます。たとえば,MDI(マルチドキュメントインターフェース)アプリケーションで複数の子ウィンドウを作成する場合などです。この場合,インスタンスごとに独自のデータを持ちますが,どのインスタンスも同じコードを使ってメソッドを実行します。

コンポーネントの追加もコードの記述も行っていないフォームであっても,独立した GUI アプリケーションとしてコンパイル,実行できます。この場合,空のフォームを表示するだけのアプリケーションになります。

このフォームにボタンコンポーネントと OnClick イベントハンドラを追加し,ユーザーがボタンをクリックしたときにフォームの色を変更するとします。結果は次のようになります。

簡単なフォーム

Green.jpg

ユーザーがボタンをクリックすると,フォームの色は緑色に変わります。このボタンの OnClick イベントハンドラのコードは次のとおりです。

procedure TForm1.Button1Click(Sender: TObject);
begin
  Form1.Color := clGreen;
end;

オブジェクトの中に,データフィールドとして別のオブジェクトを入れることができます。フォームにコンポーネントを配置すると,その都度フォームの型宣言に新しいフィールドが追加されます。上のようにアプリケーションを作成してコードエディタを開くと,次のようなコードが表示されています。

unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type
  TForm1 = class(TForm)
    Button1: TButton;{ 新しいデータフィールド }
    procedure Button1Click(Sender: TObject);{ 新しいメソッドの宣言 }
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);{ 新しいメソッドのコード }
begin
  Form1.Color := clGreen;
end;
end.

TForm1 に,フォームに追加したボタンを示すフィールド Button1 が挿入されています。TButton はクラス型なので,Button1 はオブジェクトを指しています。

IDE を使って記述するすべてのイベントハンドラは,フォームオブジェクトのメソッドです。イベントハンドラを作成するたびに,フォームオブジェクト型ではメソッドが宣言されます。TForm1 の型宣言内では,TForm1 型の新しいメソッドとして手続き Button1Click が宣言されています。ユニットの implementation 部には,Button1Click メソッドを実装するコードが挿入されています。

関連項目

以前のバージョン
他言語版