プロパティ、メソッド、イベント
コンポーネント ライブラリを理解する への移動
クラスの VCL 階層は IDE と関連付けられ、ここで迅速にアプリケーションを開発できます。VCL クラスは、プロパティ、メソッド、およびイベントをベースにしています。各クラスには、データ メンバ(プロパティ)、データを操作する関数(メソッド)、およびクラスのユーザーとの対話方法(イベント)が含まれています。VCL コンポーネント ライブラリは Delphi 言語で記述され、Windows API を基にしています。
プロパティ
プロパティとは、コンポーネントの特性のことです。プロパティはオブジェクトの表示(可視)や操作に影響します。たとえば Visible プロパティは、オブジェクトをアプリケーションのインターフェイスに表示(可視)するかどうかを指定します。プロパティを適切に設計すれば、ユーザーにとっては使いやすく、開発者にとっては保守しやすいコンポーネントが作成できます。
プロパティの便利な機能を一部紹介します。
- メソッドは実行時でなければ使用できませんが、一部のプロパティは設計時に表示、変更ができ、変更の結果はすぐに IDE を通してコンポーネントに反映されます。
- [オブジェクト インスペクタ]から一部のプロパティにアクセスでき、オブジェクトの値を確認しながら変更できます。コードを記述するより、設計時にプロパティを設定する方が簡単です。コードの保守も簡単になります。
- データはカプセル化されるので、プロテクトされ、実際のオブジェクトに対してプライベートになります。
- プロパティ値の取得、設定は、メソッド呼び出しによって行うことができるため、オブジェクトを使用するユーザーの目に見えない、特殊な処理を実行できます。たとえば、テーブルにデータがある場合でも、プログラマに対しては通常のデータ メンバとして表示するなどが可能です。
- プロパティのアクセス中にイベントを発生させ、他のデータを変更するロジックを実装できます。たとえば、あるプロパティの値を変更するとき、別のプロパティも変更する必要が生じることがあります。その場合、目的のプロパティのメソッドを変更できます。
- プロパティは仮想メソッドであり得る。
- 1 つのプロパティを複数のオブジェクトに適用することもできます。オブジェクトのプロパティを 1 つ変更するだけで、複数のオブジェクトを変更することもできます。たとえば、ラジオ ボタン 1 つの Checked プロパティを設定すると、同じグループ内のラジオ ボタン全体に反映されます。
メソッド
メソッドは、オブジェクトの動作を定義したものです。メソッドは、クラスに関連付けられた手続きまたは関数です。メソッドでは、同じクラスにある任意の可視性の任意のメンバにアクセスできます。「アクセスを制御する」と「メンバのアクセス制御」も参照してください。
クラスに宣言されるメソッドは、以下の表に示す 3 つのカテゴリに分類できます。
カテゴリ | Delphi 構文 | C++ 構文 | Self (Delphi の場合)または this (C++ の場合)の意味
|
関連項目 |
---|---|---|---|---|
通常 | 該当なし | 該当なし | クラス インスタンス | 「メソッド」トピックの「通常のクラス メソッド」セクション |
静的 | static
|
static
|
該当なし | 「メソッド」トピックの「静的クラス メソッド」セクション |
クラス | class
|
__classmethod
|
メタクラス インスタンス | クラス メソッドとは |
イベント
イベントは、プログラムにより検出されるアクションまたは出来事のことです。現代のアプリケーションの大半は、イベントに応答するように設計されているため、"イベント駆動型" であると言われます。プログラムでは、ユーザーが実行するアクションの順序をプログラマが正確に予測することはできません。たとえば、ユーザーは、メニュー項目を選択したり、ボタンをクリックしたり、テキストの一部を強調表示したりと、さまざまな操作をする可能性があります。プログラマは、常に一定の順序で実行されるコードを記述するのではなく、対象となるイベントを処理するコードを記述できます。
イベントがどのようにトリガされるかに関係なく、VCL オブジェクトは、そのイベントを処理するコードが記述されているかどうかを確認します。コードが記述されていれば、そのコードが実行されます。記述されていなければ、デフォルトのイベント処理動作が行われます。
メモ: 初期化コードは、OnCreate イベントまたは OnDestroy イベントのハンドラではなく、該当オブジェクトのコンストラクタまたはデストラクタに追加します。