日本語ベータ版で見る
Kylixプログラミング作法

大野 元久
ボーランド株式会社
2001/3/17

コーディングと言語仕様

■プロパティとイベントの制御

 コンポーネントに表示する文字列や色、コンポーネントの大きさなど、コンポーネントの「属性」を設定するために使うのがプロパティである。ボタンを押したとき、エディットボックスに文字が入力されたとき、スクロールバーのスクロール位置が変わったときなどの「要因」に対応するものがイベントである。そして、イベントに対応して実行されるプログラムコードがイベントハンドラである。

 プロパティやイベントは、左側にあるオブジェクトインスペクタで設定できる。複数のコンポーネントをまとめて選択すると、共通するプロパティやイベントだけが表示されるので、目的の値をまとめて設定できる。複数のイベントに共通のイベントハンドラを割り当てられるというのは、Kylixの特徴である。他社のツールでは、複数の部品で処理を共有するために、イベントハンドラに共通のルーチンを呼び出すコードを必要とするものもある。Kylixでは、形式さえ合っていれば、あるコンポーネントのためのイベントハンドラは、別のコンポーネントでも利用できるのだ。必要なことは、オブジェクトインスペクタの[イベント]ページで、ドロップダウン表示されるイベントハンドラを選択するだけである。

 C++言語を使われる方は、プロパティをデータメンバ、イベントハンドラをメンバ関数と考えれば分かりやすいだろう。C++では、データメンバを外部からアクセスできるように設計しないのが普通だが、プロパティはアクセスできる。Kylixにおけるプロパティは、実は直接データメンバとして割り当てられている訳ではなく、特別な指定を通じてアクセスされる。例えば、プロパティを設定するためのメンバ関数を割り当てておくことができるので、不正な値を書き込もうとしても事前にチェックできる。これによって、コンポーネントの安全性は確保されている。

 イベントハンドラは、クラスの継承におけるメンバ関数のオーバーライドだと考えることもできる。実際、Kylixではコンポーネントはクラスそのものであるが、継承しなくても、イベントハンドラを定義するだけでコンポーネントに動作を追加できる。

 イベントハンドラの例を次に示そう。ここでは、フォームの色(Color)を黄色(clYellow)に設定している。

procedure TForm1.Button1Click(Sender: TObject);
begin
   Color := clYellow;
end;
リスト ボタンのイベントハンドラ

 もし、プロパティやイベントを割り当てたコンポーネントが再利用性の高いものであれば、コンポーネントテンプレートとして設定するとよい(画面5)。コンポーネントテンプレートは、新たなアプリケーションを作成するときにも再利用でき、同じようなプロパティやイベントの割り当てを繰り返す必要がなくなる。

画面5 コンポーネントテンプレートの設定(画像をクリックすると拡大表示します)

■プログラミング言語Object Pascalの特徴

 プログラムにはObject Pascalという言語を使う。Object Pascalは、Pascalという言語にオブジェクト指向の拡張を施したものだ。ここで構文の詳細を述べることはできないが、ボーランドのDelphiあるいはTurbo Pascalユーザー以外にとっては、なじみの薄い言語かもしれない。しかし、ほかの言語を使ったことがある人なら学習は容易だろう。

 構文の違いはあるものの、Object PascalでもC++のようにさまざまな型や構文を使ったり、Windows APIを呼び出したり、クラスを作成・継承するといった共通点がある。逆に、Object Pascalは次のような部分がC++と異なる。

  • テンプレートがない
  • 演算子オーバーロードがない
  • 多重継承がない
  • クラスのインスタンスは常に動的に生成する
  • 変数の定義とプログラムの記述は場所が異なる
  • 識別子の大文字小文字は区別されない
  • 関数の中にローカルな関数を定義できる

 しかし、これらの違いによって、開発するアプリケーションに大きな制約があるわけではない。また、C++ほど複雑な構文を持たないこともあり、コンパイル速度は高速である。特にC++の「ヘッダ」に相当する機能は、ユニットというコンパイル済みのモジュールが提供するのだが、これによってヘッダのコンパイルにかかる時間が省略されている。多くのC++ではヘッダのプリコンパイルという技術により、コンパイル時間の短縮を図っているが、Delphi/Kylixのこの能力にはかなわないだろう。

 また、Visual Basicと比較すると、Object Pascalでは変数は定義してからでしか使えないし、Integerが32ビットであるとか、ファイルの操作方法が違うという点はある。しかし、Visual Basicの文法にはPascalらしい面もあり、「Delphi/Kylixのやり方」を覚えてしまえば済むだろう。

 参考のために、Visual BasicとDelphi/Kylixの型と演算子の違いを表1表2に示す。ご覧のとおり、ほとんどの型や演算子に対応するものがある。もちろん、Visual Basicユーザーは「ビジュアル開発」という手法に抵抗もないだろう。

データ型
Visual Basic Delphi/Kylix
備考
バイト型 Byte Byte
ブール型 Boolean WordBool
短精度整数型 Integer Smallint
長精度整数型 Long Longint
単精度実数型 Single Single
倍精度実数型 Double Double
通貨型 Currency Currency
日付型 Date TDateTime
可変長文字列型 String String 変換が必要
固定長文字列型 String * n WideCharの配列
バリアント型 Variant Variant
オブジェクト型 Object Variant
配列 (Low To High) array 次元の評価順が逆
ユーザー定義型 Type record
表1 Visual BasicとDelphi/Kylixの違い(型)

演算子 Visual Basic Delphi/Kylix
指数
^
Exp(y * Ln(x))
単項マイナス
-
-
乗算
*
*
除算
/
/
整数除算
\
div
剰余
%
mod
加算
+
+
減算
-
-
文字列連結
+
+
比較
<
<
<=
<=
>
>
>=
>=
=
=
<>
<>
文字列比較
Like
(対応するものなし)
オブジェクト比較
Is
=
論理NOT
Not
not
論理AND
And
and
論理OR
Or
or
論理XOR
Xor
xor
論理等価
Eqv
(=)
論理包含
Imp
(対応するものなし)
表2 Visual BasicとDelphi/Kylixの違い(演算子)

3/4

Index
日本語ベータ版で見る Kylixプログラミング作法
  日本語ベータ版登場
  ビジュアル開発の基本
 2種類あるコンポーネント
 コンポーネントの配置
 コンテナコンポーネントの概念
コーディングと言語仕様
 プロパティとイベントの制御
 プログラミング言語Object Pascalの特徴
  実践、Kylixプログラミング
 メニューデザイナによるメニューの設計
 ツールバーとステータスバーの追加
 メモとコモンダイアログの配置
 イベントハンドラの割り当て
 プログラムの実行
  Windowsの常識をLinuxに

Linux Square全記事インデックス


 Linux Squareフォーラム プログラミング関連記事
特集:オブジェクト指向に生まれ変わるPHP5[前編]
現在開発中のPHP5は、オブジェクト指向機能が大幅に強化される。次世代PHPはどのような言語になるのか?
特集:Windows開発者に贈る Kylixの全貌
注目の開発環境「Borland Kylix」がいよいよ見えてきた。ここに、英語版の発売を目前に控えたKylixの機能やアーキテクチャを紹介しよう
特集:Kylixプログラミング作法
GUIの構築やコンポーネントとコードの関係、 Object Pascalの仕様など。 これらの点を、実際に日本語ベータ版でプログラミングしながら分かりやすく解説
連載:PHP4で作るWeb-DBシステム(全5回)
PHPはWebサーバとデータベースを結びつけるものだ。そのためPHPでの開発を開始するには、OS、データベース、Webサーバ、そしてPHPと、多くのソフトウェアのインストールを行う必要がある
連載:ステップ・バイ・ステップ・シェルスクリプト(全7回)
Linuxの中でシェルスクリプトはネットワークの設定、デーモンの起動など重要な役割を果たしている。この連載では、シェルスクリプトで実用的なプログラムを組むことを目標にして、シェルの基本的な知識を説明する
連載:Kylix 3とDB2で作るWebサービス・アプリ(全5回)
Kylix 3とDB2 V8.1を使って、Webサービス・アプリを作ってみよう。トライアル版も用意されているので、実際に試しながら読んでほしい

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間