PR

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

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のWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

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