
日本語ベータ版で見る
        Kylixプログラミング作法 
大野 元久
        ボーランド株式会社
        2001/3/17
 
        コーディングと言語仕様
■プロパティとイベントの制御
コンポーネントに表示する文字列や色、コンポーネントの大きさなど、コンポーネントの「属性」を設定するために使うのがプロパティである。ボタンを押したとき、エディットボックスに文字が入力されたとき、スクロールバーのスクロール位置が変わったときなどの「要因」に対応するものがイベントである。そして、イベントに対応して実行されるプログラムコードがイベントハンドラである。
プロパティやイベントは、左側にあるオブジェクトインスペクタで設定できる。複数のコンポーネントをまとめて選択すると、共通するプロパティやイベントだけが表示されるので、目的の値をまとめて設定できる。複数のイベントに共通のイベントハンドラを割り当てられるというのは、Kylixの特徴である。他社のツールでは、複数の部品で処理を共有するために、イベントハンドラに共通のルーチンを呼び出すコードを必要とするものもある。Kylixでは、形式さえ合っていれば、あるコンポーネントのためのイベントハンドラは、別のコンポーネントでも利用できるのだ。必要なことは、オブジェクトインスペクタの[イベント]ページで、ドロップダウン表示されるイベントハンドラを選択するだけである。
C++言語を使われる方は、プロパティをデータメンバ、イベントハンドラをメンバ関数と考えれば分かりやすいだろう。C++では、データメンバを外部からアクセスできるように設計しないのが普通だが、プロパティはアクセスできる。Kylixにおけるプロパティは、実は直接データメンバとして割り当てられている訳ではなく、特別な指定を通じてアクセスされる。例えば、プロパティを設定するためのメンバ関数を割り当てておくことができるので、不正な値を書き込もうとしても事前にチェックできる。これによって、コンポーネントの安全性は確保されている。
イベントハンドラは、クラスの継承におけるメンバ関数のオーバーライドだと考えることもできる。実際、Kylixではコンポーネントはクラスそのものであるが、継承しなくても、イベントハンドラを定義するだけでコンポーネントに動作を追加できる。
イベントハンドラの例を次に示そう。ここでは、フォームの色(Color)を黄色(clYellow)に設定している。
procedure TForm1.Button1Click(Sender: 
            TObject); | 
        
| リスト ボタンのイベントハンドラ | 
もし、プロパティやイベントを割り当てたコンポーネントが再利用性の高いものであれば、コンポーネントテンプレートとして設定するとよい(画面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サービス・アプリを作ってみよう。トライアル版も用意されているので、実際に試しながら読んでほしい  | 
|
  | 
  
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。 
 
  | 
 |





