ソフトウエア開発を支える開発環境の現在

2011年5月19日(木)
藤井 等

Delphiのアーキテクチャと仕組み

では、話題をDelphiに戻しましょう。前回作成したアプリケーション「イメージビューワー」を思い出してください。最初に、[VCLフォームアプリケーション]メニューを選択して作成したのが、図のようなフォームです。

図4:VCLフォーム(クリックで拡大)

このフォームは、TFormというクラスを継承したTForm1という名称です(名前のうしろにつく番号は変わるかも知れません)。これは、作成されたソースファイルUnit1.pasに定義されています。

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.

実は、フォームに配置するコンポーネントやそのイベントハンドラなどは、すべてこのフォームクラスTForm1のメンバーとして定義していたのです。「フォームクラスをカスタマイズしてアプリケーションを作成する」というのがDelphiの基本スタイルです。

もちろん、フォームクラスにすべてをつぎ込むべきではないと思います。フォームは画面そのものですから、画面まわりのコード以外を別のモジュールに分離すれば、メンテナンス性も高まるでしょう。

ちなみに、フォームもクラスであるということから、自分で作成したフォームを継承して使うこともできます。そうすると、基本フォームを定義してから、そのバリエーションを効率よく作成して、一括管理できるようになります。

ボタンを配置すると何が起きるか?

では、フォームにボタンを配置してみましょう。

図5:ボタンの配置(クリックで拡大)

これによってコードは1行変化しました。つまり、TForm1のメンバーとしてButton1が追加されています。

type
  TForm1 = class(TForm)
  Button1: TButton;

次にボタンのキャプションを変えてみます。オブジェクトインスペクタで、Button1のCaptionプロパティを変更します。しかし、コードには何の変化もありません。実は、設定したプロパティは、.dfmという拡張子のファイルに保存されています。フォームデザイナ上でマウスを右クリックして[エディタで表示]を選択すると、このファイルを表示することができます。

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 216
  ClientWidth = 426
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton
  	Left = 168
  	Top = 112
  	Width = 75
  	Height = 25
  	Caption = 'Push Me'
  	TabOrder = 0
  end
end

こうして見ると、変更したCaption以外にも、いくつものプロパティが設定されていることが分かります。

では、イベントの定義はどのように行われるのでしょうか。オブジェクトインスペクタで、ボタンのOnClickイベントを設定してみます。

すると、.dfmファイルにOnClickの1行が追加されています。

  object Button1: TButton
  	Left = 168
  	Top = 112
  	Width = 75
  	Height = 25
  	Caption = 'Push Me'
  	TabOrder = 0
  	OnClick = Button1Click
  end
end

また、ソースコードも次のように変更されています。まず、TForm1の宣言に、イベントハンドラの手続きであるButton1Clickの宣言。

type
  TForm1 = class(TForm)
  	Button1: TButton;
  	procedure Button1Click(Sender: TObject);

そしてその実装です。

procedure TForm1.Button1Click(Sender: TObject);
begin

end;

end.

このように、Delphiでは、コードによって表されるアプリケーションに対する設定を、ビジュアル操作で簡単に行えるようにしているのです。

エンバカデロ・テクノロジーズ 日本法人代表
千葉大学文学部行動科学科卒業。石油関連会社でGISなどの開発を経験したのち、1995年、ボーランドに入社。マーケティングとしてJava開発ツールJBuilderやVisiBrokerなどミドルウエア製品の立ち上げを行う。2008年7月、ボーランドの開発ツール部門を合併したエンバカデロ・テクノロジーズに移籍。2009年1月より日本法人代表を務める。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています