Copyright: Delphi v.2.0 Copyright (c) 1982-1996, Borland International, Inc.


コンポーネントの登録
コンポーネントの登録14001

参照

コンポーネント，コンポーネントのプロパティやメソッド，イベントを記述しただけでは，まだコンポーネントの作成は完了していません。これまでに作成した機能だけでも十分に実用的なコンポーネントですが，そうした機能を設計時にも操作できるようにすれば，より強力なコポーネントが完成します。

コンポーネントを，その本来の作業を行うだけでなく設計時にも操作できるものにするための手順は次のとおりです。

コンポーネントの Delphi への登録

パレットビットマップの追加

プロパティとイベントについてのヘルプの提供

プロパティの保存と読み込み

ただし，コンポーネントによっては，上の手順の一部は必要ありません。たとえば，新しいプロパティやイベントを定義しなかった場合は，ヘルプを提供する必要はありません。常に必要なのは，Delphi への登録だけです。


参照
参照14002

コンポーネント作成の概要

コンポーネント開発者のための OOP

プロパティの作成

イベントの作成

メソッドの作成

コンポーネントにおけるグラフィックの使い方

メッセージの処理


コンポーネントの Delphi への登録
コンポーネントの Delphi への登録14003

参照

コンポーネントを登録すれば，Delphi はコンポーネントを認識してコンポーネントパレットに配置できます。登録はユニット単位で行います。1 つのユニットに複数のコンポーネントを作成した場合は，そのコンポーネントは一度に登録されます。

コンポーネントを登録するには，コンポーネントユニットに手続き Register を記述します。この作業について以下の 2 つの項目を説明します。

Register 手続きの宣言

Register 手続きの実装

登録を終えた後，コンポーネントをパレットにインストールします。コンポーネントのインストールについては『ユーザーズガイド』の説明を参照してください。


参照
参照14004

パレットビットマップの追加

プロパティとイベントについてのヘルプの提供

プロパティの保存と読み込み


Register 手続きの宣言
Register 手続きの宣言14005

参照	例

コンポーネントを登録するには，コンポーネントのユニットに Register という名前の手続きを記述します。Register の宣言は必ずユニットのインターフェース部に記述して，Delphi が Register を発見できるようにします。この Register の中で， 登録する各コンポーネントについて手続き RegisterComponents を呼び出します。


例
例14006

新しいコンポーネント型を作成して登録する簡単なユニットの例を次に示します。

unit MyBtns;
interface
type
  { ここでコンポーネント型を宣言 }

procedure Register;	{ この文は必ずインターフェース部に記述する }

implementation
  { ここでコンポーネントを実装 }

procedure Register;
begin
  { コンポーネントを登録 }
end;
end.


参照
参照14007

Register 手続きの実現


Register 手続きの実現
Register 手続きの実現14008

参照	例

コンポーネントが所属するユニットの手続き Register の中で，コンポーネントパレットに追加する各コンポーネントを登録します。ユニットに複数のコンポーネントがある場合は，すべてのコンポーネントをまとめて一度に登録できます。

コンポーネントを登録するには，コンポーネントを追加するコンポーネントパレットのそれぞれのページに対して手続き RegisterComponents を呼び出します。RegisterComponents は，登録するコンポーネントに関する以下の 2 つの情報を Delphi に通知します。

コンポーネントをインストールするパレットページの名前

インストールするコンポーネントの名前

パレットページの名前は文字列で指定します。指定した名前のパレットページが存在しない場合は，Delphi はその名前のページを新しく作成します。Delphi は標準ページの名前を文字列リストリソースの中に格納しています。そのため，製品のインターナショナル版ではページに自国の言葉で名前を付けることができます。コンポーネントを標準ページにインストールしたい場合は，LoadStr 関数を呼び出し，そのページのための文字列リソースを表す定数 (たとえば System ページのための srSystem のような) を渡してページ名を取得します。

コンポーネントの名前はオープン配列で渡します。この配列は RegisterComponents の呼び出し文の中で作成できます。


例
例14009

手続き Register の例を次に示します。TMyComponent という名前のコンポーネントを登録し，Miscellaneous という名前のコンポーネントパレットページにそのコンポーネントを配置します。

procedure Register;
begin
  RegisterComponents('Miscellaneous', [TMyComponent]);
end;

また，複数のコンポーネントを同じページに一度に登録したり，複数のコンポーネントを複数のページに登録することもできます。次にそのような例を示します。

procedure Register;
begin
  RegisterComponents('Miscellaneous', [TFirst, TSecond]);	{ このページに 2 つ... }

  RegisterComponents('Assorted', [TThird]);	{ ...別のページに 1 つ... }

  RegisterComponents(LoadStr(srStandard), [TFourth]);	{ ...[Standard] ページに 1 つ... }

end;


参照
参照14010

Register 手続きの宣言


パレットビットマップの追加
パレットビットマップの追加14011

参照	例

すべてのコンポーネントには，そのコンポーネントをコンポーネントパレットで表示するためのビットマップが必要です。独自のビットマップを指定しなければ，デフォルトのビットマップが使用されます。

パレットビットマップが必要なのは設計時だけなので，パレットビットマップをコンポーネントユニット中にコンパイルする必要はありません。パレットビットマップは Windows リソースファイルで提供します。ファイルの名前は，ユニットと同じ名前に拡張子 .DCR  (Dynamic Component Resource) を付けたものにします。リソースファイルは Delphi のビットマップエディタで作成できます。ビットマップの大きさは 24 ピクセル四方にします。

インストールする各ユニットに1つずつパレットビットマップファイルを作成し，そのファイル内に，登録する各コンポーネントに 1 つずつビットマップを作成します。このビットマップイメージにはコンポーネントと同じ名前を付けます。パレットビットマップファイルは，コンパイル済みのユニットと同じディレクトリに入れておきます。こうすれば，コンポーネントをパレットにインストールする際に Delphi がビットマップを探し出せます。


例
例14012

たとえば，ユニット ToolBox でコンポーネント TMyControl を作成した場合は，TOOLBOX.DCR という名前のリソースファイルに TMYCONTROL という名前のビットマップを作成します。リソース名では大文字と小文字は区別されませんが，通常は大文字を使用します。


参照
参照14013

コンポーネントの Delphi への登録

プロパティとイベントについてのヘルプの提供

プロパティの保存と読み込み


プロパティとイベントについてのヘルプの提供
プロパティとイベントについてのヘルプの提供14014

参照

一般に，フォームでコンポーネントを選択したときや，オブジェクトインスペクタでプロパティやイベントを選択したときに F1 を押すと，その項目についてのヘルプが呼び出されます。開発したコンポーネントにヘルプファイルを用意しておけば，コンポーネントユーザーは同じようにヘルプを利用できます。

Delphi には複数のヘルプファイルを検索する独自のヘルプエンジンがあるので，開発したコンポーネントについての情報だけを入れた小さなヘルプファイルを用意すれば十分です。ユーザーはその情報を簡単に検索できます。つまり，作成したヘルプファイルは総合的な Delphi ヘルプシステムの一部に組み込まれます。

コンポーネントユーザーにヘルプを提供する方法について，以下の 2 つの項目を説明します。

Delphi がヘルプ要求を処理する方法

独自のヘルプを Delphi に組み込む方法


参照
参照14015

コンポーネントの Delphi への登録

パレットビットマップの追加

プロパティの保存と読み込み


Delphi のヘルプ要求の処理
Delphi のヘルプ要求の処理14016

参照	例

Delphi は要求されたヘルプをキーワードによって検索します。たとえば，ユーザーがフォームデザイナでコンポーネントを選択して F1 を押したとします。Delphi はそのコンポーネントの名前をキーワード (この場合は，class_ にそのコンポーネント型名を加えた文字列) に変換し，次に Windows のヘルプエンジン (WinHelp) を呼び出して，そのキーワードを持つヘルプトピックを検索します。

キーワード検索は Windows 標準ヘルプシステムの機能です。実際，WinHelp の［キーワードで検索］ダイアログボックスには，ヘルプファイルのキーワードがリストされます。ただし，コンポーネントで使用しているような，状況感知型の検索用のキーワードは，人間が読むためのものではありません。このような代替キーワードは，［キーワードで検索］ダイアログボックスには表示されません。


例
例14017

たとえば，あるユーザーが Tsomething という名前のコンポーネントについての説明を検索する場合は，［キーワードで検索］ダイアログボックスで Tsomething を検索します。フォームデザイナの状況感知型の検索では class_Tsomething という代替キーワードを使用していますが，ユーザーがこれを検索することはありません。そのため，class_Tsomething という特殊なキーワードは［キーワードで検索］ダイアログボックスのリストには表示されません。


参照
参照14018

独自のヘルプを　Delphi に組み込む

特殊な脚注の追加


独自のヘルプを Delphi に組み込む
独自のヘルプを Delphi に組み込む14019

参照

Delphi には，Windows ヘルプコンパイラ HC.EXE など，Windows ヘルプファイルの作成と組み込みに必要なツールがすべて含まれています。Delphi コンポーネント用のヘルプファイルを作成する方法は，一般のヘルプファイルを作成する方法と同じです。ただし，ライブラリのほかのヘルプファイルと互換性を保つには，いくつかの規則に従う必要があります。

ヘルプファイルの一般的な作成方法については，Windows ヘルプの作成を参照してください。

ほかの Delphi コンポーネントヘルプと互換性があるヘルプファイルを作成するには，以下の 4 つの作業が必要です。

1	ヘルプファイルの作成

2	特殊な脚注の追加

3	キーワードファイルの作成

4	ヘルプインデックスのマージ

開発したコンポーネント用のヘルプを完成した段階では，以下のファイルが作成されています。

コンパイルされたヘルプ (.HLP) ファイル

ヘルプキーワード (.KWF) ファイル

ヘルプソース (.RTF) ファイル (このファイルは複数の場合もあります)

ヘルププロジェクト (.HPJ) ファイル

コンパイルされたヘルプファイルとヘルプキーワードファイルは，開発したコンポーネントのユニットと同じディレクトリに入れます。開発したコンポーネントをほかのユーザーに配布する場合には，コンパイル済みのユニット (.DCU) ファイルに添えて，この 2 つのファイルも配布します。ヘルプソースファイルとヘルププロジェクトファイルは，ヘルプファイルとヘルプキーワードファイルのソースコードです。ソースコードは適切に保存・管理してください。


参照
参照14020

Delphi のヘルプ要求の処理


ヘルプファイルの作成
ヘルプファイルの作成14021

参照

Windows ヘルプファイルの作成には任意のツールを使用できます。Delphi の複数ファイル検索エンジンは，複数のヘルプファイルのデータを管理できます。コンパイル済みのヘルプファイルに加えて，書式付きテキスト形式 (RTF) のソースファイルも用意しておきま。これは，キーワードファイルを作成するためです。なお，通常は RTF ファイルを配布することはありません。

ライブラリのほかのコンポーネントのヘルプファイルと同じように動作するヘルプファイルを作成するときは，以下の規則に従います。

1	各コンポーネントに画面を 1 つずつ割り当てる

コンポーネント画面では，そのコンポーネントの目的を簡単に説明し，ユーザーが使用できるすべてのプロパティ，イベント，メソッドを別々にリストします。アプリケーション開発者は，フォームでそのコンポーネントを選択して F1 を押すことにより，この画面を表示します。コンポーネント画面の実際の例を表示するには，フォームに任意のコンポーネントを配置して F1 を押します。

コンポーネント画面には，キーワード検索用の脚注文字「K」を付けて，コンポーネントの名前を指定します。たとえば，Tmemo コンポーネントのキーワード脚注は「Tmemo コンポーネント」となります。

2	コンポーネントに追加したか，または大きく変更した各プロパティ，イベント，メソッドに画面を1つずつ割り当てる

プロパティ，イベント，メソッドの各画面には，その項目が所属するコンポーネントと，その項目を宣言する構文を示し，さらに使用方法を説明します。アプリケーション開発者は，オブジェクトインスペクタでその項目を強調表示させて F1 を押すか，またはコードエディタでその項目の名前にテストカーソルを移動させて F1 を押すことにより，その項目の画面を表示します。プロパティ画面の実際の例を表示するには，オブジェクトインスペクタで任意のプロパティを選択して F1 を押します。

プロパティ，イベント，メソッドの各画面には，キーワード検索用の脚注文字 K を付けて，その項目の名前と種類を指定します。たとえば，Top プロパティのキーワード脚注は「Top プロパティ」となります。

次に，Delphi が複数ファイルインデックス検索に使用する特殊な脚注をヘルプファイルの各画面に付けます。


参照
参照14022

Windows ヘルプの作成

特殊な脚注の追加

キーワードファイルの作成


特殊な脚注の追加
特殊な脚注の追加14023

参照

コンポーネント用のヘルプ画面をそれ以外の同じような名前の付いた項目から区別するため，Delphi は特殊な検索キーを使用します。このため各項目には，標準キーワード検索用の K の脚注だけでなく，Delphi 用の特殊な脚注も必要です。

オブジェクトインスペクタやコードエディタで F1 による検索を行うには，各ヘルプファイル画面に脚注文字「B」を付けて，キーワードを指定します。

文字B脚注は，WinHelp の標準キーワード検索に使用される K の脚注と似ていますが，B の脚注を使用するのは Delphi の検索エンジンだけです。以下の表は，各種のコンポーネントヘルプ画面の B の脚注を作成する方法を示します。

画面の種類	文字 B の脚注の内容	例
メインコンポーネントの画面	'class_' + コンポーネント型名	class_TMemo
汎用的なプロパティまたはイベントの画面	'prop_' + プロパティ名 'event_' + イベント名	prop_WordWrap event_OnChange
コンポーネント独自のプロパティまたはイベントの画面	'prop_' + コンポーネント名 + プロパティ名 'event_' + コンポーネント名 + イベント名	prop_TMemoWordWrap event_TMemoOnChange
汎用の画面とコンポーネント独自の画面との区別は大切です。汎用の画面は，すべてのコンポーネントの特定のプロパティやイベントに適用されます。たとえば，すべてのコンポーネントは同じ Left プロパティを持ちます。したがって，このプロパティの検索用文字列は prop_Left です。一方，BorderStyle プロパティの機能は所属するコンポーネントによって異なります。したがって，各コンポーネントの BorderStyle プロパティは，それぞれ独自の画面を使用します。たとえば，編集ボックスコンポーネント TEditのBorderStyle プロパティ用の画面には，prop_TEditBorderStyle という検索用文字列が付けられています。


参照
参照14024

Windows ヘルプの作成

ヘルプファイルの作成

キーワードファイルの作成


キーワードファイルの作成
キーワードファイルの作成14025

参照

開発したコンポーネント用のヘルプファイルを作成してコンパイルし，キーワード検索用の特殊な脚注を追加した後は，キーワードファイルを作成します。このキーワードファイルの内容は，Delphi のマスター検索インデックスにマージされます。

ヘルプソース (RTF) ファイルからキーワード (.KWF) ファイルを作成する手順は次のとおりです。

1	キーワードファイル生成アプリケーション KWGEN を実行します。プログラムマネージャから Delphi グループの Keyword Generate を起動し，［.HPJ ファイル(H)］にプロジェクトファイルを指定します。

KWGEN の実行が終了したときには，キーワードファイルが作成されています。キーワードファイルの名前は，ヘルプファイルやヘルププロジェクトファイルの名前と同じで，拡張子が .KWF になります。

2	作成されたキーワードファイルを，コンパイル済みのユニットファイルやヘルプファイルと同じディレクトリに入れます。

コンポーネントパレットにコンポーネントをインストールする場合も Delphi ヘルプシステムのマスター検索インデックスにキーワードをマージできます。


参照
参照14026

Windows ヘルプの作成

特殊な脚注の追加

ヘルプファイルの作成


ヘルプインデックスのマージ
ヘルプインデックスのマージ14027

参照

ヘルプファイルからキーワードファイルを作成したら，次はキーワードを Delphi のマスターヘルプインデックスにマージします。

キーワードファイルを Delphi マスターヘルプインデックスにマージする手順は次のとおりです。

1	キーワード (.KWF) ファイルとコンパイルされたヘルプ (.HLP) ファイルをコンパイル済みユニットファイルと同じディレクトリに置きます。

2	アプリケーション HELPINST を実行します。HELPINST は Delphi に付属する Windows アプリケーションです。

HELPINST の実行が終了したときには，Delphi マスターヘルプ (.HDX) ファイルに，コンポーネントのヘルプ画面用のキーワードが入っています。


参照
参照14028

ヘルプファイルの作成

特殊な脚注の追加


プロパティの保存と読み込み
プロパティの保存と読み込み14029

参照

Delphi はフォームとそのコンポーネントをフォーム (.DFM) ファイルに格納します。フォームファイルには，フォームとコンポーネントプロパティがバイナリ形式で保存されます。フォームが保存されるとき，フォームに配置されたコンポーネントは自身のプロパティをフォームファイルに書き込みます。同様に，Delphi に読み込まれるときや，アプリケーションの一部として実行されるときには，コンポーネントは自身をフォームファイルから復元します。

コンポーネントにはフォームファイルを操作する機能が備わっています。つまり，すべてのコンポーネントはバイナリ表現の保存と読み込みの機能を継承しています。しかし，コンポーネントが自身を保存する方法や，読み込まれたときの初期化方法を変更したい場合があります。そのためには，基礎的なメカニズムについてある程度理解する必要があります。

プロパティの保存と読み込みについて以下のことを説明します。

保存と読み込みのメカニズム

デフォルト値の指定

保存対象の決定

読み込み後の初期化


参照
参照14030

コンポーネントの Delphi への登録

パレットビットマップの追加

プロパティとイベントについてのヘルプの提供


保存と読み込みのメカニズム
保存と読み込みのメカニズム14031

参照

アプリケーション開発者がフォームを設計した場合，フォームの記述はフォーム (.DFM) ファイルに保存され，後にコンパイル済みのアプリケーションに結び付けられます。アプリケーションは実行時にフォームの記述を読み込みます。

フォームの記述には，フォームのプロパティのリストと，フォーム内の各コンポーネントの同様の記述があります。フォームやコンポーネントは，自身の記述の保存と読み込みを行う機能を備えています。

通常，コンポーネントが自身の記述を保存する場合は，パブリックまたはパブリッシュに宣言されているプロパティのうち，値がデフォルトと異なるものを宣言順に書き込みます。コンポーネントが自身の記述を読み込む場合は，まず自身を作成し，すべてのプロパティをデフォルト値に設定してから，保存されている (デフォルト値ではない) プロパティ値を読み込みます。

ほとんどの場合，このデフォルトのメカニズムを変更する必要はありません。しかし，特定のコンポーネントの保存と読み込みの処理をカスタマイズする方法もいくつか用意されています。


参照
参照14032

デフォルト値の指定

保存対象の決定

読み込み後の初期化


デフォルト値の指定
デフォルト値の指定14033

参照	例

Delphi コンポーネントは，値がデフォルト値と異なっているプロパティだけを保存します。特に指定しなければ，プロパティはデフォルト値を持っていないとみなされ，そのプロパティは値にかかわらず常に保存されます。

コンポーネントコンストラクタによって値を設定されないプロパティは，値がゼロになります。プロパティの型によって，この「ゼロ」に対応する実際の値はさまざまです。つまり，数値ならばゼロ，論理値ならば False，ポインタならば nil になります。ゼロとみなされる値が何であるか確信が持てない場合は，デフォルト値を明示的に指定してください。

プロパティのデフォルト値を指定するには，プロパティ宣言文の最後に default 指令とデフォルト値を記述します。

プロパティを再宣言するときも，デフォルト値を指定できます。実際，異なったデフォルト値を指定するためにプロパティを再宣言することもよくあります。

メモ:	デフォルト値を指定しただけで，オブジェクト作成時にその値が自動的にそのプロパティに代入されるわけではありません。コンポーネントの Create コンストラクタで値を代入する必要があります。


例
例14034

次のコード例では，コンポーネント宣言で Align プロパティにデフォルト値を指定し，コンポーネントコンストラクタでそのデフォルト値を実際に代入しています。新しいコンポーネントは，標準パネルコンポーネントを変更して，ウィンドウのステータスバーとして使用します。そのため，ウィンドウのデフォルトの配置をオーナーの下部として指定します。

type
  TStatusBar = class(TPanel)
  public
    constructor Create(AOwner: TComponent); override;	{ 新しいデフォルトを設定するためオーバーライド }

  published
    property Align default alBottom;	{ 新しいデフォルト値で再宣言 }

  end;

...

constructor TStatusBar.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);	{ 継承した初期化処理を実行 }

  Align := alBottom;	{ Align に新しいデフォルト値を代入 }
end;


参照
参照14035

保存と読み込みのメカニズム

保存対象の決定

読み込み後の初期化


保存対象の決定
保存対象の決定14036

参照	例

コンポーネントのプロパティのそれぞれについて，保存するかどうかを指定できます。デフォルトでは，オブジェクト宣言の published 部のすべてのプロパティが保存されますが，特定のプロパティを保存しないように指定したり，プロパティを保存するかどうかを実行時に決定する関数を指定することができます。

プロパティを保存するかどうかを指定するには，そのプロパティの宣言に stored 指令を追加し，その後に TrueかFalse，または論理値を返すメソッドの名前を記述します。

stored 節は，すべてのプロパティの宣言および再宣言に記述できます。


例
例14037

次のコード例では，コンポーネントで 3 つの新しいプロパティを宣言しています。最初のプロパティは必ず保存され，2 番目のプロパティは常に保存されず，3 番目のプロパティはメソッドが返す論理値に応じて保存されます。

type
  TSampleComponent = class(TComponent)

  protected
    function StoreIt: Boolean;

  public	{ 通常，格納されない }
    property Important: Integer stored True;	{ 常に保存される }

  published	{ 通常，常に格納される }
    property Unimportant: Integer stored False;	{ 常に保存されない }
    property Sometimes: Integer stored StoreIt;	{ 関数値に応じて保存 }
  end;


参照
参照14038

保存と読み込みのメカニズム

デフォルト値の指定

読み込み後の初期化


読み込み後の初期化
読み込み後の初期化14039

参照	例

コンポーネントは，すべてのプロパティ値を保存されている記述から読み込んだ後，Loaded という仮想メソッドを呼び出します。この仮想メソッドでは，必要な初期化を行うことができます。Loaded はフォームやコントロールが表示される前に呼び出されるので，初期化処理によって画面にちらつきが生じることはありません。

プロパティが読み込まれた後でコンポーネントを初期化する場合には，Loaded メソッドをオーバーライドします。

メモ:	新しい Loaded メソッドでは，まず継承した Loaded メソッドを呼び出します。そうすれば，独自の初期化を行う前に，すべての継承プロパティを適切に初期化できます。


例
例14040

次に示すコードは，TDatabaseコンポーネントのコードを元にしています。このデータベースは，読み込まれた後，すべての接続を保存時の状態に戻そうとします。また，接続処理中に例外が発生した場合の処理方法も指定しています。

procedure TDatabase.Loaded;

begin

  inherited Loaded;	{ 常に，継承メソッドを最初に呼び出す }

  try
    if FStreamedConnected then Open;	{ 接続を再確立する }

  except
    if csDesigning in ComponentState then	{ 設計時ならば... }
      Application.HandleException(Self)	{ ...Delphiに例外を処理させる }

    else Raise;	{ そうでない場合には，例外を生成 }

  end;
end;


参照
参照14041

保存と読み込みのメカニズム

デフォルト値の指定

保存対象の決定


コンポーネント開発のはじめに
コンポーネント開発のはじめに14042

参照

Delphi は，コンポーネントを使用してビジュアルにアプリケーションを作成する開発環境ですが，それだけではありません。Delphi では，そのコンポーネント自体を同じ Object Pascal 言語によって作成することもできます。

『コンポーネント開発者ガイド』と，対応するヘルプファイル (CWG.HLP) には，Delphi アプリケーション用コンポーネントの開発に必要なすべての情報が記載されています。同一の内容をマニュアルとヘルプファイルの 2 つの形式で提供します。

このマニュアルには以下の 2 つの目的があります。

1	コンポーネントの作成方法を説明する

2	作成したコンポーネントを Delphi 環境の一部分として適合させる

このマニュアルに従えば，開発者自身のアプリケーションでも，あるいは市販するアプリケーションでも，すべての Delphi アプリケーションで正しく動作するコンポーネントを開発できます。


参照
参照14043

コンポーネント開発は何が違うのか

コンポーネントとは何か

コンポーネントの作成 (まとめ)

コンポーネント作成の概要


コンポーネントとは何か
コンポーネントとは何か14044

参照

コンポーネントは Delphi アプリケーションを構成する部品です。大部分のコンポーネントはユーザーインターフェースの一部分として表示されますが，タイマーやデータベースのようないくつかのコンポーネントは，プログラム中に存在するだけで表示されません。

コンポーネントは 3 つのレベルで考えることができます。

コンポーネントの機能的定義

コンポーネントの技術的定義

開発者にとってのコンポーネント定義


参照
参照14045

コンポーネント開発は何が違うのか

コンポーネントの作成 (まとめ)


コンポーネントの機能的定義
コンポーネントの機能的定義14046

参照

使用する立場からみたコンポーネントは，パレットから選択してフォームデザイナやコードエディタで編集し，アプリケーションで使用する対象です。これに対して，開発する立場からみたコンポーネントは，コードで書かれたオブジェクトです。コンポーネントの開発における実質的な制約はほとんどなく，さまざまなコンポーネントを作成できますが，コンポーネントの使用者が何のためにそのコンポーネントを使用するのか，という点を常に意識しておくとよいでしょう。

ユーザーにとって使いやすいコンポーネントを作成するために，まず Delphi に付属する既存のコンポーネントをよく理解しておいてください。なるべく，ほかのコンポーネントと同じように使えるコンポーネントを作成するべきです。


参照
参照14047

コンポーネントの技術的定義

開発者にとってのコンポーネント定義


コンポーネントの技術的定義
コンポーネントの技術的定義14048

参照

最も基本的なレベルでは，コンポーネントとは Tcomponent 型を継承するオブジェクトのことです。TComponent は，コンポーネントパレットへの表示やフォームデザイナでの動作など，すべてのコンポーネントが備えていなければならない最低限の機能を定義しています。

しかし，この基本的な機能だけで十分とは限りません。Tcomponent は，コンポーネントが Delphi 環境で動作するために必要な基本的な機能を定義していますが，たとえば，開発者がコンポーネントに追加した独自の機能を処理する方法は定義していません。そのような機能については，開発者自身が処理手順を指定しなければなりません。

正しく動作するコンポーネントを作成するのは，それほど難しいことではありません。ただし，それにはこのマニュアルに記載されている規約，規則に十分な注意を払う必要があります。


参照
参照14049

コンポーネントの機能的定義

開発者にとってのコンポーネント定義


開発者にとってのコンポーネント定義
開発者にとってのコンポーネント定義14050

参照

実際には，コンポーネントとは Delphi 開発環境に「差し込む」ことができる要素のことです。単純なものから複雑なものまで，あらゆるコンポーネントがあります。標準コンポーネントに単純な機能を追加しただけのコンポーネントもあれば，ほかのハードウェアやソフトウェアへの巨大で複雑なインターフェースを実現するコンポーネントもあります。つまりコンポーネントは，コンポーネントフレームワークに適合している限り，コードで作成し得るすべての動作，すべてのものを表現できます。

コンポーネントは本質的にインターフェースの仕様です。このマニュアルはコンポーネントフレームワークを記載しており，コードをこのフレームワーク (枠組) にそって作成すれば，そのコードは Delphi で動作します。

したがって，コンポーネントの限界について述べることは，プログラミングの限界について述べることと同じです。あるプログラミング言語で作成し得るすべてのプログラムを説明することができないのと同様に，作成し得るすべてのコンポーネントを説明することはできません。このマニュアルにできることは，Delphi 環境に正しく適合するコードの記述方法を説明することだけです。


参照
参照14051

コンポーネントの機能的定義

コンポーネントの技術的定義


コンポーネント開発は何が違うのか
コンポーネント開発は何が違うのか14052

参照

Delphi で使用するコンポーネントを作成する作業と，コンポーネントを使用したアプリケーションを作成するという，より一般的な作業との間には，以下の 3 つの重要な相違点があります。

コンポーネント開発はビジュアルではない

コンポーネント開発にはオブジェクトの深い知識を要する

コンポーネント開発にはより多くの規則が伴う


参照
参照14053

コンポーネントとは何か

コンポーネントの作成 (まとめ)


コンポーネント開発はビジュアルではない
コンポーネント開発はビジュアルではない14054

参照

Delphi において，コンポーネントを開発する作業が，コンポーネントを使用してアプリケーションを作成する作業に比べて最も明白に異なっているのは，コンポーネントの開発は全面的にコードによって行われるという点です。Delphi アプリケーションをビジュアルに設計するには完成したコンポーネントが必要なため，コンポーネント自体を作成するときは Object Pascal コードで記述しなければなりません。

アプリケーションを作成する場合とは異なり，コンポーネントの作成でビジュアルなツールを使用することはできませんが，コードエディタ，統合デバッガ，オブジェクトブラウザなどの Delphi 開発環境のプログラミング機能はすべて使用できます。


参照
参照14055

コンポーネント開発にはオブジェクトの深い知識を要する

コンポーネント開発にはより多くの規則が伴う


コンポーネント開発にはオブジェクトの深い知識を要する
コンポーネント開発にはオブジェクトの深い知識を要する14056

参照

プログラミングがビジュアルではないということ以外に，コンポーネントの開発作業がコンポーネントの使用と最も大きく異なるのは次の点です。つまり，新しいコンポーネントを作成する際には，既存のオブジェクト型に新しいプロパティとメソッドを追加して，新しいオブジェクト型を派生させる必要があるという点です。これに対して，既存のコンポーネントを使用するユーザーは，アプリケーション設計時にコンポーネントのプロパティを変更したり，イベントに対する応答を指定することで，コンポーネントの動作をカスタマイズします。

新しいオブジェクト型を派生させる場合，開発者は上位オブジェクトのパーツにアクセスできますが，オブジェクトを使用するエンドユーザーはそれらのパーツを使用できません。コンポーネントの開発者だけが使用するこのようなパーツは，オブジェクトの「プロテクトインターフェース」と呼ばれます。また，下位オブジェクトはたいてい上位オブジェクトを呼び出す必要があります。コンポーネントを作成する場合は，オブジェクト指向プログラミングに習熟する必要があります。


参照
参照14057

コンポーネント開発はビジュアルではない

コンポーネント開発にはより多くの規則が伴う


コンポーネント開発にはより多くの規則が伴う
コンポーネント開発にはより多くの規則が伴う14058

参照

コンポーネントの開発は，アプリケーションのビジュアルな作成に比べると従来のプログラミング作業により近く，既存のコンポーネントを使用する場合よりも多くの規則に従う必要があります。コンポーネントを開発する前に，Delphi で提供されている既存のコンポーネントを使用してみてください。命名規則などについて感触を得ることができ，また，ユーザーは何を期待してコンポーネントを使用するのか，ということを実際に経験できます。

コンポーネントのユーザーは，「いつでも，ほとんど何でも行える」ようなコンポーネントを期待しています。こうした期待に応えるコンポーネントを開発することは，それほど難しいことではありませんが，それにはある種の深慮と規則への準拠が必要です。


参照
参照14059

コンポーネント開発はビジュアルではない

コンポーネント開発にはオブジェクトの深い知識を要する


コンポーネントの作成 (まとめ)
コンポーネントの作成 (まとめ)14060

参照

独自のコンポーネントを作成するプロセスは以下の 5 つの段階にまとめられます。

1	新しいコンポーネント用のユニットを作成する

2	既存のコンポーネント型からコンポーネント型を派生させる

3	必要に応じて，プロパティ，メソッド，イベントを追加する

4	Delphi にコンポーネントを登録する

5	開発したコンポーネントと，そのコンポーネントのプロパティ，メソッド，イベントについてヘルプファイルを作成する

このヘルプファイルでは，以上の各段階を詳細に解説します。作成プロセスが終了したとき，完成したコンポーネントには以下の 4 つのファイルが含まれています。

1	コンパイル済みユニット (.DCU)

2	パレットビットマップ (.DCR)

3	ヘルプファイル (.HLP)

4	ヘルプキーワードファイル (.KWF)

実際に必須なのは最初のファイルだけですが，それ以外のファイルがあれば，開発したコンポーネントはさらに便利で使いやすいものになります。


参照
参照14061

コンポーネント開発は何が違うのか

コンポーネントとは何か


コンポーネント開発者のための OOP
コンポーネント開発者のための OOP14062

参照

オブジェクトはデータとコードから構成されます。コンポーネント開発者だけでなく，普通の Delphi アプリケーションの開発者もオブジェクトを常に扱っています

ただ，新しいコンポーネントを作成する場合には，エンドユーザーにはまったく必要のない方法でオブジェクトを取り扱う場面が出てきます。コンポーネントの作成を開始する前に，オブジェクト指向プログラミング (OOP) 一般について，次の項目を理解しておく必要があります。

新しいオブジェクトの作り方

上位オブジェクトと下位オブジェクト

アクセスの制御

メソッドのディスパッチ

オブジェクトとポインタ

このヘルプファイルは，『ユーザーズガイド』の第 6 章でで説明している知識を前提に記述されています。また，以前にボーランドの Pascal 言語製品でオブジェクトを使用した経験がある場合には，Pascal オブジェクトの変更についての説明をお読みください。


参照
参照14063

コンポーネント作成の概要

プロパティの作成

イベントの作成

メソッドの作成

コンポーネントにおけるグラフィックの使い方

メッセージの処理

コンポーネントの登録


新しいオブジェクトの作り方
新しいオブジェクトの作り方14064

参照

コンポーネントユーザーはオブジェクトのインスタンスを操作します。それに対して，コンポーネントの開発者は新しい種類のオブジェクトを作成します。ここに，コンポーネントユーザーとコンポーネント開発者との第一の相違点があります。インスタンスと型の区別は，オブジェクト指向プログラミングにおける基本的な要素です。自分でコンポーネントを作成する場合は，この区別についてよく理解しておくことが重要です。

型とインスタンスの概念は，オブジェクトに特有のものではありません。プログラマは常に型とインスタンスを使用しています。ただ，こうした用語を一般には使用しないだけです。Object Pascal のプログラムでは，型の概念をよく使用します。プログラマは日常的に，型を基に変数を作成しています。そして，その変数こそが，その型のインスタンスです。

一般にオブジェクト型は，Integer などの単純な型よりも複雑ですが，同じ型に属する各インスタンスにさまざまな値を指定することにより，きわめて多様な処理を実現できます。

たとえば，よくあることですが，一方は OK というラベルを持ち，他方は Cancel というラベルを持つ 2 つのボタンをあるフォーム上に作成するとします。この場合，2 つのボタンは両方とも Tbutton 型のインスタンスになります。しかし，Text, Default, Cancel の各プロパティに異なる値を指定し，さらに OnClick イベントに異なるハンドラを設定することにより，この 2 つのインスタンスにまったく異なった機能を与えます。


参照
参照14065

新しい型の派生

新しいコンポーネント型の宣言


新しい型の派生
新しい型の派生14066

参照

オブジェクト型を定義する目的は，実用的なインスタンスを作成するための土台を用意することです。つまり目標は，開発者や開発者以外のユーザーが，さまざまな状況下でさまざなアプリケーションに (または少なくとも同一のアプリケーションの各部分に) 使用できるオブジェクトの作成です。

新しい型を派生させるのは，次の 2 つの理由があります。

型のデフォルトを変更する

型に新しい能力を追加する

どちらの場合も，目標は再利用可能なオブジェクトの作成です。長期的な計画を立て，将来の再利用を考慮してオブジェクトを設計すれば，後々，多くの作業を省けます。開発するオブジェクト型には，有用なデフォルト値を与えて，同時にカスタマイズも可能にしておきます。


参照
参照14067

新しいコンポーネント型の宣言


型のデフォルトを変更する
型のデフォルトを変更する14068

すべてのプログラミング作業では，必要以上の反復作業はできるだけ避けたいものです。たとえば，同じコードを何度も繰り返し記述していることに気付いた場合には，そのコードをサブルーチンや関数として独立させるか，またはさらにルーチンをライブラリ化して多くのプログラムで使用できるようにします。

コンポーネントについても同じ考え方がそのまま適用できます。同じプロパティを繰り返し変更したり，同じメソッドを繰り返し呼び出しているような場合には，多くの場合，それをデフォルトで行う新しいコンポーネント型を作成すべきです。

たとえば，アプリケーションを作成するたびに，特定の関数を実行するためのダイアログボックスフォームを追加していることがあります。同じダイアログボックスを毎回作成するのはそれほど困難なことではありませんが，それは不必要な作業です。なぜなら，最初に1度だけダイアログボックスを設計してプロパティを設定し，それを再利用可能なコンポーネントとしてコンポーネントパレットにインストールすることができるからです。これによって，反復作業を減少できるだけでなく，標準化が推進され，ダイアログボックスの再作成においてエラーが発生する可能性が減少します。


型に新しい能力を追加する
型に新しい能力を追加する14069

新しい種類のコンポーネントを作成するもう 1 つの理由は，既存のコンポーネントが備えていない能力の追加です。この場合には，特化したリストボックスを作成する場合のように既存のコンポーネント型から派生させるか，Tcomponent や Tcontrol などの抽象基本型から派生させるか，のどちらかの方法を採ります。

一般的な原則は，新しいコンポーネントは，必要な機能に最も近い機能のサブセットを備えた型から派生させる，ということです。オブジェクトに対して機能を追加することはできますが，オブジェクトから機能を取り去ることはできません。したがって，既存のコンポーネント型に，開発するコンポーネントに含めたくないプロパティが入っている場合には，そのコンポーネントの上位オブジェクトから派生させる必要があります。

たとえば，リストボックスにある種の機能を追加する場合には，TListBox から新しいコンポーネントを派生させることができます。ただし，ある新しい機能を追加するだけでなく，標準リストボックスのある種の既存の機能は除去したいという場合には，TListBox の上位オブジェクトである TCustomListBox から新しいリストボックスを派生させます。この場合，リストボックスの機能のうち必要なものは再作成します。そして，新しい機能を追加します。


新しいコンポーネント型の宣言
新しいコンポーネント型の宣言14070

参照	例

新しい型のコンポーネントを派生させる場合には，まず新しい型の派生元を決める必要があります。既存の型に新しい機能を追加する場合，基本的には，開発するコンポーネントに含めたい機能がなるべく多く入っていて，しかも，含めたくない機能はまったく入っていないような型から派生させます。

Delphi では，数多くの抽象コンポーネント型が用意されています。コンポーネント開発者は抽象コンポーネント型を利用して新しいコンポーネント型を派生させます。コンポーネントの作成方法の表に，コンポーネント開発で派生元として使用できるさまざまな型を示します。

新しいコンポーネント型を宣言するには，そのコンポーネントのユニットに型宣言を記述します。


例
例14071

簡単なグラフィックコンポーネントの宣言を次に示します。

type
  TSampleShape = class(TGraphicControl)
  end;

最終的には，このコンポーネント宣言の end の前にプロパティ，フィールド，メソッドの各宣言が記述されることになります。しかし，そのような記述は必須ではありません。当初は空のままにしておき，後で追加できます。


参照
参照14072

新しい型の派生


上位オブジェクトと下位オブジェクト
上位オブジェクトと下位オブジェクト14073

参照

コンポーネントユーザーの立場からは，オブジェクトとは，プロパティ，メソッド，イベントで構成されている自立的な実体です。コンポーネントのユーザーは，そのコンポーネントがどのオブジェクトを継承しているかといった情報を意識する必要はないので，そうした問題にわずらわされることはありません。これに対して，コンポーネント開発者にとってはこうした問題は非常に重要です。

コンポーネントユーザーから見ると，すべてのコンポーネントはプロパティ Top および Left を持っています。このプロパティは，そのコンポーネントのオーナーフォームでの位置を示します。この 2 つのプロパティは，共通の上位コンポーネントである Tcomponent から継承されているのですが，コンポーネントユーザーはそのようなことを意識する必要はありません。しかし，コンポーネントを作成する場合には，コンポーネントにどのオブジェクトを継承させるか決めなければなりません。また，継承した機能を再作成することなく利用できるように，開発するコンポーネントが継承する機能について把握しておく必要があります。

オブジェクト型の定義からわかるように，あるオブジェクト型を定義する場合は，それを既存のオブジェクト型から派生させます。この場合，新しいオブジェクト型の派生元となった型は，その新しい型の直接上位オブジェクトと呼ばれます。直接上位オブジェクト (親) の直接上位オブジェクト (親の親) は，その新しい型の上位オブジェクト (祖先) と呼ばれます。さらに上位のオブジェクトも同様に，その新しい型の上位オブジェクト (子孫) になります。逆に，その新しい型は，上位オブジェクトからみたとき下位オブジェクトと呼ばれます。

新しいオブジェクトを定義する場合，上位オブジェクト型を指定しなかったときは，デフォルトの上位オブジェクト型である Tobject から派生します。標準の Tobject 型は Object Pascal のすべてのオブジェクトの上位オブジェクトです。


参照
参照14074

オブジェクト階層


オブジェクト階層
オブジェクト階層14075

1 つのアプリケーションでは，すべての上位下位の関係が 1 つのオブジェクト階層を構成します。Delphi のオブジェクトブラウザでは，オブジェクト階層をアウトラインフォームで表示できます。

オブジェクト階層の特徴として，より下位のオブジェクトほど多くの機能が入っています。つまり，あるオブジェクトはその上位オブジェクトの機能をすべて継承したうえで，新しいデータやメソッドを追加したり，既存のメソッドを再定義します。

ただし，あるオブジェクトが継承した機能は除去できません。たとえば，あるオブジェクトが持つ特定のプロパティは，そのオブジェクトのすべての下位オブジェクトにも必ず継承されます。これは，直接的な下位オブジェクトにも間接的な下位オブジェクトにも当てはまります。

派生元のオブジェクトを選定する際の規則は，通常，単に新しいオブジェクトに含めたいものがなるべく多く入っており，ただし，含めたくないものはまったく入っていないようなオブジェクトを選び出すことです。オブジェクトに機能を追加することはいつでもできますが，オブジェクトから機能を取り去ることはできないからです。


アクセスの制御
アクセスの制御14076

Object Pascalでは，オブジェクトの各部分に対して4つのレベルのアクセス制御ができます。アクセス制御により，どのようなコードがオブジェクトのどの部分にアクセスできるかを指定します。アクセスのレベルを指定することで，開発するコンポーネントのインターフェースを定義します。インターフェースを慎重に設計すれば，有用で再利用性の高いコンポーネントを開発できます。

特に指定しない限り，オブジェクトのフィールド，メソッド，プロパティは，パブリッシュ (published) に設定されます。つまり，オブジェクト全体にアクセスするすべてのコードは，そのオブジェクトの各部分にもアクセスできます。コンパイラはオブジェクトの各項目について実行時型情報を生成します。

表2.1にアクセスのレベルを示します。最もアクセスが制限されるレベルから，最もアクセスしやすいレベルの順に示します。

保護レベル	使用目的

private	実装の詳細の隠蔽

protected	開発用インターフェースの定義

public	実行時インターフェースの定義

published	設計時インターフェースの定義

アクセス制御はユニット単位で機能します。つまり，オブジェクトの特定の部分が，あるユニットのある部分からアクセス可能 (またはアクセス不可) である場合には，その部分は同じユニットのほかのすべての場所からアクセス可能 (またはアクセス不可) です。オブジェクトやオブジェクトの部分のアクセス制御は，そのオブジェクトを含むユニットで指定します。


実装の詳細の隠蔽
実装の詳細の隠蔽14077

参照	例

オブジェクトのある部分を private として宣言すると，その部分は，そのオブジェクト型を宣言したユニット以外のコードからは見えなくなります。その宣言を行ったユニット内のコードからは，public の部分と同じようにアクセスできます。

オブジェクト型の private 部は，そのオブジェクトのユーザーから実装の詳細を隠蔽するときに有用です。オブジェクトのユーザーは private 部にアクセスできないので，オブジェクトのその部分の内部的な実装方法を変更しても，ユーザーのコードには影響を与えません。

メモ:	隠蔽に関するこの仕様は，C++ などのオブジェクト指向言語とは異なっています。こうした言語では，クラスの「フレンド」属性を持つクラスや関数のみがそのクラスの private 部にアクセスできます。その意味では，あるユニットのすべてのオブジェクトやコードは，自動的にそのユニットで宣言されたすべてのオブジェクトのフレンドになる，ということもできます。


例
例14078

次の例では，あるフィールドをprivateとして宣言すると，ユーザーによるアクセスがどのように禁止されるか，という点について示しています。コードリストの2つのフォームユニットには，それぞれOnCreateイベント用のハンドラがあります。各ハンドラはフォーム内のプライベートなフィールドに値を代入しますが，コンパイラは，そのプライベートフィールドを宣言したフォーム内での代入しか許可しません。

unit HideInfo;
interface

uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs;

type
  TSecretForm = class(TForm)	{ 新しいフォームの宣言 }

    procedure FormCreate(Sender: TObject);

  private	{ private 部の宣言 }
    FSecretCode: Integer;	{ プライベートなフィールドの宣言 }
  end;

var
  SecretForm: TSecretForm;

implementation

procedure TSecretForm.FormCreate(Sender: TObject);

begin
  FSecretCode := 42;	{ 正しくコンパイルできる }
end;
end.	{ ユニットの終わり }

unit TestHide;	{ メインのフォームファイル }

interface
uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs,
  HideInfo;	{ TSecretForm のあるユニット }

type
  TTestForm = class(TForm)

    procedure FormCreate(Sender: TObject);

  end;

var
  TestForm: TTestForm;

implementation

procedure TTestForm.FormCreate(Sender: TObject);

begin
  SecretForm.FSecretCode := 13;	{ コンパイラは「Field identifier expected」というエラーを表示する }

end;

end.	{ ユニットの終わり }

HideInfo ユニットを使用するプログラムは TSecretForm 型のオブジェクトは使用できますが，そのオブジェクトの FSecretCode フィールドにはアクセスできません。


参照
参照14079

開発用インターフェースの定義

実行時インターフェースの定義

設計時インターフェースの定義


開発用インターフェースの定義
開発用インターフェースの定義14080

参照

オブジェクトで protected として宣言した部分は，private として宣言した部分と同様に，そのオブジェクト型を宣言したユニットの外部のコードからは見えません。ただし protected 部は，そのオブジェクト型から派生したオブジェクト型のユニットからアクセスできるという点で，private 部とは異なっています。

protected 宣言は，オブジェクトの開発者のためのインターフェースを定義することに使用できます。protected 部は，オブジェクトのユーザーはアクセスできませんが，コンポーネントなどの開発者はアクセスできます。この方法によって，エンドユーザーに詳細を公開することなく，コンポーネント開発者がオブジェクトの動作を変更するためのインターフェースを用意できます。


参照
参照14081

実装の詳細の隠蔽

実行時インターフェースの定義

設計時インターフェースの定義


実行時インターフェースの定義
実行時インターフェースの定義14082

参照	例

オブジェクトで public として宣言した部分は，そのオブジェクト全体にアクセスするすべてのコードから見えるようになります。つまり，public部には特に制約がありません。なお，アクセス制御 (private, protected, public) を指定しなかったフィールド，メソッド，プロパティは，published になります。

オブジェクトの public 部は，実行時にすべてのコードで使用できます。したがって，オブジェクトはその public 部によって実行時インターフェースが定義されることになります。実行時の情報に依存する読み出し専用のプロパティなど，設計時には無効な項目は，実行時インターフェースに宣言します。また，開発するコンポーネントのユーザーによって呼び出されるメソッドも，実行時インターフェースに宣言します。

読み出し専用プロパティは設計時には機能しないので，public 宣言部分に記述する必要があります。


例
例14083

次の例は，コンポーネントの実行時インターフェースの部分に宣言された 2 つの読み出し専用プロパティを示します。

type
  TSampleComponent = class(TComponent)
  private
    FTempCelsius: Integer;	{ 実装の詳細を private 部に記述 }

    function GetTempFahrenheit: Integer;

  public
    property TempCelsius: Integer read FTempCelsius;	{ プロパティを public 部に記述 }

    property TempFahrenheit: Integer read GetTempFahrenheit;
  end;

...

function TSampleComponent.GetTempFahrenheit: Integer;

begin

  Result := FTempCelsius * 9 div 5 + 32;

end;

ユーザーはこの 2 つのプロパティの値を変更できないので，このプロパティはオブジェクトインスペクタには表示されません。つまり，このプロパティは設計時インターフェースには含まれません。


参照
参照14084

実装の詳細の隠蔽

開発用インターフェースの定義

設計時インターフェースの定義


設計時インターフェースの定義
設計時インターフェースの定義14085

参照	例

オブジェクトで published として宣言した部分は，パブリックになり，さらにその部分についての実行時型情報が生成されます。この実行時型情報により，オブジェクトインスペクタでプロパティやイベントにアクセスできるようになります。

published 部だけがオブジェクトインスペクタに表示されます。つまり，オブジェクトのpublished 部によって，そのオブジェクトの設計時インターフェースが定義されることになります。オブジェクトの各側面のうち，ユーザーが設計時にカスタマイズする可能性のある部分はすべて設計時インターフェースに含めます。これに対して，実行時環境の特定の情報に依存するすべてのプロパティは，設計時インターフェースには含めません。

メモ:	読み出し専用プロパティはユーザーが変更できないので，設計時インターフェースに含めません。読み出し専用プロパティは public と宣言します。


例
例14086

次の例は，パブリッシュに設定されたプロパティを示します。このプロパティはパブリッシュに設定されているため，設計時にオブジェクトインスペクタに表示されます。

type
  TSampleComponent = class(TComponent)
  private
    FTemperature: Integer;	{ 実現の詳細は private 部に記述 }

  published
    property Temperature: Integer read FTemperature write FTemperature;	{ 書き込み可能！ }
  end;

この例のプロパティ Temperature は，コンポーネントユーザーが設計時にその値を変更できます。


参照
参照14087

実装の詳細の隠蔽

開発用インターフェースの定義

実行時インターフェースの定義


メソッドのディスパッチ
メソッドのディスパッチ14088

メソッドが呼び出された場合，アプリケーションが実際に実行されるコードを決定して呼び出すことをディスパッチと呼びます。オブジェクトのメソッドを呼び出すコードは，手続きや関数を呼び出すコードのように記述します。しかし，オブジェクトにはメソッドをディスパッチするための3通りの方法があります。

3 種類のメソッドディスパッチは次のとおりです。

静的

仮想

動的

仮想メソッドと動的メソッドは同じように機能しますが，実際の実現方法は異なります。また，この 2 種類のメソッドと静的メソッドはまったく異なっています。コンポーネントの


静的メソッド
静的メソッド14089

参照	例

特に指定しなければ，すべてのオブジェクトメソッドは静的メソッドになります。静的メソッドは，普通の手続き呼び出しや関数呼び出しと同じように動作します。コンパイラはメソッドの正確なアドレスを決定し，コンパイル時にそのメソッドをリンクします。

静的メソッドの第一の利点は，ディスパッチが高速であることです。コンパイラは静的メソッドの正確なアドレスを決定して，メソッドを直接リンクできます。これに対して仮想メソッドと動的メソッドでは，実行時に間接的な方法でメソッドのアドレスを探す必要があるため多少遅くなります。

静的メソッドのもう1つの特徴として，ほかの型によって継承された場合にまったく変化しないという点があります。つまり，ある静的メソッドを持つオブジェクト型から新しいオブジェクト型を派生させた場合，両方のオブジェクトは正確に同じアドレスの同じメソッドを共有します。このため静的メソッドは，オブジェクトの実際の型にかかわりなく常に同じ処理を行います。

静的メソッドはオーバーライドできません。下位オブジェクト内で上位オブジェクトの静的メソッドと同じ名前のメソッドを宣言した場合には，上位オブジェクト


例
例14090

次に示すコードでは，第 1 のコンポーネントが 2 つの静的メソッドを宣言し，さらに，第 2 のコンポーネントが 2 つの静的メソッドを同じ名前で宣言しています。その結果，第 2 のコンポーネントの 2 つのメソッドが，第 1 のコンポーネントのメソッドを置換します。

type
  TFirstComponent = class(TComponent)
    procedure Move;
    procedure Flash;
  end;

  TSecondComponent = class(TFirstComponent)

    procedure Move;	{ 同じ宣言だが継承メソッドではない }
    function Flash(HowOften: Integer): Integer;	{ これも異なる }


参照
参照14091

仮想メソッド


仮想メソッド
仮想メソッド14092

参照

仮想メソッドを呼び出す構文は，ほかのメソッドを呼び出す場合と同じですが，ディスパッチのメカニズムはより柔軟で複雑です。仮想メソッドを使用すれば，プログラマが実際のオブジェクト型を意識しなくても，その型に応じたメソッドが呼び出されます。仮想メソッドのアドレスは，コンパイル時ではなく実行時に決定されます。

仮想メソッドを宣言するには，メソッド宣言の後に virtual 指令を追加します。

メソッド宣言に virtual 指令が記述されると，そのオブジェクトの仮想メソッドテーブル (VMT) にエントリが作成されます。VMT には，そのオブジェクト型のすべての仮想メソッドのアドレスが格納されます。

既存のオブジェクト型から新しいオブジェクトを派生させると，その新しい型にはそれ自身の VMT が与えられます。この VMT には，上位オブジェクト型から継承したすべてのエントリに加えて，新しいオブジェクトで新たに宣言されたすべての仮想メソッドのエントリが格納されます。また，下位オブジェクトは継承された仮想メソッドをオーバーライドできます。


参照
参照14093

動的メソッド

静的メソッド

メソッドのオーバーライド


メソッドのオーバーライド
メソッドのオーバーライド14094

参照	例

メソッドのオーバーライドは，メソッドの置換ではありません。メソッドのオーバーライドとは，そのメソッドを拡張したり，詳細化することを意味します。つまり，下位オブジェクト型は，その上位オブジェクトで宣言された任意のメソッドを再宣言して再実現できます。なお，静的メソッドはオーバーライドできません。なぜなら，継承した静的メソッドと同じ名前の静的メソッドを宣言すると，継承したメソッドが新しいメソッドで置換されるからです。

下位オブジェクト型でメソッドをオーバーライドするには，メソッド宣言の末尾に override 指令を追加します。

次の場合に override を使用すると，コンパイル時にエラーが発生します。

上位オブジェクトにそのメソッドが存在しない場合

上位オブジェクトのその名前のメソッドが静的メソッドである場合

パラメータの名前，型，手続きと関数の区別などに関して，宣言に不一


例
例14095

次の例では，2 つの簡単なコンポーネントの宣言を示します。第 1 のコンポーネントは，それぞれの種類のディスパッチを行う 3 つのメソッドを宣言しています。第 1 のコンポーネントから派生した第 2 のコンポーネントは，静的メソッドを置換し，仮想メソッドをオーバーライドします。

type
  TFirstComponent = class(TCustomControl)
    procedure Move;	{ 静的メソッド }

    procedure Flash; virtual;	{ 仮想メソッド }

    procedure Beep; dynamic;	{ 動的仮想メソッド }
  end;

  TSecondComponent = class(TFirstComponent)
    procedure Move;	{ 新しいメソッド }

    procedure Flash; override;	{ 継承されたメソッドをオーバーライド }

    procedure Beep; override;	{ 継承されたメソッドをオーバーライド }


参照
参照14096

仮想メソッド

動的メソッド


動的メソッド
動的メソッド14097

参照	例

動的メソッドは仮想メソッドと似ていますが，やや異なったディスパッチメカニズムを備えています。動的メソッドは，オブジェクトの仮想メソッドテーブルにエントリを作成しないため，オブジェクトが消費するメモリ量は減少しますが，ディスパッチにかかる時間は普通の仮想メソッドよりも少し増加します。通常，呼び出しの実行速度が重要なメソッドや，繰り返し呼び出すメソッドの場合には，動的メソッドではなく仮想メソッドを使用します。

動的メソッドを宣言するには，メソッド宣言の後に dynamic 指令を追加します。

dynamic 指令は，オブジェクトの仮想メソッドテーブルにエントリを作成するかわりに，そのメソッドに番号を割り当て，コードのアドレスを格納します。仮想メソッドテーブルには，そのオブジェクトで継承または追加されたすべての仮想メソッドのアドレスが入っていますが，動的メソッドリストには，特定のオブジェクト型によって追加またはオーバーライドされたメソッドのエントリだけが入っています。継承された動的メソッドがディスパッチされる場合は，継承とは逆順に上位オブジェクトをたどって，動的メソッドリストを検索していきます。

Delphi のアプリケーションでは，Windows メッセージなどのメッセージの処理でさまざまな動的メソッドが使用されます。メッセージ処理では，こうしたメッセージ処理メソッドについて説明します。メッセージハンドラのディスパッチメカニズムは


参照
参照14098

仮想メソッド

メソッドのオーバーライド


オブジェクトとポインタ
オブジェクトとポインタ14099

Object Pascal オブジェクトはすべて実際にはポインタであり，コンポーネントも同様です。これは，既存のコンポーネントを使用するだけならば考慮する必要のない点ですが，コンポーネントを開発する場合には必要な知識です。もっとも， 開発者にかわってコンパイラが自動的にオブジェクトポインタを逆参照するので，ほとんどの場合オブジェクトがポインタであることを考慮する必要はありません。

しかし，オブジェクトをパラメータとして渡すときは，この点が重要になります。

一般に，オブジェクトは参照渡しではなく値渡しで渡します。つまり，オブジェクトをルーチンのパラメータとして宣言する場合は，それを var パラメータにすべきではありません。なぜなら，オブジェクトはもともとポインタ，つまり参照であるため，あるオブジェクトを var パラメータとして渡すことは，参照の参照を渡すことになるからです。


コンポーネント作成の概要
コンポーネント作成の概要14100

参照

このヘルプファイルでは，Delphi アプリケーション用コンポーネントのアーキテクチャ，設計の原則，開発プロセスについての概要を示します。

この章では以下のことについて説明します。

ビジュアルコンポーネントライブラリ

コンポーネントとオブジェクト

コンポーネントの作成方法

コンポーネントのさまざまな側面

新しいコンポーネントの作成

インストールされていないコンポーネントのテスト

このマニュアルは，Delphi とその標準コンポーネントについてのある程度の知識を前提として記述されています。


参照
参照14101

コンポーネント開発者のための OOP

プロパティの作成

イベントの作成

メソッドの作成

コンポーネントにおけるグラフィックの使い方

メッセージの処理

コンポーネントの登録


ビジュアルコンポーネントライブラリ
ビジュアルコンポーネントライブラリ14102

参照

Delphi のコンポーネントは，ビジュアルコンポーネントライブラリ (VCL) というオブジェクト階層を構成しています。以下の図に，VCL を構成するオブジェクトの関係を示します。

重要な特徴として，VCL では Tcomponent 型がすべてのコンポーネントに共通の上位オブジェクトになっています。Tcomponent は，コンポーネントが Delphi で動作するために最小限必要なプロパティとイベントを定義します。そして，このライブラリのさまざまな下位オブジェクトが，それ以外のより特化した能力を実現します。

コンポーネントを作成する場合は，このオブジェクト階層内の既存のオブジェクト型の1つから新しいオブジェクトを派生させます。


参照
参照14103

コンポーネントとオブジェクト

コンポーネントの作成方法

コンポーネントのさまざまな側面

新しいコンポーネントの作成

インストールされていないコンポーネントのテスト


コンポーネントとオブジェクト
コンポーネントとオブジェクト14104

参照

コンポーネントはオブジェクトであり，コンポーネント開発者はコンポーネントユーザーとは異なるレベルでオブジェクトを使用します。新しいコンポーネントを作成するには，オブジェクトの新しい型を派生させる必要があります。コンポーネント開発者にとって必要なオブジェクト指向プログラミングについてはコンポーネント開発者の OOP を参照してください。

要約すると，コンポーネントの作成とコンポーネントの使用との間には，次の 2 つの主要な相違点があります。

コンポーネント開発者は，エンドユーザーがアクセスできないオブジェクトの各部分にもアクセスする

コンポーネント開発者は，コンポーネントに (プロパティなどの) 新しい部分を追加する

このため，コンポーネント開発者はコンポーネントについてより詳しく理解しておく必要があります。また，開発したコンポーネントをエンドユーザーがどのように使用するのかということについても考慮しなければなりません。


参照
参照14105

コンポーネントの作成方法

コンポーネントのさまざまな側面

新しいコンポーネントの作成

インストールされていないコンポーネントのテスト


コンポーネントの作成方法
コンポーネントの作成方法14106

参照

開発者が設計時に扱うプログラム要素のほとんどはコンポーネントです。新しいコンポーネントを作成するには，既存のコンポーネントオブジェクト型から新しい型を派生させます。新しいコンポーネントは任意のコンポーネントから派生できますが，一般に以下のような方法で作成します。

既存のコントロールの変更

独自のコントロールの作成

グラフィックコントロールの作成

Windows コントロールのサブクラス化

非ビジュアルコンポーネントの作成

以下の表に，コンポーネントの各作成方法で，派生元として使用するオブジェクト型を要約します。

種類	派生元となるオブジェクト型

既存のコンポーネントの変更	Tbutton や TListBox などの既存のコンポーネントか，TCustomListBox などの抽象コンポーネント型

独自のコントロールの作成	TCustomControl

グラフィックコントロールの作成	TGraphicControl

Windows コントロールの使用	TWinControl

非ビジュアルコンポーネントの作成	TComponent

また，コンポーネントではないオブジェクトを派生させることもできますが，そうしたオブジェクトはフォームの中では操作できません。Delphi には，TINIFile や Tfont など，その種のオブジェクトも多数あります。


参照
参照14107

ビジュアルコンポーネントライブラリ

コンポーネントとオブジェクト

コンポーネントのさまざまな側面

新しいコンポーネントの作成

インストールされていないコンポーネントのテスト


既存のコントロールの変更
既存のコントロールの変更14108

参照

コンポーネントを作成する最も簡単な方法は，既存のコンポーネントを元にしてカスタマイズする方法です。Delphi が提供するどのコンポーネントからでも，新しいコンポーネントを派生させることができます。たとえば，ある標準コントロールのデフォルトのプロパティ値を変更して，新しいコンポーネントを作成できます。

リストボックスやグリッドのようなコントロールには，共通の基本的な機能を持つ多くのバリエーションがあります。これに対応して，Delphi には抽象コントロール型があります。抽象コントロール型は，新しくカスタマイズしたコンポーネントを派生させる元として使用できます。なお，Delphi の抽象型の名前は，TCustomGrid などのように「custom」という文字列を含みます。

たとえば，標準の TListBox 型のプロパティからいくつかを除いて，特別なリストボックスを作成するとします。上位オブジェクト型からプロパティを除去することはできないので，TListBox より上位の階層のオブジェクトからそのコンポーネントを派生します。この場合，一般的な抽象コントロール型まで戻ってしまうと，リストボックスの機能を再びすべて作成しなければなりません。そのため，ビジュアルコンポーネントライブラリ (VCL) には，TCustomListBox が提供されています。この TCustomListBox には，リストボックスに必要なすべてのプロパティがあります。ただし，そのすべてがパブリッシュに設定されているわけではありません。

TCustomListBox などのような抽象型からコンポーネントを派生させる場合には，開発するコンポーネントで使用するプロパティをパブリッシュに設定し，そのほかのプロパティはプロテクト設定のまま残します。


参照
参照14109

非ビジュアルコンポーネントの作成

独自のコントロールの作成

グラフィックコントロールの作成

Windows コントロールのサブクラス化


独自のコントロールの作成
独自のコントロールの作成14110

参照

通常，標準コントロールは実行時にビジュアルに表示され，ユーザーの操作対象となります。すべての標準コントロールは，TCustomControl オブジェクト型を継承しています。独自に，つまり既存のコントロールとは無関係にコントロールを作成する場合には，派生元のコントロールとして TCustomControl を使用します。

標準コントロールの大きな特徴は，ウィンドウハンドルを持つ点です。ウィンドウハンドルはプロパティ Handle に保持されます。ウィンドウハンドルを持つということは，Windows がそのコントロールを「認知している」ことを意味し，それにより以下の効果があります。

そのコントロールは，入力フォーカスを受け取ることができる

そのハンドルを Windows API 関数に渡すことができる (Windows は，ウィンドウを識別するためにハンドルを必要とする)

開発するコントロールが入力フォーカスを受け取る必要がない場合は，そのコントロールをグラフィックコントロールにすればシステムリソースを節約できます。

押しボタン，リストボックス，編集ボックスなどのコンポーネントは，標準ウィンドウコントロールです。このようなコンポーネントは，ただ 1 つの例外を除いて，すべて TWinControl を継承しています。例外は Tlabel です。ラベルコントロールが入力フォーカスを受け取る必要はないからです。


参照
参照14111

非ビジュアルコンポーネントの作成

既存のコントロールの変更

グラフィックコントロールの作成

Windows コントロールのサブクラス化


グラフィックコントロールの作成
グラフィックコントロールの作成14112

参照

グラフィックコントロールは標準コントロールによく似ていますが，Windows コントロールに伴うオーバーヘッドがありません。Windows はグラフィックコントロールを認識しません。グラフィックコントロールはウィンドウハンドルを持たないので，システムリソースを消費しません。そのかわり，グラフィックコントロールは入力フォーカスを受け取れません。

Delphi では，グラフィックコントロールの作成のために TGraphicControl 型を用意しています。TGraphicControl は，Tcontrol から派生した抽象型です。作成するコントロールを Tcontrol から直接派生させることもできますが，TGraphicControl から派生させる方がはるかに簡単です。なぜなら，TGraphicControl ではペイント用のキャンバスが用意され，また WM_PAINT メッセージも処理されるからです。開発者に必要な作業は，Paint メソッドをオーバーライドすることだけです。


参照
参照14113

非ビジュアルコンポーネントの作成

独自のコントロールの作成

既存のコントロールの変更

Windows コントロールのサブクラス化


Windows コントロールのサブクラス化
Windows コントロールのサブクラス化14114

参照

Windows にはウィンドウクラスと呼ばれる概念があります。この概念は，オブジェクト指向プログラミングのオブジェクトやクラスについての考え方と似ています。ウィンドウクラスの情報は，Windows の同一の種類のウィンドウ (コントロール) の各インスタンスの間で共有されます。

従来の Windows プログラミングで新しい種類のコントロール (カスタムコントロール) を作成する場合は，新しいウィンドウクラスを定義してWindows に登録します。また，既存のクラスを元にして新しいウィンドウクラスを作成することもできます。これの方法はサブクラス化と呼ばれます。

従来の Windows プログラミングでカスタムコントロールを作成する場合，そのコントロールをダイナミックリンクライブラリ (DLL) に記述して，インターフェースを用意する必要がありました。これは，標準の Windows コントロールとほぼ同様の方法です。

既存のオブジェクト (たとえば Windows コントロール) を，ユーザープログラムから使用できるようにコンポーネントとして定義することを，オブジェクトを包み込むようにコードを記述することから「ラッピング」と呼び，そのようなコンポーネントをラッパーコンポーネント (あるいは単に「ラッパー」) と呼びます。Delphi では，既存の Windows クラスの周りにコンポーネントの「ラッパー」を作成できます。このため，Delphi アプリケーションで使用するカスタムコントロールがすでに存在している場合，そのコントロールやそこから派生したコントロールを使用して，Delphi コンポーネントを作成できます。


参照
参照14115

既存のコントロールの変更

独自のコントロールの作成

グラフィックコントロールの作成

非ビジュアルコンポーネントの作成


非ビジュアルコンポーネントの作成
非ビジュアルコンポーネントの作成14116

参照

抽象オブジェクト型である Tcomponent は，すべてのコンポーネントの基本型です。しかし，直接 Tcomponent から作成するコンポーネントは，非ビジュアルコンポーネントだけです。通常，開発する大部分のコンポーネントは，さまざまなビジュアルコントロールです。

Tcomponent は，コンポーネントがフォームデザイナ内で動作するために必要な，すべてのプロパティとメソッドを定義します。これによって，Tcomponent から派生させたすべてのコンポーネントは設計時に使用できるようになります。

非ビジュアルコンポーネントはあまり使用されません。非ビジュアルコンポーネントは多くの場合，非ビジュアルプログラム要素 (Delphi のデータベース要素など) のためのインターフェースとして，また，ダイアログボックス (ファイルダイアログボックスなど) のためのプレースホルダとして使用されます。


参照
参照14117

独自のコントロールの作成

既存のコントロールの変更

グラフィックコントロールの作成

Windows コントロールのサブクラス化


コンポーネントのさまざまな側面
コンポーネントのさまざまな側面14118

参照

コンポーネントの開発における制約はほとんどありません。しかし，ユーザーにとって使いやすく，信頼性の高いコンポーネントを開発するためには，いくつかの規則に従う必要があります。

この節では，コンポーネントを設計する際の基礎的な原則について，以下のことを説明します。

依存関係の除去

プロパティ, イベント, メソッド

グラフィックのカプセル化

登録


参照
参照14119

ビジュアルコンポーネントライブラリ

コンポーネントとオブジェクト

コンポーネントの作成方法

新しいコンポーネントの作成

インストールされていないコンポーネントのテスト


依存関係の除去
依存関係の除去14120

参照	例

Delphi のコンポーネントを作成する場合，依存関係を少なくすることが重要です。つまり，エンドユーザーがコンポーネントをアプリケーションに容易に組み込むには，一般に，コード中の任意の場所で任意のコンポーネントを使用できなければなりません。

もともとコンポーネントの性質は，さまざまな組み合わせ，順序，環境において，アプリケーションに組み入れるのに適しています。前処理を必要とせず，あらゆる状況で機能するようなコンポーネントを設計しなければなりません。


参照
参照14121

プロパティ, イベント, メソッド

グラフィックのカプセル化

登録


依存関係除去の例
依存関係除去の例14122

コンポーネントの依存関係除去の好例として，ウィンドウコントロールの Handle プロパティがあります。一般の Windows アプリケーションでは，CreateWindow という API 関数を呼び出してウィンドウかコントロールを作成する前に，そのウィンドウやコントロールにアクセスしてはなりません。これは，プログラムを作成する際に最もエラーを起こしやすい点の 1 つです。API 関数を無効なハンドルで呼び出すと，多くの問題が発生ます。

Delphi コンポーネントでは，ハンドルが必要なときは常にそのハンドルは有効です。そのため，ユーザーはウィンドウハンドルが有効かどうかを考える必要がありません。コンポーネントは，ウィンドウハンドル用のプロパティを参照すれば，そのウィンドウが作成済みであるかどうか，つまりウィンドウハンドルが有効かどうかを検査できます。ハンドルが有効でない場合はウィンドウを作成し，プロパティはハンドルを返します。こうして，ユーザーのコードが Handle プロパティをアクセスしたときは，常に有効なハンドルを得られることが保証されます。

コンポーネントでは，ウィンドウの作成などの処理が自動的に行われるので，開発者は本来の作業に専念できます。開発者がウィンドウハンドルを API 関数に渡す必要がある場合も，あらかじめ有効なハンドルがあるかどうかを確認したり，必要な場合は作成するというような作業は必要ありません。コンポーネントベースのプログラミングでは，誤った状態にならないように絶えずチェックする必要はなく，意図したとおりに処理が行われることを確信しながらプログラミングできます。

依存関係を持たないコンポーネントを作成するには，少しだけ時間がかかるかもしれませんが，そのような時間は一般的に有意義なものです。なぜなら，それによってコンポーネントユーザーが同じ作業を繰り返し行う必要がなくなるだけでなく，たくさんの警告とその説明を用意したり，ユーザーがコンポーネントに関して出会う可能性がある問題を解決したりする必要がないため，マニュアルの作成やサポートにかかる負担が減少するからです。


プロパティ, イベント, メソッド
プロパティ, イベント, メソッド14123

参照

コンポーネントユーザーが設計時にフォームで操作する目に見えるイメージであるという点を除いて，コンポーネントの重要な要素は，プロパティ，イベント，メソッドです。このマニュアルではそれぞれに独立の章が割り当てられています。このセクションでは，この 3 つの要素の概念について説明します。

プロパティ

コンポーネントユーザーは，値の設定や読み出しができるコンポーネント中の変数のようなつもりでプロパティを扱います。コンポーネント開発者はプロパティを使用することにより，実際のデータ構造を隠蔽したり，値のアクセスに伴う副作用を定義できます。

プロパティの使用によってコンポーネント開発者が得る利点は以下のとおりです。

設計時にプロパティを使用できる

これにより，コンポーネントユーザーはコードを記述せずに，プロパティの初期値を設定，変更できます。

プロパティが変更されるたびに，値や形式を検査できる

ユーザーの入力を検証することで，無効な値によって引き起こされるエラーを防止できます。

必要なときにコンポーネントが適切な値を構築できる

よくあるエラーは，初期値が代入されていない変数を参照することです。値をプロパティにすれば，プロパティから読み出された値が常に有効であることを保証できます。

プロパティの作成では，コンポーネントにプロパティを追加する方法について説明します。

イベント

イベントは，コンポーネント開発者が指定した出来事 (マウス操作やキー操作など) と，コンポーネントユーザーが記述したコード (イベントハンドラ) との間の接点です。本質的には，イベントはコンポーネント開発者によって提供されるフックです。コンポーネントユーザーはイベントを利用して，特定の出来事が発生した場合にどのコードを実行すべきかを指定します。

したがって，コンポーネントユーザーをコンポーネント開発者から区別するのはイベントです。従来の Windows アプリケーションでサブクラス化が使用される理由の多くは，ユーザーが特定の Windows メッセージなどに対して違った応答を指定するためです。これに対して Delphi では，コンポーネントユーザーは定義済みのイベントに対するハンドラを指定するだけで同じ結果を得られます。このため，サブクラス化によって独自のコンポーネントを派生させる必要はありません。

イベントの作成では，標準の Windows イベントや，開発者自身で定義するイベントを追加する方法について説明してあります。

メソッド

メソッドとは，コンポーネントに組み込まれた手続きや関数のことです。コンポーネントユーザーはメソッドを使用して，コンポーネントに対して特定の操作を行ったり，プロパティにはない値を取得できます。またメソッドは，1 回の呼び出しで複数の関連したプロパティを更新する場合にも有用です。

メソッドにはコードの実行が伴うので，メソッドは実行時にのみ機能します。

メソッドの作成では，コンポーネントにメソッドを追加する方法が説明してあります。


参照
参照14124

依存関係の除去

グラフィックのカプセル化

登録


グラフィックのカプセル化
グラフィックのカプセル化14125

参照

Delphi では，多様なグラフィックツールをキャンバス内にカプセル化することにより，Windows のグラフィックに関係した退屈な仕事がほとんど取り除かれます。キャンバスはウィンドウやコントロールの描画面で，ペン，ブラシ，フォントなどのほかのオブジェクトも含んでいます。キャンバスは Windows のデバイスコンテキストとよく似ていますが，Windows のデバイスコンテキストと違う点は，キャンバスではすべての記録が自動的に行われるということです。

以前に Windows グラフィックアプリケーションを開発したことがあれば，使用可能なデバイスコンテキストの数についての制限や，グラフィックオブジェクトを廃棄するにはその前にオブジェクトを当初の状態に戻しておかなければならないことなど，Windows のグラフィックデバイスインターフェース (GDI) がさまざまな規則を開発者に課すことをご存じでしょう。

Delphi でグラフィックを相手に作業する場合には，そうした規則にわずらわされることはありません。フォームやコンポーネントに描画する場合には，Canvas プロパティを使用します。ペンやブラシをカスタマイズする場合には，色やスタイルを設定します。設定が終了すると，リソースの破棄は Delphi が行います。実際には，Delphi はリソースをキャッシュに入れておくので，アプリケーションが同じ種類のリソースを頻繁に使用する場合は，作成や再作成の処理は大幅に効率化されます。

もちろん，Windows GDI にも全面的にアクセスできます。しかし，Delphi コンポーネントのキャンバスを使用する方が，コードが簡単になり実行速度も上がります。Delphi のグラフィック機能についての詳細はコンポーネント内のグラフィックの使い方で説明します。


参照
参照14126

依存関係の除去

プロパティ, イベント, メソッド

登録


登録の概要
登録14127

参照

コンポーネントが設計時に Delphi で動作するには，あらかじめそのコンポーネントを Delphi に登録する必要があります。登録とは，そのコンポーネントのコンポーネントパレット内の表示位置を Delphi に指示することです。また，Delphi がコンポーネントをフォームファイルに格納する方法もカスタマイズできます。登録についてはコンポーネントの登録で説明します。


参照
参照14128

依存関係の除去

プロパティ, イベント, メソッド

グラフィックのカプセル化


新しいコンポーネントの作成
新しいコンポーネントの作成14129

参照

新しいコンポーネントを作成する場合に必要な手順がいくつかあります。新しいコンポーネントの作成例はすべて，この手順についての知識を前提にして記述されています。

新しいコンポーネントを作成する方法には，以下の 2 つがあります。

コンポーネントを手動で作成する

コンポーネントエキスパートを使用する

いずれかの方法でコンポーネントを作成することにより，最小限の機能を持つコンポーネントが作成されます。作成されたコンポーネントは，コンポーネントパレットにインストールできます。インストール後，その新しいコンポーネントをフォームに追加して，設計時と実行時の両方についてテストすることができます。さらに，そのコンポーネントにさらに多くの機能を追加して，パレットを更新し，再びテストすることもできます。


参照
参照14130

ビジュアルコンポーネントライブラリ

コンポーネントとオブジェクト

コンポーネントの作成方法

コンポーネントのさまざまな側面

インストールされていないコンポーネントのテスト


コンポーネントを手動で作成する
コンポーネントを手動で作成する14131

参照

新しいコンポーネントを作成する最も簡単な方法は，コンポーネントエキスパートを使用することですが，同じことを手作業で行うこともできます。

コンポーネントを手作業で作成するには，次の 3 つの段階があります。

1	新しいユニットの作成

2	コンポーネントオブジェクトの派生

3	コンポーネントの登録


参照
参照14132

コンポーネントエキスパートの使い方


新しいユニットの作成
新しいユニットの作成14133

参照

ユニットとは，個別にコンパイルされる Object Pascal コードのモジュールのことです。Delphi では，ユニットはさまざまな目的のために使用されます。すべてのフォームは独自のユニットを持ち，ほとんどのコンポーネント (またはそのグループ) も独自のユニットを持っています。

コンポーネントの作成に当たっては，そのコンポーネント用の新しいユニットを作成するか，または既存のユニットにその新しいコンポーネントを追加します。

コンポーネント用のユニットを作成するには，［ファイル(F)｜ユニットの新規作成(U)］を選択します。

Delphi は新しいファイルを作成し，コードエディタでそのファイルを開きます。

既存のユニットにコンポーネントを追加するには，［ファイル(F)｜ファイルを開く(O)］を選択して，既存のユニット用のソースファイルを選びます。

メモ:	既存のユニットにコンポーネントを追加する場合には，ユニットにはコンポーネントコードだけが入っていることを確認してください。たとえば，フォームが入っているユニットにコンポーネントコードを追加すると，コンポーネントパレットでエラーが発生します。

コンポーネント用の新しいユニットか既存のユニットがあれば，コンポーネントオブジェクトを派生させることができます。


参照
参照14134

コンポーネントオブジェクトの派生

コンポーネントの登録


コンポーネントオブジェクトの派生
コンポーネントオブジェクトの派生14135

参照	例

すべてのコンポーネントは，TComponent，あるいは Tcontrol や TGraphicControl などの Tcomponent を特殊化した下位オブジェクトから派生したものです。また，他の既存のコンポーネント型から派生したものもあります。コンポーネントの作成方法では，さまざまな種類のコンポーネントの派生関係について説明しました。

新しいオブジェクトを派生させる方法の詳細については新しいオブジェクトの作成を参照してください。

コンポーネントオブジェクトを派生させるには，そのコンポーネントを入れるユニットのインターフェース部にオブジェクト型宣言を記述します。


例
例14136

コンポーネントの基本型である Tcomponent を直接継承した非ビジュアルコンポーネントを作成するには，コンポーネントユニットのインターフェース部に次の型宣言を記述します。

type
  TNewComponent = class(TComponent)
  end;

これで TNewComponent を登録できます。この新しいコンポーネントは，このままでは Tcomponent と同じことしか行いません。ただ，そこに新しいコンポーネントを構築するためのフレームワークが作成されたことになります。


参照
参照14137

新しいユニットの作成

コンポーネントの登録


コンポーネントの登録
コンポーネントの登録14138

参照	例

コンポーネントの登録は，Delphi のコンポーネントライブラリに追加するコンポーネントと，そのコンポーネントを表示するコンポーネントパレットのページを Delphi に知らせるだけです。登録についての詳細はコンポーネントの登録を参照してください。

コンポーネントを登録する手順は次のとおりです。

1	Register という手続きを，そのコンポーネントユニットのインターフェース部に記述します。Register はパラメータを取りません。この関数の宣言を次に示します。

procedure Register;

すでにコンポーネントが入っているユニットにコンポーネントを追加する場合には，そのユニットには手続き Register がすでに宣言されています。したがって，宣言の追加は必要ありません。

2	ユニットの実現部に手続き Register を記述して，登録するコンポーネントのそれぞれについて RegisterComponents を呼び出します。

手続き RegisterComponents は，2 つのパラメータ (コンポーネントパレットのページ名とコンポーネント型の集合) を使用します。既存の登録プロセスに新しいコンポーネントを追加する場合には，既存の文中のコンポーネントの集合に新しいコンポーネントを追加するか，RegisterComponents を呼び出す新しい文を追加します。


例
例14139

TNewComponent という名前のコンポーネントを登録して，コンポーネントパレットの Samples ページに配置するには，TNewComponent の宣言を記述したユニットに以下のように手続き Register を追加します。

procedure Register;
begin
  RegisterComponents('Samples', [TNewComponent]);
end;

コンポーネントの登録が終われば，そのコンポーネントをコンポーネントパレットにインストールできます。[ ] はメモリ参照演算子です。


参照
参照14140

レジスタ手続きの宣言

レジスタ手続きの実現

新しいユニットの作成

コンポーネントオブジェクトの派生


コンポーネントエキスパートの使い方
コンポーネントエキスパートの使い方14141

参照

コンポーネントエキスパートを使用して，新しいコンポーネントを作成できます。コンポーネントエキスパートを使うと，新しいコンポーネントの作成の初期段階を簡略化できます。この場合は，次の 3 つの項目を指定するだけで新しいコンポーネントを作成できます。

新しいコンポーネントの名前

上位型

コンポーネントパレットのページ

コンポーネントエキスパートは，コンポーネントを手作業で作成する場合と同様に，次の 3 つの作業を行います。

新しいユニットの作成

コンポーネントオブジェクトの派生

コンポーネントの登録

ただし，コンポーネントエキスパートでは，既存のユニットにコンポーネントを追加することはできません。既存のユニットにコンポーネントを追加する場合は，手作業が必要です。

コンポーネントエキスパートを開くには，［ファイル(F)｜コンポーネントの新規作成(T)］を選択します。

コンポーネントエキスパートの項目を入力して，［OK］を選択します。Delphi は型宣言と手続き Register が入った新しいユニットを作成して，すべての標準 Delphi ユニットを指定した uses 節を記述します。

ユニットにわかりやすい名前を付けて保存してください。


参照
参照14142

コンポーネントを手動で作成


インストールされていないコンポーネントのテスト
インストールされていないコンポーネントのテスト14143

参照	例

コンポーネントをコンポーネントパレットにインストールする前に，そのコンポーネントの実行時の動作をテストできます。このテストは新たに作成したコンポーネントのデバッグに役立ちます。このテクニックは，コンポーネントパレットに表示するかどうかにかかわらず，すべてのコンポーネントに対して使用できます。

基本的には，ユーザーがコンポーネントをコンポーネントパレットからフォームに配置したときに，Delphi が実行するアクションをエミュレートすることにより，インストールされていないコンポーネントをテストします。

インストールされていないコンポーネントをテストする手順は次のとおりです。

1	コンポーネントのユニットの名前を，フォームユニットの uses 節に追加します。

2	そのコンポーネントを表すフォームに，オブジェクトフィールドを追加します。

これは，コンポーネントを開発者が手作業で追加する場合と，Delphi が追加する場合との大きな相違点です。開発者は，フォームの型宣言の一番下の public 部にオブジェクトフィールドを追加します。これに対して Delphi は，型宣言の上方の Delphi 自身で管理している部分に追加します。

フォームの型宣言の Delphi が管理する部分には，決してフィールドを追加しないでください。型宣言のこの部分の項目は，フォームファイルに格納されている項目に対応しています。存在していないコンポーネントの名前がフォームに追加されると，フォームファイルが無効になってしまう恐れがあります。

3	フォームの OnCreate イベントにハンドラを結び付けます。

4	フォームの OnCreate ハンドラでコンポーネントを構築します。

コンポーネントのコンストラクタを呼び出した場合には，そのコンポーネントのオーナー (適切な時期にそのコンポーネントを廃棄する責任を持つコンポーネント) を指定するパラメータを渡す必要があります。これについては，ほとんどすべての場合に，Self をオーナーとして渡すことになります。メソッドでは，Self はそのメソッドが所属するオブジェクトへの参照を表します。フォームの OnCreate ハンドラでは，Self はフォームへの参照です。

5	Parent プロパティを指定します。

Parent プロパティの設定は，必ずコントロールを構築した直後に行います。コントロールの親は，そのコントロールをビジュアルに含んでいるようなコンポーネントです。多くの場合，これはフォーム自身になりますが，グループボックスやパネルの場合もあります。通常，Parent は Self，つまりフォームに設定します。必ず，Parent はコントロールのほかのプロパティを設定する前に設定します。

警告:	コンポーネントがコントロールではない場合（つまり，その上位オブジェクトの1つが TControl ではない場合），この手順はとばしてください。もし誤ってコンポーネントではなくフォームの Parent プロパティを Self に設定すると，Windows のクラッシュを引き起こす可能性があります。

6	必要に応じて，ほかのコンポーネントプロパティを設定します。


例
例14144

NewTest と命名されたユニットで，TNewComponent 型の新しいコンポーネントをテストすることを考えます。新しいプロジェクトを作成し，前述の 1 ～ 6 の手順にしたがって，次のようなフォームユニットを作成します。

unit Unit1;
interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, NewTest;	{ 1. NewTest を uses 節に追加 }

type
  TForm1 = class(TForm)

    procedure FormCreate(Sender: TObject);	{ 3. OnCreate にハンドラを結び付ける }

  private
    { Private 宣言 }

  public
    { Public 宣言 }

    NewComponent1: TNewComponent;	{ 2. オブジェクトフィールドを追加 }

  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin
  NewComponent1 := TNewComponent.Create(Self);	{ 4. コンポーネントを構築 }

  NewComponent1.Parent := Self;	{ 5. コンポーネントがコントロールの場合 Parent プロパティを設定 }

  NewComponent.Left := 12;	{ 6. ほかのプロパティを設定... }
  ...	{ ...必要に応じてほかのプロパティも設定 }

end;

end.


参照
参照14145

ビジュアルコンポーネントライブラリ

コンポーネントとオブジェクト

コンポーネントの作成方法

コンポーネントのさまざまな側面

新しいコンポーネントの作成


プロパティの作成
プロパティの作成14146

参照

プロパティは，コンポーネントで最も特徴的な構成要素です。コンポーネントユーザーは設計時に画面でプロパティを操作でき，その操作の結果はリアルタイムにコンポーネントに反映されます。プロパティを適切に設計すれば，ユーザーにとっては使いやすく，開発者にとっては保守しやすいコンポーネントが作成できます。

この章では，開発するコンポーネントでプロパティを有効に使用するため，以下のことを説明します。

プロパティを作成する理由

プロパティの型

継承プロパティの公開

コンポーネントプロパティの定義

配列プロパティの作成

プロパティエディタでの開発


参照
参照14147

コンポーネント作成の概要

コンポーネント開発者のための OOP

イベントの作成

メソッドの作成

コンポーネントにおけるグラフィックの使い方

メッセージの処理

コンポーネントの登録


プロパティを作成する理由
プロパティを作成する理由14148

参照

プロパティは，コンポーネント開発者とコンポーネントユーザーの双方にとって重要です。最大の利点は，プロパティは設計時にオブジェクトインスペクタに表示されるということです。これにより，パラメータなどを指定するかわりに，ユーザーが割り当てた値を読み出すだけでオブジェクトを構築できるので，プログラミングが簡単になります。

コンポーネントユーザーの立場からは，プロパティは変数のようなものです。ユーザーは，オブジェクトフィールドを操作するように，プロパティの値を設定または読み出します。ユーザーにとって，変数では可能でプロパティでは不可能なことは，プロパティを var パラメータとしては渡せないということだけです。

一方，コンポーネント開発者の立場からは，以下の理由でプロパティは単純なオブジェクトフィールドよりも大きな能力を持っています。

プロパティはユーザーが設計時に設定できる

実行時にのみ処理可能なメソッドと違って，ユーザーはプロパティによってアプリケーションを実行する前にコンポーネントをカスタマイズできます。一般に，1つのコンポーネントで多くのメソッドを定義することはありません。ほとんどの場合はプロパティとしてカプセル化できます。

プロパティはオブジェクトフィールドと違って，実装の詳細をユーザーから隠蔽できる

たとえば，データを内部で暗号化して格納し，プロパティの値を設定または読み出すときには，データは暗号化されていない状態になるようなことが考えられます。このように，プロパティの値が単純な数値であるとしても，コンポーネントはその値を得るためにデータベースを検索したり，複雑な計算を行っている場合があります。

プロパティの単純な代入でも，副作用を制御できる

オブジェクトフィールドに対する単純な代入のように見える処理でも，実際にはメソッドが呼び出されています。そのメソッドでは，ほとんどあらゆる処理が行えます。

これを示す簡単で明瞭な例は，すべてのコンポーネントが持つ Top プロパティです。Top への新しい値の代入は，単にその値を変更するだけの操作ではありません。値が変更されたことで，コンポーネントは自分自身を再配置して再描画します。また，プロパティの設定が及ぼす影響は，必ずしも1つのコンポーネントに限定されるわけではありません。あるスピードボタンコンポーネントの Down プロパティを True に設定すると，グループ内のほかのすべてのスピードボタンの Down プロパティは False になります。

プロパティの実装メソッドは仮想メソッドであり得る

コンポーネントユーザーから見て単一のプロパティでも，コンポーネントによっては異なる処理を行う場合があります。


参照
参照14149

プロパティの型

継承プロパティの公開

コンポーネントプロパティの定義

配列プロパティの作成

プロパティエディタでの開発


プロパティの型
プロパティの型14150

参照

プロパティの実装には関数が使用できるので，関数が返せる型ならプロパティの型としても使用できます。またプロパティには，変数と同じように型の互換性に関する Pascal の標準規則がすべて適用されます。型の互換性については『ユーザーズガイド』の第 4 章で説明しています。

プロパティの型を選択するとき最も重要な点は，型によってオブジェクトインスペクタの表示形態が決まるという点です。オブジェクトインスペクタでは，プロパティの型によって，ユーザーに表示する選択肢が決まります。コンポーネントを登録するときにはプロパティエディタを指定できます。詳細はプロパティエディタの開発を参照してください。

プロパティの型	オブジェクトインスペクタでの扱われ方

単純型	数値，文字，文字列の各プロパティは，それぞれ数値，文字，文字列として表示される。ユーザーはプロパティの値を直接入力して編集できる

列挙型	論理型を含めて，列挙型のプロパティでは，ソースコードで定義された値が表示される。ユーザーは，値の列をダブルクリックすることで，使用可能な値を循環的に切り替えられる。また，ある列挙型プロパティのすべての値を示すドロップダウンリストも用意されている

集合型	集合型のプロパティは，1 つの集合として表示される。ユーザーは，集合を展開すれば，集合の各要素を論理値として扱える。この場合，その要素が集合に含まれている場合には True，含まれていない場合には False となる

オブジェクト型	オブジェクトであるプロパティは，独自のプロパティエディタを持つ場合がある。ただし，そのオブジェクトがその中のプロパティをパブリッシュに設定している場合は，ユーザーはオブジェクトインスペクタでオブジェクトプロパティのリストを展開して，それらを個別に編集できる。オブジェクトプロパティは必ず Tpersistent を継承する

配列型	配列プロパティは，独自のプロパティエディタを備えている必要がある。オブジェクトインスペクタでの配列プロパティの編集はサポートされていない


参照
参照14151

プロパティを作成する理由

継承プロパティの公開

コンポーネントプロパティの定義

配列プロパティの作成

プロパティエディタでの開発


継承プロパティの公開
継承プロパティの公開14152

参照	例

すべてのコンポーネントは，それぞれの上位オブジェクト型からプロパティを継承しています。既存のコンポーネント型から新しいコンポーネントを派生させると，その新しいコンポーネントは上位コンポーネント型のすべてのプロパティを継承します。既存のコンポーネントから派生させないで，抽象オブジェクト型の1つから派生させた場合には，継承したプロパティの多くは protected か public のいずれかになりますが，published にはなりません。

protected, private, published などの保護レベルについての詳細はアクセスの制御を参照してください。

protected または public のプロパティをコンポーネントユーザーが使用できるようにするためには，そのプロパティを published として再宣言します。

再宣言するためには，下位オブジェクト型の宣言部に継承したプロパティの宣言を追加します。


例
例14153

TWinControl からコンポーネントを派生させると，このコンポーネントは Ctl3D プロパティを継承しますが，このプロパティは protected になっています。このためコンポーネントユーザーは，設計時や実行時に Ctl3D にアクセスできません。新しいコンポーネントで Ctl3D を再宣言することで，保護のレベルを public か published のいずれかに変更できます。

次のコードでは，Ctl3D を published として再宣言し，設計時に処理可能にする方法を示しています。

type
  TSampleComponent = class(TWinControl)

  published
    property Ctl3D;

  end;

なお，再宣言では，あるプロパティに対する制約を減らすことはできますが，制約の強化はできません。つまり，protected プロパティを public プロパティにすることはできますが，public プロパティを protected として再宣言し，このプロパティを隠蔽することはできないということです。

プロパティを再宣言する際には，プロパティ名だけを指定します。コンポーネントプロパティの定義で説明するような情報や型を指定する必要はありません。また，プロパティを再宣言する際には，新しいデフォルト値を宣言でき，そのプロパティを保存するかどうかも指定できます。


参照
参照14154

プロパティを作成する理由

プロパティの型

コンポーネントプロパティの定義

配列プロパティの作成

プロパティエディタでの開発


コンポーネントプロパティの定義
コンポーネントプロパティの定義14155

参照

プロパティ宣言の構文については，オンラインヘルプの予約語 property に関するトピックで詳細に説明しています。この節の中心テーマは，Delphi コンポーネントのプロパティの宣言に関する詳細と，標準コンポーネントに関する規則です。

具体的なテーマは次のとおりです。

プロパティの宣言

内部的なデータ記憶

直接アクセス

アクセスメソッド

デフォルトのプロパティ値


参照
参照14156

プロパティを作成する理由

プロパティの型

継承プロパティの公開

配列プロパティの作成

プロパティエディタでの開発


プロパティ宣言
プロパティ宣言14157

参照	例

プロパティの宣言とその実装は簡単な作業です。コンポーネントオブジェクト型の宣言にプロパティの宣言を追加するだけです。

プロパティを宣言するには次の 3 つの項目を指定します。

プロパティの名前

プロパティの型

プロパティの値を読み出すメソッド，および設定するメソッド

最小限，コンポーネントのオブジェクト型宣言の public 部でプロパティを宣言します。それにより，実行時にコンポーネントの外部から簡単にプロパティを設定したり読み出せるようになります。

設計時にプロパティを編集できるようにするには，コンポーネントのオブジェクト型宣言の published 部でプロパティを宣言します。パブリッシュに設定されたプロパティは自動的に，オブジェクトインスペクタで表示されます。


例
例14158

代表的なプロパティ宣言の例を次に示します。

type
  TYourComponent = class(TComponent)
  ...

  private
    FCount: Integer;	{ 内部記憶用のフィールド }
    function GetCount: Integer;	{ 読み出しメソッド }

    procedure SetCount(ACount: Integer);	{ 書き込みメソッド }

  public
    property Count: Integer  read GetCount write SetCount;	{ プロパティの宣言 }
  end;


参照
参照14159

内部的なデータ記憶

直接アクセス

アクセスメソッド

デフォルトのプロパティ値


内部的なデータ記憶 (プロパティ)
内部的なデータ記憶14160

参照

プロパティのデータを格納する方法には，なんの制約もありません。ただし一般的には，Delphi コンポーネントには次の規則があります。

プロパティのデータはオブジェクトフィールドに格納される

プロパティのオブジェクトフィールドの識別子の最初の文字はFで，識別子の中にプロパティ名が含まれる。たとえば，Tcontrol で定義された Width プロパティは，Fwidth というオブジェクトフィールドに格納されます。

プロパティデータ用のオブジェクトフィールドは private として宣言する。これにより，そのプロパティを宣言したコンポーネントだけがそのオブジェクトフィールドにアクセスでき，コンポーネントユーザーや下位コンポーネントからはアクセスできないことが保証されます。

下位コンポーネントからプロパティを操作する場合は，内部的なデータ記憶域に直接アクセスするのではなく，自分自身に継承したプロパティを使用します。

以上の背景となる基本原則は，プロパティの実装メソッドだけがプロパティの背後にあるデータにアクセスする，ということです。このため，メソッドやほかのプロパティがそのようなデータを操作する場合は，記憶域のデータに直接アクセスするのではなく，プロパティをとおして操作を行います。そうすれば，プロパティの実装方法を変更しても，そのプロパティを継承する下位コンポーネントが無効になるようなことはありません。


参照
参照14161

プロパティ宣言

直接アクセス

アクセスメソッド

デフォルトのプロパティ値


直接アクセス
直接アクセス14162

参照	例

プロパティデータを処理する最も簡単な方法は，データに直接アクセスすることです。それには，プロパティ宣言の read 部と write 部で，プロパティ値の代入と読み出しは，アクセスメソッドの呼び出しではなく，内部的な記憶フィールドへの直接アクセスで行う，ということを指定します。特に副作用を持たないプロパティをオブジェクトインスペクタで操作したい場合には，直接アクセスは便利です。

一般によく行われる方法では，プロパティ宣言の read 部では直接アクセスを指定し，write 部ではメソッドの使用を指定します。書き込みではメソッドを使用するので，新しいプロパティ値に基づいて常にコンポーネントの状態を更新できます。


例
例14163

次の例では，コンポーネント型宣言の read 部と write 部の両方でプロパティに直接アクセスを指定しています。

type
  TSampleComponent = class(TComponent)

  private	{ 内部記憶はプライベート }
    FReadOnly: Boolean;	{ プロパティ値を入れておくフィールドを宣言 }

  published	{ 設計時にプロパティを操作可能にする }
    property ReadOnly: Boolean read FReadOnly write FReadOnly;

  end;


参照
参照14164

プロパティ宣言

内部的なデータ記憶

アクセスメソッド


アクセスメソッド (プロパティ)
アクセスメソッド14165

参照

プロパティ宣言の構文では，プロパティ宣言の read 部と write 部で，オブジェクトフィールドのかわりにアクセスメソッドを指定できます。プロパティの read 部と write 部がどのように指定されている場合でも，その実装は private にしてください。下位コンポーネントからそのプロパティをアクセスする場合には，必ず継承したそのプロパティを使用するようにします。これにより，プロパティの実際の実装方法が変更されても，プロパティを同じように継続して使用できることが保証されます。

また，アクセスメソッドをプライベートにすることで，コンポーネントユーザーがそれらのメソッドを偶然に呼び出して，プロパティを不用意に変更してしまうような事態は起きなくなります。

read メソッド

プロパティの read メソッドは，パラメータを1つも取らない関数で，そのプロパティと同じ型の値を返します。命名規則によって，この関数の名前はプロパティ名の先頭に「Get」を加えた名前にします。たとえば，Count という名前のプロパティの read メソッドは GetCount と命名します。

配列プロパティの read メソッドは，パラメータに関して例外です。この関数はパラメータとして配列のインデックスを受け取ります。

read メソッドは内部記憶データに対して必要な処理を行って，適切な型のプロパティ値を生成します。

read メソッドを宣言しなければ，そのプロパティは書き込み専用になります。書き込み専用プロパティが使用されることはほとんどなく，また一般に実用的ではありません。

write メソッド

プロパティの write メソッドは，必ずそのプロパティと同じ型の1つのパラメータを取る手続きです。このパラメータは，参照渡しと値渡しのいずれの方法でも受け取ることができ，またどのような名前でも付けられます。命名規則によって，この手続きの名前はプロパティ名の先頭に「Set」を加えた名前にします。たとえば，Count という名前のプロパティの write メソッドは SetCount と命名します。

パラメータに渡された値は，そのプロパティに設定する新しい値として使用されます。write メソッドは，値を適切に内部記憶に格納するために必要なすべての処理を行います。

write メソッドを宣言しなければ，そのプロパティは読み出し専用になります。

write メソッドでは，新しく設定する値が現在値と異なっているかどうかを検査することがよくあります。次の例では，整数プロパティ Count の write メソッドがフィールド Fcount に値を格納しています。

procedure TMyComponent.SetCount(Value: Integer);
begin

  if Value <> FCount then
  begin
    FCount := Value;

    Update;
  end;
end;


参照
参照14166

プロパティ宣言

内部的なデータ記憶

直接アクセス

デフォルトのプロパティ値


デフォルトのプロパティ値
デフォルトのプロパティ値14167

参照	例

プロパティを宣言する場合，オプションとして，そのプロパティのデフォルト値を宣言できます。コンポーネントのプロパティのデフォルト値は，コンポーネントのコンストラクタで設定される値です。たとえば，コンポーネントパレットからコンポーネントをフォームに配置すると，Delphi はコンポーネントコンストラクタを呼び出してそのコンポーネントを作成します。この場合，このコンポーネントのプロパティの初期値は，コンポーネントコンストラクタによって設定されます。

また，宣言されたデフォルト値によって，プロパティをフォームファイルに保存するかどうかが決定されます。プロパティの保存とデフォルト値の関係についての詳細はプロパティの保存と読み込みを参照してください。プロパティにデフォルト値を指定しなかった場合には，そのプロパティは常に保存されます。

プロパティのデフォルト値を宣言するには，プロパティの宣言 (または再宣言) に default 指令を追加して，その後にデフォルト値を記述します。

メモ:	プロパティ宣言でデフォルト値を宣言しても，実際にプロパティがその値に設定されるわけではありません。コンポーネントコンストラクタが実際にプロパティをその値で初期化するようにプログラミングするのはコンポーネント開発者の役割です。

デフォルト値を指定しない方法

プロパティを再宣言する場合は，継承したプロパティがデフォルト値を持っていたときでも，そのプロパティがデフォルト値を持たないように指定できます。

プロパティがデフォルト値を持たないように指定するには，そのプロパティの宣言に nodefault 指令を追加します。

あるプロパティを初めて宣言する場合は nodefault を指定する必要はありません。デフォルト値を特に宣言しないだけで結果は同じことになります。


例
例14168

コンポーネント宣言の次の例は，デフォルト値 True を持つ論理型プロパティ IsTrue と，デフォルト値を実際に設定するコンストラクタを示しています。

type
  TSampleComponent = class(TComponent)

  private
    FIsTrue: Boolean;

  public
    constructor Create(AOwner: TComponent); override;

  published
    property IsTrue: Boolean read FIsTrue write FIsTrue default True;

  end;

...

constructor TSampleComponent.Create(AOwner: TComponent);

begin
  inherited Create(AOwner);	{ 常に継承したコンストラクタを呼び出す }

  FIsTrue := True;	{ デフォルト値を設定する }

end;

実際には，IsTrue のデフォルト値を False にする場合は，この値をコンストラクタで明示的に設定する必要はありません。すべてのオブジェクト (およびすべてのコンポーネント) では，常にすべてのフィールドがゼロに初期化されます。論理値の場合，ゼロは False に相当します。


参照
参照14169

プロパティ宣言

内部的なデータ記憶

直接アクセス

アクセスメソッド


配列プロパティの作成
配列プロパティの作成14170

参照	例

プロパティの中には，配列と同様にインデックス付けされたプロパティがあります。つまり，こうしたプロパティはインデックス値に対応する複数の値を持ちます。標準コンポーネントでのよい例は，メモコンポーネントの Lines プロパティです。Lines はメモのテキストを構成するインデックス付けされた文字列のリストで，文字列の配列として扱えます。この配列プロパティによって，ユーザーは大きなデータ (メモテキスト) の中の特定の要素 (文字列) に簡単にアクセスできます。

配列プロパティはほかのプロパティと同じように機能し，宣言もほぼ同じ方法で行います。配列プロパティの宣言がほかのプロパティの宣言と違うのは以下の点だけです。

プロパティの宣言に，型を持つインデックスが 1 つまたは複数個含まれる。インデックッスには任意の型が指定できる

プロパティの宣言に read 部と write 部を記述する場合は，メソッドを指定しなければならない。オブジェクトフィールドは指定できない

プロパティ値の読み出しと書き込みのためのアクセスメソッドは，インデッススを示す 1 つまたは複数のパラメータを追加的に受け取る。このパラメータの順序は，プロパティ宣言で指定されたインデックスと同じ順序，同じ型でなければならない

配列プロパティと配列はほとんど同じように見えますが，両者の間にはいくつか相違点があります。配列プロパティのインデックスの型は，配列のインデックスと違って，整数型にする必要がありません。たとえば，プロパティを文字列によってインデックス付けをすることができます。また，配列プロパティでは個々の要素が参照できるだけで，プロパティの全範囲は参照できません。


例
例14171

次の例では，整数インデックスによって文字列を返すプロパティの宣言を示します。

type
  TDemoComponent = class(TComponent)

  private
    function GetNumberName(Index: Integer): string;

  public
    property NumberName[Index: Integer]: string read GetNumberName;
  end;

...

function TDemoComponent.GetNumberName(Index: Integer): string;
begin
  Result := 'Unknown';

  case Index of
    -MaxInt..-1: Result := 'Negative';

    0: Result := 'Zero';

    1..100: Result := 'Small';

    101..MaxInt: Result := 'Large';
  end;
end;


参照
参照14172

プロパティを作成する理由

プロパティの型

継承プロパティの公開

コンポーネントプロパティの定義

プロパティエディタでの開発


プロパティエディタでの開発
プロパティエディタでの開発14173

参照

オブジェクトインスペクタでは，すべての型のプロパティ用にデフォルトの編集機能が用意されていますが，プロパティエディタを記述して登録すれば，特定のプロパティに対応したエディタを使用できます。開発したコンポーネントのプロパティに適用するプロパティエディタを登録することができ，また，ある型のすべてのプロパティに適用するエディタを作成することもできます。

最も簡単なレベルでは，プロパティエディタは次の 2 つの方法で使用されます。つまり，現在値をテキスト文字列として表示してユーザーに編集させる方法と，いくつもの編集機能を備えたダイアログボックスを表示する方法の 2 つです。開発者は，編集するプロパティにとってどの方法が便利であるか判断して，どちらの方法を使用するか決定します。

プロパティエディタの開発は以下の 5 つのステップで行います。

プロパティエディタオブジェクトを派生させる

プロパティをテキストとして編集する

プロパティを全体として編集する

エディタ属性を指定する

プロパティエディタの登録する


参照
参照14174

プロパティを作成する理由

プロパティの型

継承プロパティの公開

コンポーネントプロパティの定義

配列プロパティの作成


プロパティエディタオブジェクトを派生させる
プロパティエディタオブジェクトを派生させる14175

参照	例

DsgnIntf ユニットには数種類のプロパティエディタが定義されていますが，これらのエディタはすべて，TPropertyEditor を継承するオブジェクトです。プロパティエディタを作成する場合は，TPropertyEditor から直接プロパティエディタオブジェクトを派生させる方法と， 下の表に示すプロパティエディタ型の 1 つから派生させる方法のいずれかを使用します。

プロパティエディタオブジェクトを作成するには，既存のプロパティエディタ型の 1 つから新しいオブジェクト型を派生させます。

DsgnIntf ユニットでは，コンポーネント名などの特殊のプロパティに対して使用するいくつかの特殊なプロパティエディタも定義されています。次の表に，ユーザー定義プロパティにとって有用なエディタを示します。

型	編集できるプロパティ

TOrdinalProperty	すべての順序型 (整数型，文字型，列挙型) のプロパティのためのプロパティエディタは，TOrdinalProperty を継承する

TIntegerProperty	すべての整数型。定義済みの部分範囲型とユーザー定義の部分範囲型を含む

TCharProperty	Char 型と，Char の部分範囲型 ('A'..'Z'など)

TEnumProperty	すべての列挙型

TFloatProperty	すべての浮動小数点数

TStringProperty	文字列。string[20] のような特定の長さの文字列を含む

TSetElementProperty	集合の個々の要素。論理値として表示される

TSetProperty	すべての集合。集合は直接には編集できないが，集合要素プロパティのリストに展開できる

TClassProperty	オブジェクト。オブジェクト型の名前を表示し，そのオブジェクトのプロパティを展開できる

TMethodProperty	メソッドポインタ。特に，イベントを扱う

TComponentProperty	同じフォーム上のコンポーネント。ユーザーはコンポーネントのプロパティを編集できないが，互換のある型の特定のコンポーネントを指示できる

TCaptionProperty	キャプションとテキスト用のエディタ。プロパティが変更されるたびに実際のプロパティの値を更新する

TComponentNameProperty	コンポーネント名。複数のコンポーネントが選択されているときに，表示される名前プロパティを制限する

TCursorProperty	カーソル。該当する場合は clXXX 値でその色を表示し，該当しない場合は 16 進値で表示する。リストから clXXX 値を選択することもできる

TShortCutProperty	キーボードショートカット。ショートカット値を入力するか，リストからショートカット値を選択できる

TMPFilenameProperty	メディアファイルの名前。メディアファイルの名前を含む［ファイルを開く］ダイアログボックスを表示する

TTabOrderProperty	タブ順。複数のコンポーネントが選択されているときに表示されるコンポーネントの表示を制限する

TColorProperty	コンポーネント色。色定数に該当すればそれを表示し，そうでない場合は 16 進数で表示する。ドロップダウンリストには色定数が入っている。ダブルクリックすると色選択ダイアログボックスが開く

TFontNameProperty	フォント名。ドロップダウンリストには現在インストールされているすべてのフォントが表示される

TFontProperty	フォント。フォントダイアログボックスにアクセスでき，また，個々のフォントプロパティを展開できる


例
例14176

最も単純なプロパティエディタの 1 つは，浮動小数点数のプロパティ用の TFloatProperty です。その宣言の例を次に示します。

type
  TFloatProperty = class(TPropertyEditor)

  public
    function AllEqual: Boolean; override;

    function GetValue: string; override;

    procedure SetValue(const Value: string); override;

  end;


参照
参照14177

プロパティをテキストとして編集する

プロパティを全体として編集する

エディタ属性の指定

プロパティエディタの登録


プロパティをテキストとして編集する
プロパティをテキストとして編集する14178

参照	例

すべてのプロパティには，オブジェクトインスペクタで表示するために，値の文字列表現を用意しなければなりません。また，ほとんどのプロパティでは，ユーザーはそのプロパティに新しい値を入力できます。プロパティエディタオブジェクトの仮想メソッドをオーバーライドすることで，文字列表現と実際の値とを変換します。

オーバーライドするメソッドの名前は，GetValue と SetValue です。プロパティエディタはまた，次の表で示すように，さまざまな型の値の代入と読み出しに使用されるメソッド群を継承します。

プロパティの型	「Get」メソッド	「Set」メソッド

浮動小数点数	GetFloatValue	SetFloatValue

メソッドポインタ (イベント)	GetMethodValue	SetMethodValue

順序型	GetOrdValue	SetOrdValue

文字列	GetStrValue	SetStrValue.

通常，GetValue メソッドをオーバーライドする新しいメソッドも，「Get」メソッドの1つを呼び出します。SetValue メソッドをオーバーライドするメソッドは，「Set」メソッドの1つを呼び出します。

プロパティ値の表示

プロパティエディタの GetValue メソッドは，そのプロパティの現在値を表す文字列を返します。オブジェクトインスペクタは，この文字列をそのプロパティの値列に表示します。デフォルトでは，GetValue は *(Unknown)* を返します。

独自のプロパティの文字列表現を用意するには，プロパティエディタの GetValue メソッドをオーバーライドします。

プロパティ値が文字列でない場合は，GetValue はその値を文字列表現に変換しなければなりません。

プロパティ値の設定

プロパティエディタの SetValue メソッドは，ユーザーがオブジェクトインスペクタで入力した文字列を受け取り，その文字列を適切な型に変換し，プロパティの値を設定します。受け取った文字列がプロパティの適正な値を表していなかった場合，SetValue は例外を生成します。

文字列値をプロパティに設定するには，プロパティエディタの SetValue メソッドをオーバーライドします。


例
例14179

TIntegerProperty の GetValue メソッドと SetValue メソッドの例を次に示します。Integer は順序型なので，GetValue は GetOrdValue を呼び出して，値を文字列に変換します。SetValue はこの文字列を整数に変換し，値の範囲を検査してから SetOrdValue を呼び出します。

function TIntegerProperty.GetValue: string;

begin

  Result := IntToStr(GetOrdValue);

end;

procedure TIntegerProperty.SetValue(const Value: string);

var
  L: Longint;

begin

  L := StrToInt(Value);	{ 文字列を数値に変換 }

  with GetTypeData(GetPropType)^ do	{ ここで Integer 型のコンパイラデータが使用される }

    if (L < MinValue) or (L > MaxValue) then	{ 範囲内にあることを確認... }
      raise EPropertyError.Create(	{ ...範囲内にない場合は例外を生成 }
        FmtLoadStr(SOutOfRange, [MinValue, MaxValue]));

  SetOrdValue(L);	{ 範囲内にあれば処理を続行して値を設定 }
end;

特定の例を細かく示しましたが，原則は次のとおりです。GetValue は値を文字列に変換し，SetValue は文字列を値に変換し，検証してから「Set」メソッドの 1 つを呼び出す，ということです。


参照
参照14180

プロパティエディタオブジェクトを派生させる

プロパティを全体として編集する

エディタ属性の指定

プロパティエディタの登録


プロパティを全体として編集する
プロパティを全体として編集する14181

参照	例

オプションとして，ユーザーがビジュアルにプロパティを編集できるダイアログボックスを用意できます。プロパティエディタが最もよく使用されるのは，それ自身がオブジェクトであるプロパティに対してです。そのよい例が Font プロパティです。このプロパティの場合，ユーザーはフォントダイアログボックスを開いて，特定のフォントのすべての属性を一度に指定することができます。

プロパティ全体を編集するエディタダイアログボックスを用意するには，プロパティエディタオブジェクトの Edit メソッドをオーバーライドします。

Edit メソッドは，GetValue メソッドと SetValue メソッドを記述する際に使用したのと同じ「Get」メソッドと「Set」メソッドを使用します。Edit メソッドは「Get」メソッドと「Set」メソッドの両方を呼び出します。このエディタは特定の型を扱うので，通常はプロパティ値を文字列に変換する必要はありません。このエディタは一般に，値を「取り出された状態のまま」処理します。

ユーザーがプロパティの隣の［...］ボタン (省略ボタン) をクリックするか，値列をダブルクリックすると，オブジェクトインスペクタがプロパティエディタの Edit メソッドを呼び出します。


例
例14182

ほとんどのコンポーネントが持つ Color プロパティは，Windows の［色の設定］コモンダイアログボックスをプロパティエディタとして使用します。TColorProperty の Editメソッドの例を次に示します。このメソッドは［色の設定］ダイアログボックスを呼び出して，その結果を使用します。

procedure TColorProperty.Edit;

var
  ColorDialog: TColorDialog;

begin
  ColorDialog := TColorDialog.Create(Application);	{ エディタを構築 }

  try
    ColorDialog.Color := GetOrdValue;	{ 既存の値を使用 }

    if ColorDialog.Execute then	{ ユーザーがそのダイアログボックスでOKを選択した場合は... }

      SetOrdValue(ColorDialog.Color);	{ ...その結果を使用して値を設定 }

  finally
    ColorDialog.Free;	{ エディタを廃棄 }

  end;
end;


参照
参照14183

プロパティエディタオブジェクトを派生させる

プロパティをテキストとして編集する

エディタ属性の指定

プロパティエディタの登録


エディタ属性の指定
エディタ属性の指定14184

参照	例

オブジェクトインスペクタが適切なツールを表示できるように，プロパティエディタはいくつかの情報を通知しなければなりません。たとえば，プロパティにサブプロパティがあるのかどうか，可能な値のリストを表示できるのかどうか，などです。

エディタ属性を指定するには，プロパティエディタの GetAttributes メソッドをオーバーライドします。

GetAttributes は TPropertyAttributes 型の値の集合を返す関数です。返される値の集合は，次の表に示す値の組み合わせです。

フラグ	含まれている場合の意味	関連メソッド
paValueList	このエディタは列挙値のリストを与えることができる	GetValues
paSubProperties	このプロパティには表示できるサブプロパティがある	GetProperties
paDialog	このエディタはプロパティを全体として編集するためのダイアログボックスを表示できる	Edit
paMultiSelect	このプロパティは，ユーザーが2つ以上のコンポーネントを選択したときのみ表示する	なし
paAutoUpdate	値の到着を待つかわりに，変更が行われるたびにコンポーネントを更新する	SetValue
paSortList	オブジェクトインスペクタがその値リストを並べ替えられる	なし
paReadOnly	ユーザーはそのプロパティ値を変更できない	なし


例
例14185

Color プロパティは，ほかのプロパティと比べてかなり柔軟です。ユーザーはオブジェクトインスペクタで，入力，リストからの選択，カスタマイズされたエディタによる指定など，いくつかの方法によってこのプロパティを変更できます。このため，TColorProperty の GetAttributes メソッドの戻り値には，次のようにいくつかの属性が入っています。

function TColorProperty.GetAttributes: TPropertyAttributes;

begin

  Result := [paMultiSelect, paDialog, paValueList];

end;


参照
参照14186

プロパティエディタオブジェクトを派生させる

プロパティをテキストとして編集する

プロパティを全体として編集する

プロパティエディタの登録


プロパティエディタの登録
プロパティエディタの登録14187

参照	例

プロパティエディタを作成したら，次にそれを Delphi に登録します。プロパティエディタを登録すると，指定したプロパティの型とプロパティエディタとが関連付けられます。エディタの登録では，特定の型を持つすべてのプロパティを指定することも，特定の型の特定のプロパティだけを指定することもできます。

プロパティエディタを登録するには，手続き RegisterPropertyEditor を呼び出します。

RegisterPropertyEditor は次の 4 つのパラメータを受け取ります。

編集するプロパティの型を示す型情報ポインタ

これは常に，TypeInfo(TMyComponent) など，TypeInfo 組み込み関数に対する呼び出しにします。

エディタが適用されるコンポーネントの型

このパラメータが nil の場合には，このエディタは指定の型のプロパティすべてに適用されます。

プロパティの名前

このパラメータは，直前のパラメータによって特定の型のコンポーネントが指定された場合にのみ有効です。この場合には，このエディタが適用されるコンポーネント型の特定のプロパティの名前を指定できます。

指定のプロパティの編集に使用されるプロパティエディタの型


例
例14188

コンポーネントパレットの標準コンポーネント用のエディタを登録する手続きの一部を例として次に示します。

procedure Register;

begin
  RegisterPropertyEditor(TypeInfo(TComponent), nil, '', TComponentProperty);

  RegisterPropertyEditor(TypeInfo(TComponentName), TComponent, 'Name',
    TComponentNameProperty);

  RegisterPropertyEditor(TypeInfo(TMenuItem), TMenu, '', TMenuItemProperty);

end;

この手続きの 3 つの文は，次のような 3 通りの RegisterPropertyEditor の使用方法を記述しています。

最初の文は，最も一般的な登録を行っています。この文では，Tcomponent 型と，登録済みの独自のエディタを持たない Tcomponent の下位オブジェクト型のプロパティすべてに対して，プロパティエディタ TComponentProperty が登録されています。多くの場合，プロパティエディタの登録では，ある特定の型のためのエディタを作成し，そのエディタをその型のすべてのプロパティに対して指定します。このため，2 番目と 3 番目のパラメータがそれぞれ nil と空文字列になっています。

2 番目の文は，最も限定的な登録を行っています。この文では，指定の型のコンポーネントの指定のプロパティ用にエディタを登録しています。この例では，すべての該当するコンポーネントの Name プロパティ用にエディタを登録しています。

3 番目の文には，1 番目の文よりは限定的で，2 番目の文よりは一般的な登録を行っています。この文では，Tmenu 型のコンポーネントの TMenuItem 型のすべてのプロパティ用にエディタを登録しています。


参照
参照14189

プロパティエディタオブジェクトを派生させる

プロパティをテキストとして編集する

プロパティを全体として編集する

エディタ属性の指定


イベントの作成
イベントの作成14190

参照

通常，コンポーネント開発者はイベントには直接関係しませんが，コンポーネントにとってイベントは重要な要素です。イベントとは，ユーザーアクションやフォーカスの変更などのコンポーネントが応答しなければならないシステムの出来事と，その出来事に応答するコードとの間の関連付けのことです。この応答コードがイベントハンドラで，ほとんどの場合コンポーネントユーザーによって記述されます。

アプリケーション開発者は，イベントを使用することでオブジェクトそのものを変更することなくコンポーネントの動作をカスタマイズできます。コンポーネント開発者の方は，アプリケーション開発者がコンポーネントの動作をカスタマイズできるようにイベントを使用します。

マウスアクションなど，よく発生するユーザーアクションに対するイベントは，すべての標準 Delphi コンポーネントに組み込まれています。しかし，ユーザーアクションに対する独自のイベントも作成できます。この章では，コンポーネントのイベントの作成について以下のことを説明します。

イベントとは何か

標準イベントの実現

独自のイベントの定義

Delphi では，イベントはプロパティとして実現されます。このため，コンポーネントのイベントを作成・変更するには，プロパティの作成をまず読んでください。


参照
参照14191

コンポーネント作成の概要

コンポーネント開発者のための OOP

プロパティの作成

メソッドの作成

コンポーネントにおけるグラフィックの使い方

メッセージの処理

コンポーネントの登録


イベントとは何か
イベントとは何か14192

参照

イベントとは，簡単に定義すると，ある出来事とコードを関連付けるメカニズムのことです。より具体的には，イベントはメソッドポインタです。つまり，特定のオブジェクトインスタンスの特定のメソッドを指すポインタです。

コンポーネントユーザーにとってのイベントは，システムイベントに関連付けられた OnClick などの名前で示されます。ユーザーはイベントが呼び出すメソッドを指定できます。たとえば，Button1 という名前の押しボタンは，OnClick メソッドを伴っています。デフォルトでは Delphi は，このボタンのあるフォームに Button1Click という名前のイベントハンドラを生成し，OnClick に関連付けます。このボタンでクリックイベントが発生すると，ボタンは OnClick のメソッド，つまりこの場合は Button1Click を呼び出します。

つまり，コンポーネントユーザーにとってのイベントは，特定の出来事が発生したときに呼び出すユーザー記述コードを指定するしくみです。

コンポーネント開発者にとっては，イベントにはそれより多くのことが関係しています。重要な点は，イベントはコンポーネントユーザーに関連付けを用意するということです。つまり，イベントはある出来事に応答するコードをアタッチするためのしくみを用意します。ユーザーがコードをコンポーネントに「差し込む」ためのコンセントを用意するわけです。

イベントを記述するために，以下のことについて説明します。

イベントはメソッドポインタである

イベントはプロパティである

イベントハンドラの型

イベントハンドラはオプションである


参照
参照14193

標準イベントの実現

独自のイベントの定義


イベントはメソッドポインタである
イベントはメソッドポインタである14194

参照	例

イベントはメソッドポインタとして実現されます。メソッドポインタは，特定のオブジェクトインスタンスの特定のメソッドを指すポインタ型です。コンポーネント開発者はメソッドポインタをプレースホルダとして扱えます。つまり，コンポーネントのコードがイベントを検出した場合，ユーザーがそのイベントに対して指定しているメソッドがあれば，そのメソッドを呼び出します。

メソッドポインタはほかの手続き型と同じように動作しますが，手続き型と違ってオブジェクトインスタンスへの隠されたポインタを保持しています。ユーザーがコンポーネントのイベントにハンドラを指定した場合，この指定は特定のオブジェクトインスタンスの特定のメソッドに対する指定であって，単に特定の名前のメソッドに対して指定したわけではありません。このインスタンスは通常，そのコンポーネントが所属するフォームですが，そうでない場合もあります。


例
例14195

すべてのコントロールは，クリックイベントを処理する動的メソッド Click を継承します。Click は，ユーザーのクリックイベントハンドラが存在する場合はそれを呼び出すように実現されています。

procedure TControl.Click;
begin
  if Assigned(OnClick) then FOnClick(Self);
end;

コントロールがクリックされると，ユーザーがコントロールの OnClick イベントにハンドラを指定している場合には，そのメソッドが呼び出されます。ハンドラを指定していなかった場合には何も起こりません。


参照
参照14196

イベントはプロパティである

イベントハンドラの型

イベントハンドラはオプションである


イベントはプロパティである
イベントはプロパティである14197

参照

コンポーネントはプロパティによってイベントを実現します。ほかのプロパティとは異なり，イベントはメソッドを使用して read 部と write 部を実現するわけではありません。そのかわりに，イベントプロパティは同じ型のプライベートなオブジェクトフィールドをプロパティとして使用します。

このフィールドの名前は，通常，プロパティの名前の先頭に文字Fを加えた名前とします。たとえば，OnClick メソッドのポインタは TNotifyEvent 型の FOnClick という名前のフィールドに格納されます。OnClick イベントプロパティの宣言を次に示します。

type
  TControl = class(TComponent)
  private
    FOnClick: TNotifyEvent;	{ メソッドポインタを収容するフィールドを宣言 }

    ...

  protected
    property OnClick: TNotifyEvent read FOnClick write FOnClick;
  end;

TNotifyEvent その他のイベント型については，イベントハンドラの型を参照してください。

ほかのプロパティの場合と同じように，イベントの値は実行時に設定または変更できます。ただし，イベントをプロパティとする主要な利点は，コンポーネントユーザーが設計時にオブジェクトインスペクタでイベントにハンドラを指定できることです。


参照
参照14198

イベントはメソッドポインタである

イベントハンドラの型

イベントハンドラはオプションである


イベントハンドラの型
イベントハンドラの型14199

参照

イベントはイベントハンドラに対するポインタなので，イベントプロパティの型はメソッドポインタ型でなければなりません。同様に，イベントハンドラとして使用されるすべてのコードは，適切な型を持つオブジェクトメソッドでなければなりません。

イベントハンドラはすべて手続きです。互換性のため，定義するイベントハンドラはデフォルトのイベントハンドラと同じ数，同じ型のパラメータを，同じ順序，同じ方法で受け取らなければなりません。

Delphi すべての標準イベントに対してメソッド型を定義しています。独自のイベントを作成する場合は，既存の型が適切ならばそれを使用できます。そうでなければ独自の型を定義します。

イベントハンドラ型は手続きである

関数のメソッドポインタ型を宣言してもコンパイラはエラーを発生しませんが，関数ではイベントを処理しないでください。関数が空の場合，返される結果は不定なので，空の関数であるようなイベントハンドラは有効とは限りません。そのため，すべてのイベントとイベントハンドラは手続きにします。

イベントハンドラを関数にすることはできませんが，var パラメータを使用すればユーザーのコードから情報を取得できます。この場合は，必ずパラメータに有効な値を代入してからそのハンドラを呼び出すようにしてください。そうしないと，ユーザーが常に値を設定しなければなりません。

キーが押されたときに処理を行う TKeyPressEvent 型のイベントハンドラでは，var パラメータを使用します。次のように TKeyPressEvent では，どのオブジェクトがそのイベントを生成したかを示すパラメータと，どのキーが押されたかを示すパラメータの 2 つが定義されています。

type
  TKeyPressEvent = procedure(Sender: TObject; var Key: Char) of object;

通常，Key パラメータはユーザーが押した文字を示します。ただし，場合によってはコンポーネントユーザーがその文字を変更することがあります。たとえば，エディタの入力ですべての文字を大文字に変換する場合です。それには，次のようなキー入力用のハンドラを定義できます。

procedure TForm1.Edit1KeyPressed(Sender: TObject; var Key: Char);
begin
  Key := UpCase(Key);
end;

また，var パラメータによってユーザーがデフォルトの処理をオーバーライドできるように設計することも可能です。


参照
参照14200

イベントはメソッドポインタである

イベントはプロパティである

イベントハンドラはオプションである


イベントハンドラはオプションである
イベントハンドラはオプションである14201

参照

コンポーネントのイベントを作成する際に，コンポーネントユーザーがイベントにハンドラを結び付けないことがあるという点を考慮しなければなりません。つまり，コンポーネントのユーザーが特定のイベントにハンドラを結び付けるのを忘れた場合でも，コンポーネントが障害を起こしたりエラーを出したりしないようにする必要があります。

ハンドラの呼び出しと，ハンドラが結び付けられていないイベントの処理のメカニズムについては，イベントの呼び出しで説明しますが，上の原則はコンポーネントとイベントの設計において重要な意味を持っています。

イベントハンドラがオプションであるということには，以下の 2 つの側面があります。

コンポーネントユーザーはイベントを処理する必要がない

Windows アプリケーションでは常にイベントが発生しています。コンポーネントを横切ってマウスポインタを移動させるだけで，Windows はコンポーネントに無数のマウス移動メッセージを送り出し，コンポーネントはそのメッセージを OnMouseMove イベントに変換します。しかし多くの場合，コンポーネントユーザーはマウス移動イベントを処理せず，それで問題が生じることもありません。コンポーネントはマウスイベントが処理されることを当てにしてはいないからです。

同様に，作成するコンポーネントでは，生成されたイベントが必ずしもユーザーに処理されないことを考慮します。

コンポーネントユーザーは自由にイベントハンドラのコードを記述できる

一般に，ユーザーがイベントハンドラに記述できるコードに制約はありません。Delphi コンポーネントライブラリのコンポーネントのイベントハンドラは，ユーザーのコードによって予想外のエラーが発生するような事態がなるべく起きないように記述されています。確かに，ユーザーコードの論理エラーは回避できません。しかしたとえば，イベントが呼び出される前にすべてのデータ構造が初期化されるように記述し，ユーザーが無効な情報を参照しないように配慮することは可能です。


参照
参照14202

イベントはメソッドポインタである

イベントはプロパティである

イベントハンドラの型


標準イベントの実現
標準イベントの実現14203

参照

Delphi のすべてのコントロールは，よく使用される Windows イベントを継承しています。そのようなイベントを標準イベントと呼びます。標準イベントのすべては標準コントロールに組み込まれていますが，デフォルトでは標準イベントは protected になっているので，ユーザーは標準イベントにハンドラを結び付けられません。しかしコントロールを作成する場合は，そのコントロールのユーザーがアクセスできるようにすることは可能です。

標準イベントをコントロールで処理する場合は次の 3 点について考慮します。

標準イベントとは何か

イベントを公開する方法

標準イベントの処理方法の変更


参照
参照14204

イベントとは何か

独自のイベントの定義


標準イベントとは何か
標準イベントとは何か14205

参照

標準イベントには，すべてのコントロールに対して定義されているイベントと，標準 Windows コントロールに対してのみ定義されているイベントの 2 種類があります。

すべてのコントロールの標準イベント

最も基本的なイベントは，Tcontrol オブジェクト型で定義されています。ウィンドウ，グラフィック，カスタムのどの種類のコントロールも，そのイベントを継承します。以下に，すべてのコントロールで処理できるイベントをすべて示します。

OnClick	OnDragDrop	OnEndDrag	OnMouseMove
OnDblClick	OnDragOver	OnMouseDown	OnMouseUp
Tcontrol では，OnDragOver を除く標準イベントに対応するメソッドを宣言しています。これらのメソッドの名前は，イベント名から先頭の「On」を除いた名前です。たとえば，OnClick イベントは Click というメソッドを呼び出します。

標準コントロール用の標準イベント

標準コントロールは，すべてのコントロールに共通のイベントに加えて，以下に示すイベントを処理できます。標準コントロールは TWinControl から派生したものです。

OnEnter	OnKeyDown	OnKeyPress
OnKeyUp	OnExit
Tcontrol の標準コントロールと同様に，ウィンドウコントロールイベントにも対応するメソッドがあります。これらのメソッドの名前は，OnEnter と OnExit については先頭の「On」を「Do」に付け変えた名前，それ以外については先頭の「On」を除いた名前です。


参照
参照14206

標準イベントの処理方法の変更

イベントの公開


イベントの公開
イベントの公開14207

参照	例

標準イベントの宣言は，それに対応するメソッドと同様に protected になっています。実行時または設計時に標準イベントをユーザーがアクセスできるようにするには，そのイベントプロパティを public または published として再宣言します。

プロパティを実現方法の指定なしで再宣言すると，メソッドの保護レベル (アクセス制御) だけが変更されます。この方法で，Tcontrol で定義されているユーザーに表示されないイベントを再宣言し，ユーザーが使用できるように変更できます。


例
例14208

コンポーネントの OnClick イベントを設計時にアクセスできるようにするには，コンポーネントの型宣言に次のコードを記述します。

type
  TMyControl = class(TCustomControl)
    ...

  published
    property OnClick;	{ OnClickをオブジェクトインスペクタで処理可能にする }
  end;


参照
参照14209

標準イベントとは何か

標準イベントの処理方法の変更


標準イベントの処理方法の変更
標準イベントの処理方法の変更14210

参照	例

コンポーネントユーザーがイベントへの応答を変更するときは，記述したコードをそのイベントに結び付けます。しかし，カスタムコンポーネントを作成している場合は，この方法は使用できません。なぜなら，コンポーネントユーザーがそのイベントを処理できるようにしておく必要があるからです。

標準イベントのそれぞれが protected として宣言されたメソッドで実現されているのはこのためです。このメソッドをオーバーライドすれば，内部のイベント処理方法を変更できます。そこで継承したメソッドを呼び出せば，元の標準イベント処理やユーザーコードで記述された処理を実行できます。

継承したメソッドを呼び出す順序が重要です。一般には，継承したメソッドを最初に呼び出して，カスタマイズの前にユーザーのイベントハンドラコードを実行します。継承したメソッドの実行結果によっては，カスタマイズ処理を実行しないこともできます。ただし，継承したメソッドを呼び出す前にカスタマイズ処理を実行したい場合もあります。たとえば，継承したコードがコンポーネントの状態に依存している場合に，カスタマイズしたコードで状態をあらかじめ変更しておくことがあります。このような場合は，状態を変更した後にユーザーコードを実行して，ユーザーコードが変更済みの状態を参照できるようにします。


例
例14211

開発中のコンポーネントで，クリックに応答する方法を変更するとします。コンポーネントユーザーと同じ方法で OnClick イベントにハンドラを結び付けるかわりに，次のように Click プロテクトメソッドをオーバーライドします。

procedure TMyControl.Click;
begin
  inherited Click;	{ ハンドラの呼び出しなど標準的な処理を実行 }
  { ここにコンポーネント開発者のカスタマイズコードを記述 }
end;


参照
参照14212

標準イベントとは何か

イベントの公開


独自のイベントの定義
独自のイベントの定義14213

参照

まったく新しいイベントを定義することは，それほど多くはありません。よくあるのは，既存のイベントの処理方法を改良するケースです。しかし，あるコンポーネントにほかのコンポーネントとはまったく異なる動作を与える場合もあり，その場合にはコンポーネントのイベントを新しく定義します。

イベントを定義する手順は次のとおりです。

イベントの発生

ハンドラ型の定義

イベントの宣言

イベントの呼び出し


参照
参照14214

イベントとは何か

標準イベントの実現


イベントの発生
イベントの発生14215

参照	例

まず，何がイベントを発生させるのかという問題があります。この問題は，標準イベントの処理では関係ありませんでしたが，独自のイベントを定義する場合には考慮する必要があります。イベントによっては答えは明白です。たとえば，マウスボタンが押されたことを示すイベントは，ユーザーがマウスの左ボタンを押して，Windows がアプリケーションに WM_LBUTTONDOWN メッセージを送ったときに発生します。コンポーネントはこのメッセージを受け取ると MouseDown メソッドを呼び出します。MouseDown メソッドは，ユーザーが OnMouseDown イベントに結び付けたコードを呼び出します。

しかし，それほど明確に外部の事象と結び付いていないイベントもあります。たとえば，スクロールバーの OnChange イベントは，キー入力，マウスクリック，またはほかのコントロールの変更などさまざまな出来事によって発生します。イベントを定義する際には，それぞれの出来事が適切なイベントを呼び出すように配慮します。


例
例14216

次に，Windows の WM_LBUTTONDOWN メッセージを処理する Tcontrol メソッドの使用例を示します。DoMouseDown はプライベートに宣言されたメソッドで，左，右，中央の各ボタンクリックに対応しています。このメソッドは Windows メッセージのパラメータを MouseDown メソッドに適した値に変換します。

type
  TControl = class(TComponent)

  private

    FOnMouseDown: TMouseEvent;
    procedure DoMouseDown(var Message: TWMMouse; Button: TMouseButton;
      Shift: TShiftState);

    procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;

  protected
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); dynamic;

  end;

...

procedure TControl.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

  if Assigned(FOnMouseDown) then
    FOnMouseDown(Self, Button, Shift, X, Y);	{ 結び付けられているハンドラがある場合にはそれを呼び出す }

end;

procedure TControl.DoMouseDown(var Message: TWMMouse; Button: TMouseButton;
  Shift: TShiftState);

begin

  with Message do
    MouseDown(Button, KeysToShiftState(Keys) + Shift, XPos, YPos);	{ 動的メソッドを呼び出す }

end;

procedure TControl.WMLButtonDown(var Message: TWMLButtonDown);

begin

  inherited;	{ デフォルトの処理を実行 }

  if csCaptureMouse in ControlStyle then MouseCapture := True;

  if csClickEvents in ControlStyle then Include(FControlState, csClicked);

  DoMouseDown(Message, mbLeft, []);	{ マウスボタンが押されたときの汎用メソッドを呼び出す }
end;

2 種類のイベント

状態の変更とユーザーの操作という 2 種類の出来事に対してイベントを用意します。この 2 種類の出来事を処理する仕組みは同じですが，その意味は少し異なります。

ユーザー操作によるイベントは，Windows からのメッセージによって発生します。このイベントは多くの場合，コンポーネントが応答しなければならないようなユーザー操作が行われたことを示します。これに対して，状態の変更によるイベントは，フォーカスの変更のような Windows からのメッセージによっても発生しますが，プロパティやコードによる変更によっても発生します。どのようなイベントを定義するかは，全面的に開発者にまかされています。コンポーネントユーザーがイベントの使用方法をよく理解できるように一貫した適切な定義を行ってください。


参照
参照14217

ハンドラ型の定義

イベントの宣言

イベントの呼び出し


ハンドラ型の定義
ハンドラ型の定義14218

参照

イベントの発生方法について決定したら，次にそのイベントの処理方法を定義します。つまり，イベントの型を決定します。多くの場合，開発者が定義したイベントのハンドラは，簡単な通知を行うものかイベント独自の型を持つものです。また，ハンドラから情報を取得することもできます。

単純な通知

通知イベントとは，特定のイベントが発生したことを告げるだけのイベントで，発生した時期や場所についての具体的な情報は伴いません。通知イベントには TNotifyEvent 型を使用します。TNotifyEvent は，唯一のパラメータとしてイベントの発生元を持つだけです。このため，通知イベントのハンドラがそのイベントから得られる情報は，発生したイベントの種類と，そのイベントはどのコンポーネントで発生したのかということだけです。たとえば，クリックイベントは通知イベントです。クリックイベントのハンドラで利用できる情報は，クリックが発生したということと，どのコンポーネントがクリックされたかということだけです。

通知は一方通行です。たとえば，フィードバックを提供したり，通知イベントのそれ以上の処理を防止させるようなメカニズムは備えていません。

イベント独自のハンドラ

場合によっては，どのイベントがどのコンポーネントに対して発生したかという情報だけでは十分ではないことがあります。たとえば，キーが押されたことを示すイベントの場合，おそらくハンドラはユーザーがどのキーを押したのか知りたいはずです。このような場合には，イベントに関する必要な情報をパラメータとして含むハンドラが必要です。

メッセージによってイベントが発生した場合には，多くの場合メッセージのパラメータがそのままイベントのハンドラに渡されます。

ハンドラからの情報を返す方法

すべてのイベントハンドラは手続きなので，ハンドラから情報を返す場合は var パラメータを使用します。ユーザーのハンドラを実行した後，返された情報によって，イベントを処理する方法やイベントを処理するかどうかを決定できます。

たとえば，すべてのキーイベント (OnKeyDown, OnKeyUp, OnKeyPress) は，var パラメータ Key にキーを示す値を渡します。イベントハンドラで Key を変更すると，アプリケーションはその変更された値を受け取ります。このような方法で，たとえば入力された文字を大文字に変換できます。


参照
参照14219

イベントの発生

イベントの宣言

イベントの呼び出し


イベントの宣言
イベントの宣言14220

参照

イベントハンドラの型を決定したら，次にそのイベントのメソッドポインタとプロパティを宣言します。ユーザーにわかりやすいように，イベントにはその機能を表すような説明的な名前を付けます。なるべく，同じようなイベントには一貫性のある名前を付けます。

「On」で始まるイベント名

Delphi の標準イベントの名前はすべて「On」で始まりますが，これはコンパイラにとって必須ではありません。オブジェクトインスペクタは，プロパティの型によってそのプロパティがイベントかどうかを判断します。すべてのメソッドポインタプロパティはイベントとみなされ，［Events］ページに表示されます。

ただし，コンポーネントユーザーはイベントに「On」で始まるアルファベットの名前が付いていることに慣れています。それ以外の名前を使用するとユーザーが混乱する可能性があります。


参照
参照14221

イベントの発生

ハンドラ型の定義

イベントの呼び出し


イベントの呼び出し
イベントの呼び出し14222

参照

一般に，イベントの呼び出しはできるだけ集中させます。つまり，仮想メソッドを 1 つ作成して，ユーザーのイベントハンドラが存在する場合はそれを呼び出し，必要なデフォルトの処理を行います。

イベントの呼び出しが 1 箇所で行われていれば，開発したコンポーネントから新しいコンポーネントを派生させる場合，イベントを呼び出す場所を探す負担が軽減されます。1 つのメソッドをオーバーライドするれば，イベントの処理をカスタマイズできるからです。

イベントを呼び出す場合は，次の 2 つのことについても考慮します。

空のハンドラも有効であること

ユーザーがデフォルトの処理方法をオーバーライドできること


参照
参照14223

イベントの発生

ハンドラ型の定義

イベントの宣言


空のハンドラも有効であること
空のハンドラも有効であること14224

参照	例

空のイベントハンドラによってエラーが発生することのないようにしてください。つまり，コンポーネントの動作がユーザーのイベントハンドラからの特定の応答に依存しないようにしてください。具体的には，空のハンドラはハンドラがもともと存在しない場合と同じ結果をもたらすようにします。

コンポーネントがユーザーに対して，特定の方法での使用を要求しないようにします。コンポーネントユーザーは，イベントハンドラの処理には制約がないものと考えているわけです。


例
例14225

空のハンドラは，ハンドラがない場合と同様に動作するようにします。ユーザーのハンドラを呼び出すコードは，次のようになります。

if Assigned(OnClick) then OnClick(Self);
{ デフォルトの処理を実行 }

次のようなコードは記述しないでください。

if Assigned(OnClick) then OnClick(Self)
else { デフォルトの処理を実行 };


参照
参照14226

ユーザーがデフォルトの処理方法をオーバーライドできること


ユーザーがデフォルトの処理方法をオーバーライドできること
ユーザーがデフォルトの処理方法をオーバーライドできること14227

参照	例

ある種のイベントでは，ユーザーがデフォルトの処理方法を置き換えたり，すべての応答を抑止する場合があります。それを可能にするためには，ハンドラに var パラメータを渡して，ハンドラから返された値を検査します。

この方法は，空のハンドラはハンドラが存在しない場合と同じ結果をもたらすという方針と矛盾しません。空のハンドラでは var パラメータの値は変更されないので，空のハンドラが呼び出された後は，常にデフォルトの処理が行われます。


例
例14228

キーが押されたことを示すイベントの処理では，ユーザーは var パラメータ Key にヌル文字 (#0) を設定することで，コンポーネントのデフォルトのキー入力処理を抑止できます。これを実現するコードは次のとおりです。

if Assigned(OnKeyPress) then OnKeyPress(Self, Key);
if Key <> #0 then	{ デフォルトの処理を実行 };

Windows メッセージを処理する必要があるため，実際のコードはこれとは少し異なりますが，基本的な論理は同じです。デフォルトでは，コンポーネントはユーザーのハンドラを (存在する場合は) 呼び出してから，標準の処理を実行します。ユーザーのハンドラが Key にヌル文字を設定した場合には，コンポーネントはそのデフォルト処理を行いません。


参照
参照14229

空のハンドラも有効であること


メソッドの作成
メソッドの作成14230

参照

コンポーネントのメソッドは，ほかのオブジェクトのメソッドと同じです。コンポーネントメソッドとは，コンポーネントオブジェクトの構造に組み込まれた手続きや関数です。基本的には，コンポーネントメソッドで行えることには何の制約もありません。ただし，Delphi では標準的なメソッドを作成するための方法がいくつか定められています。

コンポーネントメソッドの開発について以下のことを説明します。

相互依存を避ける

メソッドの命名

メソッドの保護の設定

仮想メソッドの作成

メソッドの宣言

一般に，コンポーネントを使用するためにユーザーが呼び出さなければならないメソッドの数は，できるだけ少なくします。また，開発者がメソッドとして実現しようと考える機能の多くは，たいていの場合プロパティにカプセル化できます。プロパティを使用すれば Delphi 環境に適したインターフェースが作成され，ユーザーは設計時にプロパティを操作できます。


参照
参照14231

コンポーネント作成の概要

コンポーネント開発者のための OOP

プロパティの作成

イベントの作成

コンポーネント内のグラフィックの使い方

メッセージの処理

コンポーネントの登録


相互依存を避ける
相互依存を避ける14232

参照

コンポーネントを使用する際の前提条件が多くなると，コンポーネントユーザーに負担がかかります。コンポーネントユーザーがコンポーネントに対して，いつでもどのようなことでも行えるようにコンポーネントを設計します。この原則に従えない場合もありますが，できるだけこの原則に近づくことを目標とします。

相互依存を招くようなメソッドをすべて提示することは不可能ですが，代表的な例を以下に示します。

ユーザーがコンポーネントを使用するときに必ず呼び出さなければならないメソッド

特定の順序で呼び出さなければならないメソッド

あるイベントやメソッドが無効になる状態やモードを招くメソッド

相互依存がある場合，不適切な状態から確実に抜け出せる方法を用意します。たとえば，あるメソッドの呼び出しがコンポーネントの状態を変化させ，その状態ではほかのメソッドの呼び出しが無効となるような場合には，状態を修正するための別のメソッドを用意しておきます。少なくとも，ユーザーが無効なメソッドを呼び出した場合に例外が生成されるようにしておきます。例外については『ユーザーズガイド』第７章参照してください。

つまり，コードの各部分が相互に依存する場合には，そのコードが間違った方法で使用されても，ユーザーが問題を抱え込まないように配慮します。ユーザーがコンポーネントの相互依存関係に配慮しなかった場合でも，クラッシュするのではなく警告メッセージを表示するなどの方法を採ります。


参照
参照14233

メソッドの命名

メソッドの保護の設定

仮想メソッドの作成

メソッドの宣言


メソッドの命名
メソッドの命名14234

参照

Delphi では，メソッドやパラメータに付ける名前に制約はありません。しかし，いくつかの命名規則に従えば，コンポーネントユーザーにとってわかりやすいメソッドを作成できます。開発したコンポーネントが広く使用されるかどうかは，コンポーネントの設計にかかっています。

自分自身や小さなグループ内で使用するコードを開発する場合は，命名方法についてはそれほど考慮しないかもしれません。しかし，そのコードに不案内な，またはそもそもコーディング自体に不案内なユーザーによって使用されるコンポーネントを開発する場合は，メソッドに明確なわかりやすい名前を付けることが大切です。

メソッドにわかりやすい名前を付ける方法を以下に示します。

説明的な名前にする

PasteFromClipboard のような名前は，Paste や PFC のような短い名前よりもはるかにわかりやすい名前です。

手続きには動作を表す名前を付ける

手続きの名前には，動作を表す動詞を使用します。たとえば，ReadFileNames は DoFiles よりはるかにわかりやすい名前です。

関数には返す値を表す名前を付ける

プログラマ本人にとっては，X という名前の関数が水平方向の位置を返すことは明白かもしれませんが，GetHorizontalPosition のような名前にすれば，すべてのユーザーが理解できます。

最後に，そのメソッドが本当に必要かどうか再考します。メソッド名に動詞が入っているかどうかで，その判断が可能です。名前に動詞が入っていないメソッドを数多く作成した場合は，そのメソッドをプロパティで実現できないかどうか考慮します。


参照
参照14235

相互依存を避ける

メソッドの保護の設定

仮想メソッドの作成

メソッドの宣言


メソッドの保護の設定
メソッドの保護の設定14236

参照

フィールド，メソッド，プロパティなどを含め，オブジェクトの各部分には保護レベルを設定できます。この点については，アクセスの制御で説明しています。あるメソッドに対して保護レベルを選択するのは容易です。

一般には，コンポーネントに記述するメソッドは public か protected のどちらかにします。ただし例外として，プロパティを実現するメソッドは常に private にします。これ以外では，メソッドを private にすることはほとんどありません。private にするのは，メソッドがそのコンポーネントに特有のもので，派生したコンポーネントからのアクセスさえ禁止するような場合です。

メモ:	一般に，イベントハンドラ以外のメソッドを published として宣言する理由はありません。ユーザーにとっては，published として宣言したメソッドは public として宣言したメソッドと同じです。

public にするメソッド

protected にするメソッド

private にするメソッド


参照
参照14237

相互依存を避ける

メソッドの命名

仮想メソッドの作成

メソッドの宣言


パブリックにするメソッド
public にするメソッド14238

参照

コンポーネントユーザーが呼び出すメソッドはすべて public として宣言します。メソッド呼び出しの多くはイベントハンドラで発生します。したがって，メソッドがシステムリソースを独占したり，Windows をユーザーに応答できないような状態にすることは適切ではありません。

メモ:	コンストラクタとデストラクタは，常に public にします。


参照
参照14239

protected にするメソッド

private にするメソッド


protected にするメソッド
protected にするメソッド14240

参照

コンポーネントの内部で使用するメソッドは，すべて protected にします。そうすれば，ユーザーが誤ってそのメソッドを呼び出すことを防止できます。protected として宣言したメソッドは，ユーザーコードからは呼び出せませんが，下位オブジェクトからは呼び出せます。

たとえば，一定のデータが設定されていることを前提とするメソッドがあるとします。メソッドをパブリックに設定した場合は，データが設定される前にユーザーがそのメソッドを呼び出す可能性があります。これに対して，メソッドをプロテクトに設定した場合は，ユーザーはそのメソッドを直接呼び出せません。特定の状態を前提とするメソッドはプロテクトとして宣言し，ほかのパブリックなメソッドであらかじめデータを設定してからそのプロテクトメソッドを呼び出すようにします。


参照
参照14241

public にするメソッド

private にするメソッド


private にするメソッド
private にするメソッド14242

参照

プロパティを実装するメソッドは，常にプライベートに設定しておきます。プロパティのデータを操作するメソッドは，ユーザーによって呼び出されることはないからです。ユーザーは，プロパティ自体へのアクセスをとおしてのみ，プロパティのデータを操作できます。プロパティをパブリックにし，プロパティの実装メソッドをプライベートにすることで，それが保証されます。

それでも，下位オブジェクトがこうしたメソッドの実装をオーバーライドすることはできます。その場合は，プロパティを実装するメソッドをオーバーライドするのではなく，継承したプロパティの値にプロパティ自体をとおしてアクセスするようにします。


参照
参照14243

public にするメソッド

protected にするメソッド


仮想メソッドの作成
仮想メソッドの作成14244

参照

Delphi コンポーネントの仮想メソッドは，ほかのオブジェクトの仮想メソッドと同じです。仮想メソッドでは，同一のメソッド呼び出しによって，さまざまなオブジェクト型に固有のコードを実行させることができます。

ユーザーによって直接使用されるコンポーネントでは，たいていの場合すべてのメソッドは静的メソッドで実装できます。しかし，コンポーネント開発者によって派生元として使用されるコンポーネントのようにより抽象的なコンポーネントでは，メソッドを仮想メソッドとして実装することを考慮します。仮想メソッドを使用すれば，そのコンポーネントから派生されたコンポーネントで，継承した仮想メソッドをオーバーライドできます。


参照
参照14245

相互依存を避ける

メソッドの命名

メソッドの保護の設定

メソッドの宣言


メソッドの宣言
メソッドの宣言14246

参照	例

コンポーネントメソッドの宣言方法は，一般のオブジェクトメソッドの宣言方法と同じです。

コンポーネントに新しいメソッドを宣言する手順は次のとおりです。

コンポーネントのオブジェクト型宣言に宣言を追加する

コンポーネントのユニットの実現部でメソッドを実装する


例
例14247

2 つの新しいメソッド (静的プロテクトメソッドと仮想パブリックメソッド) を定義するコンポーネントのコード例を次に示します。

type
  TSampleComponent = class(TControl)
  protected
    procedure MakeBigger;	{ 静的プロテクトメソッドを宣言 }

  public
    function CalculateArea: Integer; virtual;	{ 仮想パブリックメソッドを宣言 }
  end;

...

implementation
...
procedure TSampleComponent.MakeBigger;	{ 最初のメソッドを実装 }
begin
  Height := Height + 5;

  Width := Width + 5;
end;

function TSampleComponent.CalculateArea: Integer;	{ 2 番目のメソッドを実装 }
begin
  Result := Width * Height;
end;


参照
参照14248

相互依存を避ける

メソッドの命名

メソッドの保護の設定

仮想メソッドの作成


コンポーネントにおけるグラフィックの使い方
コンポーネントにおけるグラフィックの使い方14249

参照

Windows では，デバイスに依存しないグラフィックを作成するために，強力なグラフィックデバイスインターフェース (GDI) が提供されています。ただし，プログラマが GDI を使用する場合は，グラフィックリソースの管理など数多くの作業が伴います。その結果プログラマは，本来の目的であるグラフィックの作成ではない作業に多くの時間を費やすことになります。

Delphi は開発者にかわって，GDI の使用に伴う退屈な作業をすべて行います。そのため開発者は，見失ったハンドルや未解放のリソースなどにわずらわされることもなく，生産的な作業に時間を費やせます。Delphi が無味乾燥な作業を処理するので，開発者は生産的で創造的な作業に専念できます。

必要ならば，Delphi アプリケーションは Windows API のどの GDI 関数でも直接呼び出せます。しかし，Delphi はグラフィック関数をカプセル化し，はるかに生産的なグラフィック作成方法を提供します。

Delphi でのグラフィック処理について重要な項目を以下に示します。

Delphi グラフィックの概要

キャンバスの使い方

画像の使い方

オフスクリーンビットマップ

変更への応答


参照
参照14250

コンポーネント作成の概要

コンポーネント開発者のための OOP

プロパティの作成

イベントの作成

メソッドの作成

メッセージの処理

コンポーネントの登録


Delphi グラフィックの概要
Delphi グラフィックの概要14251

参照	例

Delphi では，Windows GDI がいくつかのレベルでカプセル化されています。コンポーネント開発者にとって重要なのは，コンポーネントがどのようにして画面にイメージを表示するかということです。GDI 関数を直接呼び出す場合には，まずデバイスコンテキストのハンドルが必要です。デバイスコンテキストには，ペン，ブラシ，フォントなどの多様な描画ツールを選択しておきます。グラフィックイメージを描画した後は，破棄する前にデバイスコンテキストを元の状態に復元しておかなければなりません。

Delphi では，そうした細かい処理は必要ありません。Delphi のコンポーネントには，グラフィック用の単純で完備したインターフェース，つまり Canvas プロパティがあります。キャンバスは，有効なデバイスコンテキストを用意し，使用後にはそのデバイスコンテキストを解放します。またキャンバスは，現在のペン，ブラシ，フォントを示す独自のプロパティを持っています。

キャンバスがすべてのリソースを開発者にかわって管理するので，開発者はペンハンドルなどの作成，選択，解放に気を使う必要がなくなります。使用するペンの種類をキャンバスに指示しておけば，その後の作業はキャンバスが処理します。

Delphi はリソースを後の使用に備えてキャッシュに入れておくので，繰り返し行う処理のスピードが大きく向上します。これも，グラフィックリソースの管理を Delphi に任せることの効果です。たとえば，あるペンツールを繰り返し作成し，使用し，破棄するプログラムの場合，そのツールを使用するたびに同じ手順を繰り返します。一方，Delphi では，繰り返し使用されるツールはキャッシュにある公算が高いため，Delphi はツールを再作成するかわりに既存のツールを再利用できます。


例
例14252

以下の 2 つの簡単なコード例は，Delphi のグラフィックコードがどれほど単純なものかを示しています。最初のコードは，ObjectWindows を使用して開発したアプリケーションです。標準の GDI 関数によって，青色の枠を持つ黄色の楕円をウィンドウに描画しています。2 番目のコードは，Delphi を使用して開発したアプリケーションです。キャンバスを使用して，同じ楕円を描画しています。

procedure TMyWindow.Paint(PaintDC: HDC; var PaintInfo: TPaintStruct);
var
  PenHandle, OldPenHandle: HPEN;
  BrushHandle, OldBrushHandle: HBRUSH;

begin
  PenHandle := CreatePen(PS_SOLID, 1, RGB(0, 0, 255));	{ 青色のペンを作成 }

  OldPenHandle := SelectObject(PaintDC, PenHandle);	{ DC に青色のペンを使用するように指示 }

  BrushHandle := CreateSolidBrush(RGB(255, 255, 0));	{ 黄色のブラシを作成 }

  OldBrushHandle := SelectObject(PaintDC, BrushHandle);	{ DCに黄色のブラシを使用するように指示 }

  Ellipse(HDC, 10, 10, 50, 50);	{ 楕円を描画 }

  SelectObject(OldBrushHandle);	{ 元のブラシを復元 }

  DeleteObject(BrushHandle);	{ 黄色のブラシを削除 }

  SelectObject(OldPenHandle);	{ 元のペンを復元 }

  DeleteObject(PenHandle);	{ 青色のペンを廃棄 }
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
  with Canvas do
  begin
    Pen.Color := clBlue;	{ ペンを青色にする }

    Brush.Color := clYellow;	{ ブラシを黄色にする }

    Ellipse(10, 10, 50, 50);	{ 楕円を描画 }
  end;
end;


参照
参照14253

キャンバスの使い方

画像の使い方

オフスクリーンビットマップ

変更への応答


キャンバスの使い方
キャンバスの使い方14254

参照

キャンバスオブジェクトは，いくつかのレベルで Windows グラフィックをカプセル化しています。線，画像，テキストを描画するための高レベルな関数から，キャンバスの描画機能を設定するための中間レベルのプロパティ，さらに Windows GDI への低レベルなアクセス方法まであります。

以下の表に，キャンバスの描画機能を要約して示します。

レベル	動作	ツール

高レベル	線や図形の描画	MoveTo, LineTo, Rectangle, Ellipse などのメソッド

テキストの表示と寸法の取得	TextOut, TextHeight, TextWidth, TextRect の各メソッド

領域の塗りつぶし	FillRect メソッドと FloodFill メソッド

中間レベル	テキストとグラフィックのカスタマイズ	Pen, Brush, Font の各プロパティ

ピクセルの操作	Pixels プロパティ

イメージのコピー，マージ	Draw, StretchDraw, BrushCopy, CopyRect の各メソッド，CopyMode プロパティ

低レベル	Windows GDI 関数の呼び出し	Handle プロパティ


参照
参照14255

Delphi グラフィックの概要

画像の使い方

オフスクリーンビットマップ

変更への応答


画像の使い方
画像の使い方14256

参照

Delphi で行うグラフィック作業のほとんどは，コンポーネントやフォームのキャンバスへ直接的に描画する作業です。しかし Delphi では，ビットマップ，メタファイル，アイコンなどのスタンドアロングラフィックイメージも処理できます。この場合，パレットは自動的に管理できます。

Delphi の画像処理について以下の 3 つの項目を説明します。

画像, グラフィック, キャンバス

ファイルに格納されたグラフィック

パレットの使い方


参照
参照14257

Delphi グラフィックの概要

キャンバスの使い方

オフスクリーンビットマップ

変更への応答


画像, グラフィック, キャンバス
画像, グラフィック, キャンバス14258

参照

以下に示すように，Delphi にはグラフィックを扱う 3 種類のオブジェクトがあります。

キャンバス。フォーム，グラフィックコントロール，ビットマップ，プリンタのビットマップ描画表面を表します。キャンバスはスタンドアロンのオブジェクトではなく，常にほかのオブジェクトのプロパティとして存在します。

グラフィック。ビットマップ，アイコン，メタファイルなど，通常はファイルかリソースに格納されているグラフィックイメージを表します。各イメージに対応して，TBitmap, TIcon, Tmetafile の各オブジェクト型があります。この 3 つの型はともに Tgraphic 型から派生しています。また， 開発者は独自のグラフィックオブジェクトを定義できます。グラフィックに最低限共通の標準的なインターフェースが Tgraphic に定義されているので，アプリケーションからはさまざまな種類のグラフィックを容易に使用できます。

画像。グラフィックのコンテナです。グラフィックのコンテナは，すべてのグラフィックオブジェクト型をその中に格納できます。ビットマップ，アイコン，メタファイル，ユーザー定義グラフィック型は，すべて Tpicture 型のフィールドに格納できます。アプリケーションは，画像オブジェクトに格納されたさまざまなグラフィック型を，同一の方法で操作できます。たとえば，イメージコントロールは Picture という Tpicture 型のプロパティを持っており，それによってさまざまなグラフィック型のイメージを表示します。

画像オブジェクトは常にグラフィックオブジェクトを含んでおり，また，グラフィックオブジェクトはキャンバスオブジェクトを含む場合があります (Tbitmap は，キャンバスオブジェクトを含む唯一の標準グラフィックオブジェクトです)。通常，画像オブジェクトを扱う場合は，グラフィックオブジェクトのうち Tpicture をとおして操作できる部分だけを使用します。グラフィックオブジェクト固有の細部を操作する場合には，その図形オブジェクトの Graphic プロパティを使用します。


参照
参照14259

ファイルに格納されたグラフィック

パレットの使い方


ファイルに格納されたグラフィック
ファイルに格納されたグラフィック14260

参照	例

Delphi のすべての画像とグラフィックは，ファイルからイメージを読み込んだり，再度そのファイル (またはほかのファイル) に保存することができます。画像のイメージの読み込みと保存はいつでも行えます。

イメージをファイルから画像に読み込むには，その画像オブジェクトの LoadFromFile メソッドを呼び出します。

イメージを画像からファイルに保存するには，その画像オブジェクトの SaveToFile メソッドを呼び出します。

LoadFromFile と SaveToFile は，唯一のパラメータとしてファイル名を受け取ります。LoadFromFile は，ファイル名の拡張子によって読み込むグラフィックオブジェクトの種類を判定します。SaveToFile は，保存するグラフィックオブジェクト型に合わせてファイルの種類を決定します。


例
例14261

ビットマップをイメージコントロールの画像に読み込むには，次のように，ビットマップファイルの名前を画像オブジェクトの LoadFromFile メソッドに渡します。

procedure TForm1.LoadBitmapClick(Sender: TObject);
begin
  Image1.Picture.LoadFromFile('RANDOM.BMP');
end;

画像オブジェクトは，.BMP をビットマップファイルの拡張子として認識し，グラフィックを Tbitmap として作成してから，そのグラフィックの LoadFromFile メソッドを呼び出します。このグラフィックはビットマップなので，LoadFromFile メソッドはイメージをビットマップとしてファイルから読み込みます。


参照
参照14262

画像, グラフィック, キャンバス

パレットの使い方


パレットの使い方
パレットの使い方14263

参照

Delphi は，パレットを使用するデバイスでは，自動的にパレットの実現をサポートします。パレットを持つコントロールでは，Tcontrol から継承した 2 つのメソッドによって，Windows がそのパレットを扱う方法を制御できます。

コントロールのパレットについて，以下の 2 つの項目を説明します。

コントロール用のパレットを指定する方法

パレットの変更に対応する方法

ほとんどのコントロールはパレットとは関係ありません。しかし，イメージコントロールなど，ある種のグラフィックイメージを持つコントロールは，確実に適切な外観で表示されるように，Windows やスクリーンデバイスドライバとやり取りする場合があります。Windows では，この処理をパレットの「実現」と呼びます。

パレットの実現では，最前面のウィンドウのすべてのパレット色はそのまま表示されます。背面のウィンドウのパレット色も可能な限りそのまま表示されますが，表示できなかった色については，「実際の」パレットの最も近い色にマッピングされます。Windows は，ウィンドウが互いに前後に移動するのに応じて，継続的にパレットの実現処理を行っています。

メモ:	Delphi 自身は，ビットマップ以外については，パレットの作成や操作に対するサポートを提供していません。しかし，パレットハンドルを取得すれば Delphi コントロールがそれを管理できます。


参照
参照14264

画像, グラフィック, キャンバス

ファイルに格納されたグラフィック


コントロール用のパレットの指定
コントロール用のパレットの指定14265

参照	例

コントロールには，パレットを割り当てることができます。

コントロールにパレットを指定するには，そのコントロールの GetPalette メソッドをオーバーライドして，パレットのハンドルを返します。

コントロールにパレットを指定すると，以下の 2 つの処理が行われます。

1.	アプリケーションに，コントロールのパレットは実現の必要があることを通知する

2.	そのパレットを実現に使用するパレットとして指定する


例
例14266

コントロールのパレットを使用する例として，イメージコントロール Timage があります。このイメージコントロールは，そこに格納されている画像がパレットを持つ場合は，それを取得します。Timage は GetPalette をオーバーライドして，画像のパレットを返します。

type
  TImage = class(TGraphicControl)

  protected
    function GetPalette: HPALETTE; override;	{ メソッドをオーバーライド }
  ...
  end;

...

function TImage.GetPalette: HPALETTE;
begin
  Result := 0;	{ デフォルトの戻り値は，パレットなしを示す }
  if FPicture.Graphic is TBitmap then	{ ビットマップだけがパレットを持つ }
    Result := TBitmap(FPicture.Graphic).Palette;	{ 使用可能な場合はそれを使用 }
end;


参照
参照14267

パレット変更への応答


パレット変更への応答
パレット変更への応答14268

参照

コントロールが GetPalette をオーバーライドしてパレットを指定した場合， Delphi は自動的に，Windows からのパレットメッセージに対して応答します。パレットメッセージを処理するメソッドは PaletteChanged です。通常は，PaletteChanged のデフォルトの動作を変更する必要はありません。

PaletteChanged は，コントロールのパレットを前景と背景のどちらで実現するかを決定します。Windows によるパレットの実現では，前景パレットを最前面のウィンドウが使用し，背景パレットはほかのウィンドウが使用します。しかし，Delphi はそのうえに，コントロールのパレットを1つのウィンドウ内でタブ順に実現します。タブ順の先頭にないコントロールに前景パレットを使用させる場合だけ，デフォルトの動作をオーバーライドします。


参照
参照14269

コントロール用のパレットの指定


オフスクリーンビットマップ
オフスクリーンビットマップ14270

参照

複雑なグラフィックイメージを描く際に Windows プログラミングでよく使用されるテクニックとして，オフスクリーンビットマップを作成し，そのビットマップ上にイメージを描画してから，完成したイメージを最終目標である画面にコピーする方法があります。画面に直接描画すると画面がちらつく場合がありますが，オフスクリーンイメージを使用すればこのちらつきは減少します。

また，Delphi のビットマップオブジェクトは，通常リソースやファイルのビットマップイメージを表しますが，オフスクリーンイメージとしても使用できます。

オフスクリーンビットマップを使用して行う作業について，次の 2 つの項目を説明します。

オフスクリーンビットマップの作成と管理

ビットマップイメージのコピー


参照
参照14271

Delphi グラフィックの概要

キャンバスの使い方

画像の使い方

変更への応答


オフスクリーンビットマップの作成と管理
オフスクリーンビットマップの作成と管理14272

参照	例

複雑なグラフィックイメージを作成する場合は通常，画面に表示されているキャンバスに直接描画する方法は採りません。フォームやコントロールのキャンバスに描画するかわりに，ビットマップオブジェクトを作成し，そのキャンバスに描画してから，仕上がったイメージをオンスクリーンのキャンバスにコピーします。

オフスクリーンビットマップは，グラフィックコントロールの Paint メソッドでよく使用されます。ほかの一時オブジェクトと同様，ビットマップを次のように try..finally ブロックで保護します。

type
  TFancyControl = class(TGraphicControl)
  protected
    procedure Paint; override;	{ Paint メソッドをオーバーライド }
  end;

procedure TFancyControl.Paint;
var
  Bitmap: TBitmap;	{ オフスクリーンビットマップ用の一時変数 }
begin
  Bitmap := TBitmap.Create;	{ ビットマップオブジェクトを作成 }

  try
    { ビットマップ上に描画 }

    { 結果をコントロールのキャンバスにコピー }

  finally
    Bitmap.Free;	{ ビットマップオブジェクトを廃棄 }
  end;
end;


例
例14273

オフスクリーンビットマップに複雑なイメージを描画する例については，コンポーネントパレットの［Samples］ページの Gauge コントロールのソースコードを参照してください。このゲージコントロールは，オフスクリーンビットマップにさまざまな図形やテキストを描画して，画面にコピーします。ゲージコントロールのソースコードは，サブディレクトリ SOURCE\SAMPLES のファイル GAUGES.PAS にあります。


参照
参照14274

ビットマップイメージのコピー


ビットマップイメージのコピー
ビットマップイメージのコピー14275

参照

あるキャンバスからほかのキャンバスへイメージをコピーする場合，4 つの方法があります。各方法に応じて，それぞれのメソッドを呼び出します。

以下の表に，キャンバスオブジェクトのイメージコピーメソッドの要約を示します。

処理	メソッド

グラフィック全体をコピー	Draw

グラフィックをコピーしてサイズ変更	StretchDraw

キャンバスの一部をコピー	CopyRect

ラスター演算を適用してビットマップをコピー	BrushCopy


参照
参照14276

オフスクリーンビットマップの作成と管理


変更への応答
変更への応答14277

参照	例

キャンバスや，キャンバスが所有するオブジェクト (ペン，ブラシ，フォント) など，すべてのグラフィックオブジェクトには，オブジェクトの変更に応答するためのイベントがあります。このイベントを使用すれば，コンポーネント (またはコンポーネントを使用しているアプリケーション) を変更に対してイメージの左再描画によって応答させることができます。

グラフィックオブジェクトがコンポーネントの設計時インターフェースの一部としてパブリッシュに宣言されている場合は，そのオブジェクトの変更に応答することが特に重要です。そうしないと，コンポーネントの設計時の外観がオブジェクトインスペクタのプロパティと一致しません。

グラフィックオブジェクトの変更に応答するには，オブジェクトの OnChange イベントにメソッドを指定します。


例
例14278

次に示す図形コンポーネントでは，図形を描画するペンやブラシを表すプロパティは，パブリッシュに設定されています。コンポーネントのコンストラクタは，各プロパティの OnChange イベントにメソッドを指定し，ペンやブラシが変更されたときにイメージを更新するようにしています。

type
  TShape = class(TGraphicControl)
  public
    procedure StyleChanged(Sender: TObject);
  end;

...

implementation

...

constructor TShape.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);	{ 必ず継承したコンストラクタを呼び出す！ }

  Width := 65;

  Height := 65;

  FPen := TPen.Create;	{ ペンを作成 }

  FPen.OnChange := StyleChanged;	{ OnChange イベントにメソッドを指定 }

  FBrush := TBrush.Create;	{ ブラシを作成 }

  FBrush.OnChange := StyleChanged;	{ OnChangeイベントにメソッドを指定 }
end;

procedure TShape.StyleChanged(Sender: TObject);
begin
  Invalidate;	{ コンポーネントを消去して再描画 }
end;


参照
参照14279

Delphi グラフィックの概要

キャンバスの使い方

画像の使い方

オフスクリーンビットマップ


メッセージの処理
メッセージの処理14280

参照

従来の Windows プログラミングでは，Windows がアプリケーションに送ってくるメッセージの処理が重要でした。Delphi は開発者にかわって，一般的なメッセージの大半を処理します。ただし，コンポーネントを作成する場合，Delphi が処理しないメッセージを扱うときは，開発者がそのメッセージを処理しなければなりません。また，開発者が独自のメッセージを作成して処理する場合もあります。

この章では，メッセージについて以下の 3 項目を説明します。

メッセージ処理機構

メッセージ処理方法の変更

新しいメッセージハンドラの作成


参照
参照14281

コンポーネント作成の概要

コンポーネント開発者のための OOP

プロパティの作成

イベントの作成

メソッドの作成

コンポーネントにおけるグラフィックの使い方

コンポーネントの登録


メッセージ処理機構
メッセージ処理機構14282

参照

すべての Delphi オブジェクトは，メッセージ処理メソッドまたはメッセージハンドラと呼ばれる，メッセージ処理のためのメカニズムを備えています。メッセージハンドラの基本的な構造は次のとおりです。つまり，オブジェクトがメッセージを受け取ると，そのメッセージに対応するメソッドが呼び出されることで，メッセージがディスパッチされます。対応するメソッドが存在しないメッセージについては，デフォルトのハンドラが使用されます。

次の図は，メッセージディスパッチ機構を示します。

Delphi コンポーネントライブラリのメッセージディスパッチ機構は，特定のオブジェクトに向けられたすべての Windows メッセージ (ユーザー定義メッセージを含む) をメソッド呼び出しに変換します。開発者はメッセージディスパッチ機構自体を変更する必要はありません。必要なのは，メッセージ処理メソッドを作成することだけです。


参照
参照14283

メッセージ処理方法の変更

新しいメッセージハンドラの作成


Windows メッセージの内容
Windows メッセージの内容14284

参照

Windows のメッセージは，いくつかのフィールドを持つデータレコードです。最も重要なフィールドは，メッセージを識別するための整数値のフィールドです。Windows では多くのメッセージが定義されていますが，Messages ユニットにはそのすべての識別子が宣言されています。メッセージには，ほかに 2 つのパラメータフィールドと1つの結果フィールドがあります。

この 2 つのパラメータには，それぞれ 16 ビット値および 32 ビット値が入ります。Windows  のコードでは多くの場合，各パラメータの名前はそれぞれ「word parameter」を意味する wParam と，「long parameter」を意味する lParam です。1つのパラメータが 2 つ以上の情報を持つこともあるので，たとえば，lParamHi によって lParam パラメータの上位ワードを取得する，というような処理が行われることもあります。

従来，Windows プログラマにはパラメータの内容についての知識が必要でした。最近になって，マイクロソフト社はパラメータに名前を付けました。このいわゆる「メッセージクラッキング」によって，それぞれのメッセージが伴うパラメータの内容が理解しやすくなりました。たとえば，WM_KEYDOWN メッセージのパラメータは現在では VKeyやKeyData と表されており，wParam や lParam と表すよりもわかりやすくなりました。

Delphi では，メッセージの種類に対応するレコード型をそれぞれ定義することにより，各パラメータにわかりやすい名前を付けています。たとえば，マウスメッセージでは，マウスイベントの発生した x 座標と y 座標が lParam に入ります。つまり，一方の座標が上位ワードに，他方の座標が下位ワードに入っています。しかし，マウスメッセージレコードを使用すれば，各座標がどちらのワードに入っているのかを考える必要はありません。なぜなら，lParamLo と lParamHi のかわりに，Xpos と Ypos という名前で各座標を参照できるからです。


参照
参照14285

メッセージパラメータの使い方

メッセージをディスパッチする方法


メソッドをディスパッチする方法
メッセージをディスパッチする方法14286

参照

アプリケーションがウィンドウを作成する場合は，Windows カーネルにウィンドウプロシージャを登録します。このウィンドウプロシージャは，ウィンドウに対して送られるメッセージを処理するルーチンです。ウィンドウプロシージャは通常，そのウィンドウが処理する各メッセージをエントリとする巨大な case 文になります。新しい種類のウィンドウを作成するたびに，完全なウィンドウプロシージャを作成しなければなりません。なお，ここでは「ウィンドウ」という用語で，ウィンドウ，コントロールなど，画面に表示されるさまざまなものを表しています。

Delphi では，以下に示す方法でメッセージのディスパッチが単純化されています。

すべてのコンポーネントは，完全なメッセージディスパッチ機構を継承する

ディスパッチ機構にはデフォルトの処理方法がある。独自の処理を行うメッセージに対してのみ新しいハンドラを定義する

メッセージ処理を少しだけ変更して残りの処理を継承メソッドにまかせることができる

このメッセージディスパッチ機構では，任意のメッセージを任意のコンポーネントに任意の時点で安全に送ることができます。コンポーネントがハンドラを持っていないメッセージはデフォルトの方法で処理されます。

メッセージ経路のトレース

Delphi では，アプリケーションの各コンポーネント型のウィンドウプロシージャとして，MainWndProc という名前のメソッドが登録されます。MainWndProc には例外処理ブロックがあります。ここで，Windows からのメッセージレコードを WndProc という仮想メソッドに渡します。また，アプリケーションオブジェクトの HandleException ソッドを呼び出すことですべての例外を処理します。

MainWndProc は静的メソッドで，特定のメッセージに対する処理を行いません。各コンポーネント型はこのメソッドをオーバーライドできるので，カスタマイズは WndProc で行われます。

WndProc メソッドは，処理に影響するような状態について検査し，不要なメッセージを「トラップ」します。たとえば，コンポーネントはマウスのドラッグ中，キーボードイベントを無視します。そのため，TWinControl.WndProc はコンポーネントがドラッグされていないときにのみ，キーボードイベントを次に渡します。最終的に WndProc は，Tobject から継承した静的メソッド Dispatch を呼び出します。Dispatch メソッドは，メッセージを処理するメソッドを決定して呼び出します。

Dispatch は，メッセージをディスパッチする方法を決定するのに，メッセージレコードの Msg フィールドを使用します。コンポーネントがそのメッセージに対するハンドラを定義している場合には，Dispatch はそのメソッドを呼び出します。コンポーネントがそのメッセージに対するハンドラを定義していない場合には，Dispatch は DefaultHandler を呼び出します。


参照
参照14287

メッセージ処理機構

Windows メッセージの内容


メッセージ処理方法の変更
メッセージ処理方法の変更14288

参照

コンポーネントのメッセージ処理方法を変更する前に，本当に変更する必要があるのかどうかを確認してください。Delphi は大部分の Windows メッセージを，コンポーネント開発者とコンポーネントユーザーの両方が処理できるイベントに変換します。たいていの場合は，メッセージ処理の動作を変更するよりも，イベント処理の動作を変更する方が適切です。

メッセージ処理方法を変更するには，メッセージ処理メソッドをオーバーライドします。また，メッセージをトラップすることにより，特定の状況下ではコンポーネントがメッセージを処理しないようにすることもできます。


参照
参照14289

メッセージ処理機構

新しいメッセージハンドラの作成


ハンドラメソッドのオーバーライド
ハンドラメソッドのオーバーライド14290

参照	例

コンポーネントがメッセージを処理する方法を変更するには，そのメッセージに対応するメッセージ処理メソッドをオーバーライドします。コンポーネントがそのメッセージに対応するメソッドを持っていない場合には，メッセージ処理メソッドを新しく宣言します。

メッセージ処理メソッドをオーバーライドするには，オーバーライドするメソッドと同じメッセージインデックスを持つ新しいメソッドをコンポーネントで宣言します。override 指令ではなく message 指令を使用し，一致するメッセージインデックスを指定します。

メソッドの名前も var パラメータの型も，オーバーライドされるメソッドと一致させる必要はありません。一致させるのは，メッセージインデックスだけです。ただし，メッセージ処理メソッドの名前を，それが処理するメッセージを表すように付ければ，コードがわかりやすくなります。


例
例14291

たとえば，コンポーネントの WM_PAINT メッセージの処理をオーバーライドするには，次のように WMPaint メソッドを再宣言します。

type
  TMyComponent = class(...)
    ...
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
  end;


参照
参照14292

メッセージパラメータの使い方

メッセージのトラップ


メッセージパラメータの使い方
メッセージパラメータの使い方14293

参照

メッセージ処理メソッドの実行中，コンポーネントはそのメッセージレコードのすべてのパラメータにアクセスできます。メッセージは常に var パラメータなので，ハンドラは必要な場合にパラメータの値を変更できます。Result フィールドは，変更することの多いパラメータです。Result は，メッセージを送った SendMessage から返される値で，Windows のマニュアルではメッセージの「戻り値」と呼ばれてます。

メッセージ処理メソッドの Message パラメータの型は，メッセージによって変化します。個々のパラメータの名前と意味については，Windows メッセージに関するマニュアルを参照してください。

なんらかの理由で，メッセージパラメータを旧式の名前 (wParam, lParam など) で参照する場合は，Message を Tmessage に型キャストします。Tmessage 型では，メッセージパラメータは旧式の名前で参照されます。


参照
参照14294

Windows メッセージの内容

ハンドラメソッドのオーバーライド

メッセージのトラップ


メッセージのトラップ
メッセージのトラップ14295

参照	例

あるコンポーネントについて，特定の状況下では特定のメッセージを無視させたい場合があります。つまり，コンポーネントがそのメッセージをハンドラにディスパッチしないようにするわけです。このように，メッセージをトラップするには，WndProc という仮想メソッドをオーバーライドします。

WndProc メソッドは，メッセージをフィルタにかけて選抜してから Dispatch メソッドに渡します。その後，Dispatch メソッドがメッセージを処理するメソッドを決定します。WndProc をオーバーライドすれば，ディスパッチされる前にメッセージを選抜できます。

WndProc をオーバーライドする一般的なコードは次のとおりです。

procedure TMyControl.WndProc(var Message: TMessage);
begin
  { 処理の継続を決定するための条件 }

  inherited WndProc(Message);	{ 通常のディスパッチ }
end;


例
例14296

次のコードは，TControlのWndProc メソッドの一部分です。Tcontrol では，ユーザーがコントロールをドラッグアンドドロップしているときは，すべてのマウスメッセージにフィルタをかけて特別な処理を行います。WndProc をオーバーライドする方法には，以下の 2 つの利点があります。

ハンドラを個別に指定するかわりに，メッセージのある範囲全体に対してフィルタをかけられる

メッセージがディスパッチされないので，ハンドラはまったく呼び出されない

procedure TControl.WndProc(var Message: TMessage);
begin
  ...

  if (Message.Msg >= WM_MOUSEFIRST) and (Message.Msg <= WM_MOUSELAST) then
    if Dragging then	{ ドラッグを特別な方法で処理 }
      DragMouseMsg(TWMMouse(Message))

    else

      ...	{ それ以外は普通に処理 }

    end;

...	{ それ以外は普通に処理 }
end;


参照
参照14297

ハンドラメソッドのオーバーライド

メッセージパラメータの使い方


新しいメッセージハンドラの作成
新しいメッセージハンドラの作成14298

参照

Delphi では，よく使用される Windows メッセージのほとんどに対してハンドラが用意されています。しかし，独自のメッセージを定義したときは，開発者自身が新しいメッセージハンドラを作成しなければなりません。

ユーザー定義メッセージについて，以下の2項目を説明します。

独自のメッセージの定義

新しいメッセージ処理メソッドの宣言


参照
参照14299

メッセージ処理機構

メッセージ処理方法の変更


独自のメッセージの定義
独自のメッセージの定義14300

参照

多くの標準コンポーネントでは，内部で使用するためのメッセージが定義されています。メッセージを定義する一般的な目的は，標準 Windows メッセージでは扱われていない情報や，状態の変更を通知することです。

メッセージを定義する手順は次のとおりです。

メッセージ識別子の宣言

メッセージレコード型の宣言


参照
参照14301

新しいメッセージ処理メソッドの宣言


メッセージ識別子の宣言
メッセージ識別子の宣言14302

参照	例

メッセージ識別子は整数の定数です。Windows ではシステム用に 1024 未満のメッセージ識別子が予約されているので，開発者が独自のメッセージを宣言する場合は，それ以上の番号を付けます。

定数 WM_USER は，ユーザー定義メッセージの開始番号を表しています。メッセージ識別子を定義する場合は，WM_USER 以上の番号を使用します。

ただし，ある種の標準 Windows コントロールは，ユーザー定義用の範囲の番号を使用することがあります。そのようなコントロールとしては，リストボックス，コンボボックス，編集ボックス，コマンドボタンがあります。このようなコントロールから派生させたコンポーネントで新しいメッセージを定義する場合には，必ず Messages ユニットで Windows がそのコントロールに対して定義しているメッセージの番号を確認してください。


例
例14303

次のコード例は，2 つのユーザー定義メッセージの定義を示しています。

const
  WM_MYFIRSTMESSAGE = WM_USER + 0;
  WM_MYSECONDMESSAGE = WM_USER + 1;


参照
参照14304

メッセージレコード型の宣言


メッセージレコード型の宣言
メッセージレコード型の宣言14305

参照	例

メッセージのパラメータに名前を付ける場合には，そのメッセージのレコード型を宣言します。メッセージレコード型は，メッセージ処理メソッドに渡されるパラメータの型です。メッセージのパラメータを使用しない場合や，旧式のパラメータ表記方法 (wParam, lParam など) を使用する場合には，デフォルトのメッセージレコードである Tmessage を使用します。

メッセージレコード型を宣言するときは次の命名規則に従います。

1	レコード型の名前は，そのメッセージの名前の先頭に T を加えたものにする

2	まず，最初のフィールドとして TMsgParam 型の Msg を定義する

3	次の 2 バイトは，パラメータ wParam に対応するように定義する

4	次の 4 バイトは，パラメータ lParam に対応するように定義する

5	最後に，LongInt 型のフィールド Result を定義する


例
例14306

たとえば，すべてのマウスメッセージ用のメッセージレコード TWMMouse の例を次に示します。

type
  TWMMouse = record

    Msg: TMsgParam;	{ 最初のフィールドはメッセージ ID }

    Keys: Word;	{ これが wParam }

    case Integer of	{ lParamを参照するには2つの方法がある }

      0: (

        XPos: Integer;	{ x 座標と y 座標か... }

        YPos: Integer);

      1: (

        Pos: TPoint;	{ ... 1 つの点 }

        Result: Longint);	{ 最後は Result フィールド }

  end;

TWMMouse では，可変レコードを使用して 1 つのパラメータに 2 組のフィールドを定義しています。


参照
参照14307

メッセージ識別子の宣言


新しいメッセージ処理メソッドの宣言
新しいメッセージ処理メソッドの宣言14308

参照	例

新しいメッセージ処理メソッドの宣言が必要になるのは以下の 2 つの場合です。

標準コンポーネントが処理できない Windows メッセージを，開発するコンポーネントで処理する場合

開発するコンポーネントで使用するために独自のメッセージを定義した場合

メッセージ処理メソッドを宣言する手順は以下のとおりです。

1	コンポーネントのクラス宣言の protected 部でメソッドを宣言します。

2	メソッドを手続きにします。

3	処理するメッセージの名前に基づいてメソッドを命名します。なお，アンダーライン文字があれば，それを取り除きます。

4	唯一のパラメータとして，メッセージレコード型の Message を指定します。

5	コンポーネント独自の処理コードを記述します。

6	継承メッセージハンドラを呼び出します。


例
例14309

ユーザー定義メッセージ CM_CHANGECOLOR のためのメッセージハンドラの宣言例を，次に示します。

type
  TMyComponent = class(TControl)

    ...

    procedure CMChangeColor(var Message: TMessage); message CM_CHANGECOLOR;
  end;

procedure TMyComponent.CMChangeColor(var Message: TMessage);
begin
  Color := Message.lParam;	{ パラメータlParamによって色を設定 }

  inherited;	{ 継承ハンドラを呼び出す }
end;


参照
参照14310

独自のメッセージの定義


ClassInfo メソッド
ClassInfo メソッド14311

参照

適用

TObject (すべてのオブジェクト)

宣言

class function ClassInfo: Pointer;

説明

ClassInfo メソッドはオブジェクト型の実行時型情報 (RTTI) テーブルを指すポインタを返します。RTTI テーブルにはオブジェクト型，その上位オブジェクト型，パブリッシュに設定されたすべてのプロパティ，メソッド，イベントについての情報が入っています。

RTTI は Delphi 環境の内部で主に使うためのものです。RTTI テーブルの内容についての詳細は TypInfo ユニットを参照してください。


参照
参照14312

ClassName メソッド

ClassParent メソッド

ClassType メソッド


ClassName メソッド
ClassName メソッド14313

参照	例

適用

TObject (すべてのオブジェクト)

宣言

class function ClassName: ShortString;

説明

ClassName メソッドはオブジェクトの実際の型の名前を含む文字列を返します。たとえば，TObject 型の変数にはどのような型のオブジェクトも割り当てできます。次にその変数の ClassName メソッドを呼び出すと，ClassName は TObject ではなく，オブジェクトに割り当てられた実際の型を返します。

ほとんどの場合，オブジェクト型の名前が必要になることはありません。オブジェクトの型を確認しなくてはならない場合は，is 演算子または ClassType メソッドの方が ClassName より有効な情報を提供します。


例
例14314

次のコードは，どのオブジェクトのドロップをも受け入れるフォームにあるリストボックスの OnDragDrop イベントハンドラを示します。このハンドラはドラッグされてきた項目の元のオブジェクト型の名前を，それがどの型であっても，リストボックスに追加します。Source パラメータは TObject 型になっていますが，実際にはそれがどの型のオブジェクトを参照するかが認識されていることに注目してください。

procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);

begin

  Accept := True;	{ どのオブジェクト型でも受け入れます }

end;

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);

begin

  ListBox1.Items.Add(Source.ClassName);

end;


参照
参照14315

ClassInfo メソッド

ClassParent メソッド

ClassType メソッド


ClassNameIs メソッド
ClassNameIs メソッド14316

参照

適用

TObject (すべてのオブジェクト)

宣言

class function ClassNameIs(const Name: string): Boolean;

説明

ClassNameIs メソッドは，Name パラメータに渡した長い文字列がクラス名と一致する場合に True を返します。それ以外の場合は，False を返します。通常は，ClassName プロパティの値をチェックする方が簡単ですが，別のモジュール内のオブジェクトを問い合わせる場合は，ClassNameIs の方が効率的です。


参照
参照14317

ClassName メソッド


ClassParent メソッド
ClassParent メソッド14318

参照

適用

TObject (すべてのオブジェクト)

宣言

class function ClassParent: TClass;

説明

ClassParent メソッドはオブジェクト型の 1 つ上位のオブジェクト型を返します。ClassParent を使うと，あるオブジェクトまたはオブジェクト型が他と代入互換であるかを判定できます。ClassParent は TObject 型に対しては nil を返します。

ClassParent メソッドは InheritsFrom メソッドと演算子の is や as で使いますが，このメソッドを呼び出す必要はほとんどありません。


参照
参照14319

ClassInfo メソッド

ClassName メソッド

ClassType メソッド


ClassType メソッド
ClassType メソッド14320

参照	例

ユニット

System

適用

TObject (すべてのオブジェクト)

宣言

function ClassType: TClass;

説明

ClassType メソッドはオブジェクトの型を返します。ClassType メソッドを使うと，処理対象オブジェクトの具体的な型をコードで動的に確認できます。is 演算子でも同じような情報を得ることができますが，あるオブジェクトが特定の型であるか代入互換の型であるかも調べられます。ClassType メソッドは is や as の演算子で呼び出されます。

メモ:	オブジェクト型についての情報を返す他のメソッド (ClassInfo, ClassName, ClassParent) とは違い，ClassType はクラスメソッドではありません。つまり，ClassType はインスタンスの型を調べるためだけに呼び出すもので，オブジェクト型参照について調べることはできません。


例
例14321

次のコードでは，リストボックスの OnDragOver イベントハンドラに渡す Sender パラメータの型をチェックする方法を 2 つ示します。最初のハンドラでは，ユーザーは TLabel 型の項目からドラッグされた項目しかドロップできません。2 番目のハンドラでは TLabel 型とその下位オブジェクト型の項目からドラッグされた項目がドロップできます。

procedure TForm1.ListBox1DragOver(Sender, SOurce: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);

begin

  if Sender.ClassType = TLabel then Accept := True;

end;

procedure TForm1.ListBox1DragOver(Sender, SOurce: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);

begin

  if Sender is TLabel then Accept := True;

end;


参照
参照14322

ClassInfo メソッド

ClassName メソッド

ClassParent メソッド


CleanupInstance メソッド
CleanupInstance メソッド14323

参照

適用

TObject (すべてのオブジェクト)

宣言

procedure CleanupInstance;

説明

CleanupInstance メソッドは，クラス内の長い文字列とレコードに対する終了処理を実行します。FreeInstance メソッドは CleanupInstance を呼び出します。


参照
参照14324

FreeInstance メソッド


すべてのオブジェクトの Create メソッド
Create メソッド14325

参照

適用

TObject (すべてのオブジェクト)

宣言

constructor Create;

説明

Create メソッドは新しいオブジェクトインスタンスを作成します。Create は，グローバルヒープに割り当てられた，作成された型のインスタンスを返します。すべてのコンストラクタの場合と同じように，Create は自分のコードを実行する前に NewInstance メソッドを呼び出してインスタンスをメモリに割り当て，InitInstance メソッドを呼び出して割り当てられたメモリを初期化します。

デフォルトでは，Create は InstanceSize メソッドによって返されたバイト数を割り当て，割り当てたメモリを 0 に初期化します。

新しいコンポーネント型を宣言するとき，新しいコンポーネントが Create メソッドを宣言する場合は必ず override 指令を追加します。TComponent の Create メソッドは仮想メソッドなので，ユーザーがコンポーネントをフォームにドロップしたときに Delphi で正しいコンストラクタが呼び出されることを保証するには，Create メソッドをオーバーライドしなくてはなりません。

メモ:	下位オブジェクト型で Create コンストラクタをオーバーライドする場合は，継承されたフィールドやプロパティの初期化を完了するために，継承された Create メソッドを呼び出します。継承された Create を呼び出すときには，必ず inherited キーワードを使い，AncestorType を呼び出すなど上位の型の指定はしません。Create はその上位の型のインスタンスを実際に追加作成します。


参照
参照14326

Destroy メソッド

NewInstance メソッド

InitInstance メソッド

InstanceSize メソッド


DefaultHandler メソッド
DefaultHandler メソッド14327

参照

適用

TObject (すべてのオブジェクト)

宣言

procedure DefaultHandler(var Message); virtual;

説明

DefaultHandler メソッドは，オブジェクトの特定のハンドラを持たないメッセージを処理します。TObject で定義される DefaultHandler メソッドは何もしません。つまり，Message パラメータで渡されたメッセージレコードに対して処理をしません。

メッセージ処理メソッドで inherited を呼び出した場合，処理対象メッセージのハンドラが上位オブジェクトで指定されていないと，上位オブジェクトの DefaultHandler メソッドが呼び出されます。

TControl と TWinControl では，すべての下位型のメッセージの処理で DefaultHandler をオーバーライドします。TControl.DefaultHandler は，コントロールのテキストを制御するために Windows から送られるメッセージ (WM_GETTEXT, WM_SETTEXT, WM_GETTEXTLENGTH) を処理します。TWinControl.DefaultHandler は CallWindowProc API 関数を呼び出すことにより，この関数を呼び出さない限り処理されないメッセージをコントロールのウィンドウプロシージャに渡します。


参照
参照14328

Dispatch メソッド


Destroy メソッド
Destroy メソッド14329

参照

適用

TObject (すべてのオブジェクト)

宣言

destructor Destroy; virtual;

説明

Destroy メソッドはオブジェクトインスタンスを廃棄し，破棄します。直接 Destroy を呼び出すことはほとんどなく，そのかわりに Free を呼び出します。Free は Destroy を呼び出す前にオブジェクトインスタンスが nil でないことを確認します。

メモ:	オブジェクト型で Destroy メソッドを宣言するときには必ず override 指令を追加し，継承された Destroy を再宣言したメソッドの最後の文として呼び出します。Destroy は仮想メソッドなので，継承された動作が正しく実行されるようにするにはそれをオーバーライドします。


参照
参照14330

Create メソッド

Free メソッド

FreeInstance メソッド


Dispatch メソッド
Dispatch メソッド14331

参照

適用

TObject (すべてのオブジェクト)

宣言

procedure Dispatch(var Message);

説明

Dispatch メソッドは Message パラメータの内容に基づいてオブジェクトのメッセージ処理メソッド (「ハンドラ」) を呼び出します。Message は型なしなので，Dispatch にはどのような型のデータも渡せますが，通常は TMessage などのメッセージレコードや特定のメッセージレコード型のどれかを渡します。

Message のデータについて Dispatch が唯一必要とするのは，最初の 2 バイトにメッセージ ID が入っていることです。メッセージ ID は，Dispatch がメッセージを処理するために呼び出すメッセージハンドラを示す整数型の数値です。オブジェクトの特定のメッセージについてハンドラが割り当てられていない場合は，Dispatch はかわりに DefaultHandler を呼び出します。

特定のメッセージをディスパッチするには，Dispatch はまずメッセージをディスパッチするために呼び出されているオブジェクトのメッセージハンドラのリストを調べます。メッセージがそのオブジェクトで処理されない場合，Dispatch はハンドラを見つけるまで，または上位オブジェクト型がなくなるまで，その上位のオブジェクト型のメッセージハンドラリストを調べます。上位オブジェクト型がなくなるまでメッセージハンドラが見つからない場合は DefaultHandler を呼び出します。


参照
参照14332

DefaultHandler メソッド

Perform メソッド


FieldAddress メソッド
FieldAddress メソッド14333

参照

適用

TObject (すべてのオブジェクト)

宣言

function FieldAddress(const Name: ShortString): Pointer;

説明

FieldAddress メソッドは Name パラメータで指定されたオブジェクトフィールドのアドレスを返します。オブジェクトに指定された名前のパブリッシュフィールドがなければ，FieldAddress は nil を返します。


参照
参照14334

MethodAddress メソッド


Free メソッド
Free メソッド14335

参照

適用

TObject (すべてのオブジェクト)

宣言

procedure Free;

説明

Free メソッドは，オブジェクトインスタンスが nil でない場合に Destroy メソッドを呼び出します。通常は Destroy を直接呼び出すよりは Free を呼び出します。


参照
参照14336

Destroy メソッド


FreeInstance メソッド
FreeInstance メソッド14337

参照

適用

TObject (すべてのオブジェクト)

宣言

procedure FreeInstance; virtual;

説明

FreeInstance メソッドは NewInstance メソッドによるメモリの割り当てを解除します。NewInstance と FreeInstance は両方とも，割り当てるまたは割り当てを解除するメモリの量を決めるために InstanceSize を呼び出します。

FreeInstance は NewInstance をオーバーライドしたときにだけオーバーライドします。


参照
参照14338

NewInstance メソッド

InstanceSize メソッド


InheritsFrom メソッド
InheritsFrom メソッド14339

参照	例

適用

TObject (すべてのオブジェクト)

宣言

class function InheritsFrom(AClass: TClass): Boolean;

説明

InheritsFrom メソッドは，AClass パラメータに指定されたオブジェクト型がオブジェクト型の上位の型であるかオブジェクト型そのものである場合に True を返します。それ以外の場合は False を返します。InheritsFrom はその実現の際に is や as の演算子で使われます。

InheritsFrom はクラスメソッドなので，2 つのオブジェクト型の関係を調べるときに使えます。is 演算子はインスタンスの継承関係しか調べることはできません。


例
例14340

次の編集ボックスのクリックイベントのイベントハンドラには，同じ操作をする文が 2 つ入っています。

procedure TForm1.Edit1Click(Sender: TObject);

begin

  if Sender is TEdit then TEdit(Sender).Color := clGreen;

  if Sender.InheritsFrom(TEdit) then TEdit(Sender).Color := clGreen;

end;


参照
参照14341

ClassParent メソッド


InitInstance メソッド
InitInstance メソッド14342

参照

適用

TObject (すべてのオブジェクト)

宣言

class procedure InitInstance(Instance: Pointer): TObject;

説明

InitInstance メソッドは新しく割り当てられたオブジェクトインスタンスをすべて 0 に初期化します。InitInstance は仮想メソッドではないので，オーバーライドすることはできません。


参照
参照14343

Create メソッド

NewInstance メソッド


InstanceSize メソッド
InstanceSize メソッド14344

参照

適用

TObject (すべてのオブジェクト)

宣言

class function InstanceSize: Longint;

説明

InstanceSize メソッドはオブジェクト型の各インスタンスのサイズをバイト数で返します。InstanceSize はオブジェクトのプールを割り当てるメモリの量を決めるために呼び出します。

NewInstance メソッドは，特定のインスタンスに対してヒープからどれだけメモリを割り当てるかを決めるために InstanceSize を呼び出します。FreeInstance メソッドはオブジェクトのメモリの割り当てを解除するために InstanceSize から返される値を使います。

メモ:	InstanceSize は仮想メソッドではないので，オーバーライドすることはできません。インスタンスに割り当てられたメモリの量を変更するために NewInstance をオーバーライドした場合，同じ量のメモリを解放するには FreeInstance もオーバーライドしてください。


参照
参照14345

NewInstance メソッド

FreeInstance メソッド


MethodAddress メソッド
MethodAddress メソッド14346

参照

適用

TObject (すべてのオブジェクト)

宣言

class function MethodAddress(const Name: ShortString): Pointer;

説明

MethodAddress メソッドは Name パラメータで指定された，パブリッシュメソッドのアドレスを返します。指定された名前のパブリッシュメソッドがオブジェクトになければ，MethodAddress は nil を返します。


参照
参照14347

MethodName メソッド

FieldAddress メソッド


MethodName メソッド
MethodName メソッド14348

参照

適用

TObject (すべてのオブジェクト)

宣言

class function MethodName(Address: Pointer): ShortString;

説明

MethodName メソッドは Address にあるメソッドの名前の文字列を返します。Address がオブジェクトのパブリッシュメソッドを指さない場合，MethodName は空の文字列を返します。


参照
参照14349

MethodAddress メソッド


NewInstance メソッド
NewInstance メソッド14350

参照

適用

TObject (すべてのオブジェクト)

宣言

class function NewInstance: TObject; virtual;

説明

NewInstance メソッドはオブジェクト型の各インスタンスにメモリを割り当て，その新しいインスタンスを指すポインタを返します。NewInstance は直接呼び出さないでください。すべてのコンストラクタは NewInstance を自動的に呼び出します。

ただし，特定の型のメモリの割り当て方法を変更するために NewInstance をオーバーライドすることはできます。たとえば，同時にメモリになくてはならない同一のオブジェクトを多数メモリに割り当てる場合，そのオブジェクト群全体に対して大きなメモリブロックを割り当て，NewInstance をオーバーライドして各インスタンスについてその大きなブロックの一部を使うようにできます。

メモ:	オブジェクト型のメモリ割り当て手法を変更するために NewInstance をオーバーライドしたときは，そのメモリの割り当てを解除するときには FreeInstance もオーバーライドしなくてはならない場合があります。

NewInstance と FreeInstance は両方とも，割り当てるまたは割り当てを解除するメモリの量を決めるために InstanceSize から返される値を使います。


参照
参照14351

FreeInstance メソッド

InstanceSize メソッド


TClass 型
TClass 型14352

参照

ユニット

System

宣言

type
  TClass = class of TObject;

説明

TClass 型はクラス参照の汎用型です。TObject がどの型のオブジェクトとも代入互換であるように，TClass はどのクラス参照型とも代入互換です。TClass を使うのは，VCL のオブジェクトやコンポーネントでプロパティにどの型のクラス型参照も受け入れなくてはならないときです。


参照
参照14353

TObject オブジェクト (プロテクト)


TObject オブジェクト (プロテクト)
TObject オブジェクト (プロテクト)14354

参照	メソッド	オブジェクト

ユニット

System

説明

TObject オブジェクト型は Delphi のすべてのオブジェクト (そしてすべてのコンポーネントの) 最上位のオブジェクト型です。新しいオブジェクト型を宣言するときに上位の型を指定しない場合，Delphi では自動的に TObject を上位の型として使います。

TObject はすべてのオブジェクトが継承またはオーバーライドするメソッドを宣言します。

作成と廃棄

どのオブジェクトにも，NewInstance を呼び出してインスタンスにメモリを割り当て，InitInstance を呼び出して割り当てたメモリを 0 で埋めることによりそのオブジェクトを初期化する，Create というコンストラクタがある

このほか，Destroy という仮想デストラクタもある。インスタンスが nil でない場合にだけ Destroy を呼び出す Free というメソッドもある

Destroy は FreeInstance を呼び出して，NewInstance が割り当てたメモリを解放します。FreeInstance は，メモリの割り当てが解除される前に CleanupInstance を呼び出して，長い文字列とその他のデータ構造の最終処理を実行します。

型情報メソッド

ClassInfo, ClassName, ClassNameIs, ClassParent, ClassType, InheritsFrom, InstanceSize の各メソッドはオブジェクト型またはそのインスタンスについて有効な情報を提供する

オブジェクトのパブリッシュ部の実行時型情報 (RTTI) は FieldAddress, MethodAddress, MethodName を使って取得する

メッセージ処理メソッド

どのオブジェクトでも，Dispatch と DefaultHandler の各メソッドを使ったメッセージ処理サポートが内蔵されている


メソッド
メソッド14355

ClassInfo	DefaultHandler	InheritsFrom

ClassName	Destroy	InitInstance

ClassNameIs	Dispatch	InstanceSize

ClassParent	FieldAddress	MethodAddress

ClassType	Free	MethodName

CleanupInstance	FreeInstance	NewInstance

Create


参照
参照14356

TClass 型


ActivateHint メソッド
ActivateHint メソッド14357

参照

適用

THintWindow

宣言

procedure ActivateHint(Rect: TRect; const AHint: string); virtual;

説明

ActivateHint メソッドはヒントウィンドウをアクティブにし，ヒントウィンドウのキャプションを AHint で渡された文字列に，境界となる四角形を Rect に設定します。デフォルトでは ActivateHint はヒントウィンドウを表示するために SetWindowPos API 関数を呼び出します。

アクティブ化の後，すべてのアプリケーションメッセージはヒントウィンドウの IsHintMsg メソッドを通り，IsHintMsg メソッドがヒントウィンドウを非アクティブにするかどうかを決めます。

ヒントウィンドウの外観を変更するには，ヒントウィンドウの Paint メソッドをオーバーライドします。ヒントウィンドウは Rect で渡された四角形を変更しません。アプリケーションがその四角形を明示的に設定したからです。


参照
参照14358

IsHintMsg メソッド

Paint メソッド


AlignControls メソッド
AlignControls メソッド14359

参照

適用

TWinControl

宣言

procedure AlignControls(AControl: TControl; var Rect: TRect); virtual;

説明

AlignControls メソッドは Rect で渡された四角形の中でそのコントロールの子であるすべてのコントロールの位置を合わせます。AlignControls は個々の子コントロールの Align プロパティ値を使って子コントロールの位置合わせの方法を決めます。AControl パラメータは nil でもかまいません。AControl にコントロールを指定すると，そのコントロールは他の同様に位置合わせされるコントロールより優先されます。


参照
参照14360

Align プロパティ


Broadcast メソッド
Broadcast メソッド14361

参照

適用

TWinControl

宣言

procedure Broadcast(var Message);

説明

Broadcast メソッドは Message パラメータで渡されたメッセージをウィンドウコントロールの個々の子コントロールへ送ります。


参照
参照14362

NotifyControls メソッド


CancelModes メソッド
CancelModes メソッド14363

適用

TControl

宣言

procedure CancelModes;

説明

CancelModes メソッドは他の処理を妨害する可能性があるモード付き状態のコントロールを通常の状態に戻します。そのようなモード付き状態とは，リストがドロップダウンされている，メニューが開いている，マウスがキャプチャされているなどです。CancelModes を呼び出すと，コントロールは別のモード付き状態を開始できる状態になります。


Canvas プロパティ
Canvas プロパティ14364

参照

適用

TGraphicControl, TCustomControl

宣言

property Canvas: TCanvas;

説明

グラフィックコントロールまたはカスタムコントロールの Canvas プロパティは実行時にコントロールの表面への描画をおこなうための読み出し専用のプロパティです。Canvas は Paint メソッドでの用途が最も重要です。


参照
参照14365

Paint メソッド


ChangeScale メソッド
ChangeScale メソッド14366

参照

適用

TControl

宣言

procedure ChangeScale(M, D: Integer); dynamic;

説明

ChangeScale メソッドはコントロールの位置とサイズを M/D の割合で変更します。ScaleBy メソッドはスケール変更を実行するために ChangeScale を呼び出します。TWinControl はコントロールをスケール変更する前に，そのコントロールの子コントロールをスケール変更するために ChangeScale をオーバーライドします。TForm も必要に応じてクライアント領域とフォントサイズを調整するために ChangeScale をオーバーライドします。


参照
参照14367

ScaleBy メソッド


Click メソッド
Click メソッド14368

適用

TControl, TMediaPlayer

説明

Click というメソッドは 2 種類あります。1 つはすべてのコントロールでの OnClick イベントのためのプロテクトメソッドであり，TControl によって導入されます。もう 1 つは Media Player コンポーネント内のクリック応答プロテクトメソッドです。

すべてのコントロールの Click メソッド

MediaPlayer コンポーネントの Click メソッド


すべてのコントロールの Click メソッド
Click メソッド14369

参照

適用

TControl

宣言

procedure Click; dynamic;

説明

Click メソッドはコントロールの OnClick イベントのためのプロテクトメソッドです。TControl の中で定義されている Click メソッドは OnClick イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。Click をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。

コントロールは左ボタンマウスアップメッセージ (WM_LBUTTONUP) を受け取った場合，そのマウスアップがそれに対応するマウスダウンの近くで起きたならば Click を呼び出します。特定のコントロールの多くは，その他の状況，たとえばユーザーがボタンまたはメニュー項目のショートカットキーを入力したときなどにも Click を呼び出します。

クリックイベントが発生するすべての事例は OnClick イベントの説明の中に示してあります。


参照
参照14370

OnClick イベント


コンポーネントメッセージ
コンポーネントメッセージ14371

参照

Delphi では多くのメッセージが定義されており，それらのメッセージは他のコンポーネントの応答が必要となる可能性がある状態変更を示すためにコンポーネント間で受け渡されます。コンポーネントはこれらのメッセージを Windows メッセージとまったく同じように処理できます。

コンポーネントメッセージのほとんどは標準 Windows メッセージをマップし直したものです。通常，Delphi コンポーネントは Windows メッセージを受け取ると，そのメッセージを自分が所有するコンポーネントへ渡す必要があります。しかし同じメッセージを渡すのでなく，そのメッセージに対応するコンポーネントメッセージを送るのが普通です。Delphi は Windows が使っていない範囲へメッセージをマップするので，コンポーネントから偽の応答を決して受け取りません。

次の表は Delphi で定義されているコンポーネントメッセージのリストです。

CM_ACTIVATE	CM_ENTER	CM_PARENTCTRL3DCHANGED
CM_APPKEYDOWN	CM_EXIT	CM_PARENTFONTCHANGED
CM_APPSYSCOMMAND	CM_FOCUSCHANGED	CM_PARENTSHOWHINTCHANGED
CM_BASE	CM_FONTCHANGE	CM_RELEASE
CM_BUTTONPRESSED	CM_FONTCHANGED	CM_SHOWHINTCHANGED
CM_CANCELMODE	CM_GOTFOCUS	CM_SHOWINGCHANGED
CM_COLORCHANGED	CM_HITTEST	CM_SYSCOLORCHANGE
CM_CTL3DCHANGED	CM_ICONCHANGED	CM_TABFONTCHANGED
CM_CURSORCHANGED	CM_INVOKEHELP	CM_TEXTCHANGED
CM_DEACTIVATE	CM_LOSTFOCUS	CM_TIMECHANGE
CM_DESIGNHITTEST	CM_MOUSEENTER	CM_VISIBLECHANGED
CM_DIALOGKEY	CM_MOUSELEAVE	CM_WANTSPECIALKEY
CM_DIALOGCHAR	CM_MENUCHANGED	CM_WINDOWHOOK
CM_ENABLEDCHANGED	CM_PARENTCOLORCHANGED	CM_WININICHANGE


参照
参照14372

コンポーネント通知メッセージ


コンポーネント通知
コンポーネント通知14373

参照

コンポーネント通知メッセージは特殊なコンポーネントメッセージです。コンポーネント通知メッセージはメッセージの特殊な範囲内に定義されており，標準 Windows メッセージと衝突しません。コンポーネント通知メッセージは常に親から子へ送られるメッセージです。

次の表は Delphi で定義されているコンポーネント通知メッセージのリストです。

CN_BASE	CN_DELETEITEM	CN_PARENTNOTIFY
CN_CHAR	CN_DRAWITEM	CN_SYSKEYDOWN
CN_CHARTOITEM	CN_HSCROLL	CN_SYSCHAR
CN_COMMAND	CN_KEYDOWN	CN_VKEYTOITEM
CN_COMPAREITEM	CN_KEYUP	CN_VSCROLL
CN_CTLCOLOR	CN_MEASUREITEM


参照
参照14374

コンポーネントメッセージ


Control プロパティ
Control プロパティ14375

適用

TControlCanvas

宣言

property Control: TControl;

説明

Control プロパティはコントロールキャンバスオブジェクトへ関連付けられたコントロールです。コントロールキャンバスオブジェクトは Control プロパティを使って関連コントロールから情報を取得します。


ControlState プロパティ
ControlState プロパティ14376

参照

適用

TControl

宣言

property ControlState: TControlState;

説明

ControlState プロパティは実行時にコントロールの現在の状態を示す値の集合を保持します。ControlState プロパティ内のさまざまなフラグは，クリックされたか，位置合わせが必要かなどの条件を示します。

ControlState 内のすべての項目はコントロール固有の項目であり，すべてのコンポーネントに適用される ComponentState プロパティ内の状態フラグに追加される項目です。


参照
参照14377

TControlState 型


ControlStyle プロパティ
ControlStyle プロパティ14378

参照

適用

TControl

宣言

property ControlStyle: TControlStyle;

説明

ControlStyle プロパティにはコントロール型の特定の属性を示す一連のスタイルフラグが入っています。これらのフラグはコントロールがマウスイベントをキャプチャするかどうか，コントロールが固定サイズかどうかなどのスタイルを示します。

一般に，これらのフラグは同じ種類のコントロールのインスタンス間では同じであり，実行時にも変化しません。変化する条件は ControlState プロパティによって示されます。


参照
参照14379

TControlStyle 型


CreateHandle メソッド
CreateHandle メソッド14380

参照

適用

TWinControl, TControlCanvas, TCanvas

宣言

procedure CreateHandle; virtual;

説明

CreateHandle メソッドはハンドルがないオブジェクトの Handle プロパティにハンドルを生成します。

ウィンドウコントロールの場合，CreateHandle はウィンドウハンドルを作成するために CreateWnd メソッドを呼び出す

キャンバスオブジェクトの場合，CreateHandle は何もしない

コントロールキャンバスオブジェクトの場合，CreateHandle はキャンバスへ関連付けられているコントロールからデバイスコンテキストハンドルを取得する


参照
参照14381

Handle プロパティ

HandleNeeded メソッド

WndProc メソッド


CreateParams メソッド
CreateParams メソッド14382

参照	例

適用

TWinControl

宣言

procedure CreateParams(var Params: TCreateParams); virtual;

説明

CreateParams メソッドは Params パラメータで渡されたウィンドウ作成用パラメータの内容を初期化します。TWinControl では Params のすべてのフィールドを一般的なデフォルト値に設定する CreateParams 提供します。いくつかの標準コントロールでは Params 内のいくつかのデフォルト値を変更するために CreateParams をオーバーライドします。

CreateWnd メソッドは CreateWindowHandle へ渡すパラメータを初期化するために CreateParams を呼び出します。CreateParams をオーバーライドすれば，コンポーネントに固有の形状を指定することができます。CreateParams をオーバーライドする場合は，最初に継承メソッドを呼び出してデフォルト値を設定し，その後で必要な調整を加えるようにします。


例
例14383

次の TNoteBook コンポーネントはコントロールが必ずノートブックの境界で子コントロールをクリッピングするよう CreateParams をオーバーライドします。

procedure TNotebook.CreateParams(var Params: TCreateParams);

begin

  inherited CreateParams(Params);	{ 最初に継承メソッドを呼び出します }

  with Params do Style := Style or WS_CLIPCHILDREN;	{ スタイルフラグを追加します }

end;


参照
参照14384

CreateWnd メソッド

CreateWindowHandle メソッド


CreateSubClass メソッド
CreateSubClass メソッド14385

参照	例

適用

TWinControl

宣言

procedure CreateSubClass(var Params: TCreateParams; ControlClassName: PChar);

説明

CreateSubClass メソッドは既存の Windows ウィンドウクラスから派生した Delphi コンポーネントを生成します。CreateSubClass は継承した CreateParams を呼び出した後に下位クラスコントロールの CreateParams メソッドの中で呼び出します。Delphi は CreateSubClass を使って標準 Windows コントロールへのアクセスを提供します。


例
例14386

標準 Delphi ボタンコンポーネント TButton 用の CreateParams メソッドを次に示します。このメソッドは BUTTON というウィンドウクラスの下位クラスを作成します。

procedure TButton.CreateParams(var Params: TCreateParams);

const
  ButtonStyles: array[Boolean] of Longint =(BS_PUSHBUTTON, BS_DEFPUSHBUTTON);

begin

  inherited CreateParams(Params);	{ デフォルト値を記入します }

  CreateSubClass(Params, 'BUTTON');	{ BUTTON からの下位クラス }

  with Params do Style := Style or ButtonStyles[FDefault]	{ Default プロパティも使います }

end;


参照
参照14387

CreateParams メソッド


CreateWindowHandle メソッド
CreateWindowHandle メソッド14388

参照

適用

TWinControl

宣言

procedure CreateWindowHandle(const Params: TCreateParams); virtual;

説明

CreateWindowHandle メソッドはウィンドウハンドルを作成するために CreateWindowEx API 関数を呼び出し，Params で渡されたレコードに入っているパラメータを引き渡します。


参照
参照14389

CreateWnd メソッド

DestroyWindowHandle メソッド


CreateWnd メソッド
CreateWnd メソッド14390

参照

適用

TWinControl

宣言

procedure CreateWnd; virtual;

説明

CreateWnd メソッドはウィンドウコントロールコンポーネントに対応する Windows コントロールを作成します。

CreateWnd は最初にウィンドウ作成パラメータを初期化するために CreateParams メソッドを呼び出し，その後にコントロールのウィンドウハンドルを作成するために CreateWindowHandle を呼び出します。CreateWnd は新しく作成したウィンドウのサイズを調整した後，コントロールのフォントを設定するために Perform メソッドを呼び出し，WM_SETFONT メッセージを渡します。


参照
参照14391

RecreateWnd メソッド

DestroyWnd メソッド


CursorToIdent 関数
CursorToIdent 関数14392

参照

ユニット

Controls

宣言

function CursorToIdent(Cursor: Longint; var Ident: string): Boolean;

説明

CursorToIdent 関数は Cursor で渡されたカーソル値を識別子文字列に変換し，その文字列を Ident に返します。CursorToIdent は Cursor が TCursor 型の識別子によって表される標準システムカーソルの 1 つに対応する場合は True を返し，Ident をそのカーソル名が入った文字列に設定します。Cursor がそのようなカーソルの 1 つでない場合，CursorToIdent は False を返し，Ident は変更されません。


参照
参照14393

TCursor 型

IdentToCursor 関数


CursorToString 関数
CursorToString 関数14394

参照

ユニット

Controls

宣言

function CursorToString(Cursor: TCursor): string;

説明

CursorToString 関数は Cursor パラメータで渡されたカーソル値を表す文字列を返します。CursorToString は標準カーソル型の名前を取得するために CursorToIdent を呼び出します。CursorToIdent で適切な名前が見つからなかった場合，CursorToString は Cursor の数値を文字列表現に変換します。


参照
参照14395

CursorToIdent 関数

StringToCursor 関数


DblClick メソッド
DblClick メソッド14396

参照

ユニット

Controls

適用

TControl

宣言

procedure DblClick; dynamic;

説明

DblClick メソッドはコントロールの OnDblClick イベントのためのプロテクトメソッドです。TControl から継承された DblClick メソッドは OnDblClick イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。DblClick をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。

コントロールは Windows からの左ボタンダブルクリックメッセージ (WM_LBUTTONDBLCLK) への応答として DblClick メソッドを呼び出します。


参照
参照14397

OnDblClick イベント


DefWndProc プロパティ
DefWndProc プロパティ14398

参照

適用

TWinControl

宣言

property DefWndProc: Pointer;

説明

DefWndProc プロパティはウィンドウコントロールのデフォルトウィンドウプロシージャを指定します。初期の DefWndProc は CreateParams で定義されたウィンドウ作成パラメータの中に定義されているデフォルトのプロシージャをポイントします。有効なウィンドウハンドルを持つウィンドウコントロールは，DefaultHandler メソッド内のすべてのメッセージを処理するためにデフォルトのウィンドウプロシージャを呼び出します。

メッセージを処理するための DefWndProc の呼び出しは，そのメッセージの標準 Windows 処理の要求と本質的に同じです。DefWndProc は DefaultHandler がすべての Delphi オブジェクトに対して果たす役割をウィンドウコントロールに対して果たします。


参照
参照14399

CreateParams メソッド

WndProc メソッド


DestroyHandle メソッド
DestroyHandle メソッド14400

参照

適用

TWinControl

宣言

procedure DestroyHandle;

説明

DestroyHandle メソッドはウィンドウコントロールのウィンドウハンドルを廃棄しますが，コントロール自体は廃棄しません。コントロールは必要であれば後でハンドルを再作成できます。DestroyHandle は CreateHandle の逆の処理です。一般に CreateWnd や DestroyWnd などの低レベルメソッドを呼び出さずに，高レベルの CreateHandle と DestroyHandle を呼び出すのが最善の方法です。

コントロールがウィンドウコントロールを子コントロールとして持っている場合，DestroyHandle は自分自身のハンドルを廃棄する DestroyWnd を呼び出す前に，個々の子コントロールの DestroyHandle を呼び出します。


参照
参照14401

CreateHandle メソッド


DestroyWindowHandle メソッド
DestroyWindowHandle メソッド14402

参照

適用

TWinControl

宣言

procedure DestroyWindowHandle; virtual;

説明

DestroyWindowHandle メソッドは CreateWindowHandle メソッドで作成されたウィンドウハンドルを廃棄するために Windows API 関数の DestroyWindow を呼び出します。TWinControl の Destroy メソッドはオブジェクトを廃棄する前に，ウィンドウコントロールへ関連付けられているウィンドウハンドルを廃棄するために DestroyWindowHandle を呼び出します。DestroyWnd メソッドも DestroyWindowHandle を呼び出します。


参照
参照14403

CreateWindowHandle メソッド

DestroyWnd メソッド


DestroyWnd メソッド
DestroyWnd メソッド14404

参照

適用

TWinControl

宣言

procedure DestroyWnd; virtual;

説明

DestroyWnd メソッドはウィンドウコントロールのウィンドウハンドルを廃棄するために，最初にコントロールのテキストのコピーを内部記憶域に保存し，次にデバイスコンテキストを解放し，最後に DestroyWindowHandle を呼び出します。

DestroyWnd は CreateWnd メソッドの逆の処理です。


参照
参照14405

CreateWnd メソッド

DestroyWindowHandle メソッド


DisableAlign メソッド
DisableAlign メソッド14406

参照

適用

TWinControl

宣言

procedure DisableAlign;

説明

DisableAlign メソッドはウィンドウコントロール内のコントロールの位置合わせを一時的に使用不可にします。フォームファイルの読み出しやスケール変更など，コントロールに対して複数の操作を実行する間は位置合わせを使用不可にすると便利です。DisableAlign の呼び出しは EnableAlign の呼び出しを 1 対 1 で伴っていなくてはなりません。

DisableAlign は参照カウントをインクリメントし，その参照カウントは EnableAlign が後でデクリメントします。参照カウントがゼロになった時点で EnableAlign は必要な位置合わせを実行します。


参照
参照14407

EnableAlign メソッド


DoEnter メソッド
DoEnter メソッド14408

参照

適用

TWinControl

宣言

procedure DoEnter; dynamic;

説明

DoEnter メソッドはウィンドウコントロールの OnEnter イベントのためのプロテクトメソッドです。TWinControl の中で定義されている DoEnter メソッドは OnEnter イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。DoEnter をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。


参照
参照14409

OnEnter イベント

DoExit メソッド


DoExit メソッド
DoExit メソッド14410

参照

適用

TWinControl

宣言

procedure DoExit; dynamic;

説明

DoExit メソッドはウィンドウコントロールの OnExit イベントのためのプロテクトメソッドです。TWinControl の中で定義されている DoExit メソッドは OnExit イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。DoExit をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。


参照
参照14411

OnExit イベント

DoEnter メソッド


DoKeyDown メソッド
DoKeyDown メソッド14412

参照

適用

TWinControl

宣言

procedure DoKeyDown(var Message: TWMKey): Boolean;

説明

DoKeyDown メソッドは OnKeyDown イベントのための KeyDown メソッドを呼び出す前に何かの事前処理を実行するプロテクトメソッドです。このメソッドはメッセージをフィルタにかけてコントロールが実際にメッセージを処理しなくてはならないかどうかを知るのが主な目的なので，ほとんどの場合，DoKeyDown をオーバーライドする必要はありません。

DoKeyDown の戻り値は Message パラメータで渡されたキーダウンメッセージの処理をアプリケーションが続行しなくてはならないかどうかを決めます。戻り値が True ならばキーダウンメッセージの処理は完全に済んでおり，それ以上の処理は必要ありません。戻り値が False ならば，アプリケーションは継承処理を通じてキーダウンメッセージを引き渡さなくてはなりません。

DoKeyDown を使った場合，デフォルトでは KeyPreview プロパティが True に設定された親フォームが優先的にキーダウンメッセージを処理できます。フォームがメッセージを処理しない場合，DoKeyDown はメッセージパラメータを適切な型に変換して KeyDown を呼び出し，今度は KeyDown が OnKeyDown イベントハンドラ (もしあれば) を呼び出します。KeyDown がそれ以上の処理を抑止すると，DoKeyDown は F1 キーが押されたかどうかを検査し，押されていればアプリケーションのヘルプシステムを呼び出します。


参照
参照14413

KeyDown メソッド

OnKeyDown イベント

DoKeyPress メソッド

DoKeyUp メソッド


DoKeyPress メソッド
DoKeyPress メソッド14414

参照

適用

TWinControl

宣言

procedure DoKeyPress(var Message: TWMKey): Boolean;

説明

DoKeyPress メソッドは OnKeyPress イベントのための KeyPress メソッドを呼び出す前に何かの事前処理を実行するプロテクトメソッドです。このメソッドはメッセージをフィルタにかけてコントロールが実際にメッセージを処理しなくてはならないかどうかを知るのが主な目的なので，ほとんどの場合，DoKeyPress をオーバーライドする必要はありません。

DoKeyPress の戻り値は Message パラメータで渡されたキープレスメッセージの処理をアプリケーションが続行しなくてはならないかどうかを決めます。戻り値が True ならばキープレスメッセージの処理は完全に済んでおり，それ以上の処理は必要ありません。戻り値が False ならば，アプリケーションは継承処理を通じてキープレスメッセージを引き渡さなくてはなりません。

DoKeyPress を使った場合，デフォルトでは KeyPreview プロパティが True に設定された親フォームが優先的にキープレスメッセージを処理できます。フォームがメッセージを処理しない場合，DoKeyPress はメッセージパラメータを適切な型に変換して KeyPress を呼び出し，今度は KeyPress が OnKeyPress イベントハンドラ (もしあれば) を呼び出します。


参照
参照14415

KeyPress メソッド

OnKeyPress イベント

DoKeyDown メソッド

DoKeyUp メソッド


DoKeyUp メソッド
DoKeyUp メソッド14416

参照

適用

TWinControl

宣言

procedure DoKeyUp(var Message: TWMKey): Boolean;

説明

DoKeyUp メソッドは OnKeyUp イベントのための KeyUp メソッドを呼び出す前に何かの事前処理を実行するプロテクトメソッドです。このメソッドはメッセージをフィルタにかけてコントロールが実際にメッセージを処理しなくてはならないかどうかを知るのが主な目的なので，ほとんどの場合，DoKeyUp をオーバーライドする必要はありません。

DoKeyUp の戻り値は Message パラメータで渡されたキーアップメッセージの処理をアプリケーションが続行しなくてはならないかどうかを決めます。戻り値が True ならばキーアップメッセージの処理は完全に済んでおり，それ以上の処理は必要ありません。戻り値が False ならば，アプリケーションは継承処理を通じてキーアップメッセージを引き渡さなくてはなりません。

DoKeyUp を使った場合，デフォルトでは KeyPreview プロパティが True に設定された親フォームが優先的にキーアップメッセージを処理できます。フォームがメッセージを処理しない場合，DoKeyUp はメッセージパラメータを適切な型に変換して KeyUp を呼び出し，今度は KeyUp が OnKeyUp イベントハンドラ (もしあれば) を呼び出します。


参照
参照14417

KeyUp メソッド

OnKeyUp イベント

DoKeyDown メソッド

DoKeyPress メソッド


DragCanceled メソッド
DragCanceled メソッド14418

参照

適用

TControl

宣言

procedure DragCanceled; dynamic;

説明

DragCanceled メソッドはドラッグアンドドロップ処理を開始した (ソースを呼び出した) コントロールに，ユーザーが処理をキャンセルしたときに応答できる機会を提供します。処理をキャンセルするには，項目をその項目を受け入れないコンポーネントの上でドロップするか，ドラッグ中に Esc を押します。

Delphi は OnEndDrag イベントを呼び出す前にソースコントロールの DragCanceled メソッドを呼び出します。DragCanceled はデフォルトでは何もしませんが，ドラッグのキャンセルに応答するようオーバーライドできます。


参照
参照14419

OnEndDrag イベント


EnableAlign メソッド
EnableAlign メソッド14420

参照

適用

TWinControl

宣言

procedure EnableAlign;

説明

EnableAlign メソッドは DisableAlign メソッドの呼び出しによってインクリメントされた参照カウントをデクリメントします。DisableAlign の呼び出しには必ず EnableAlign の呼び出しが対になっていなくてはなりません。参照カウントがゼロになった時点で，EnableAlign は未処理の位置合わせを実行するために Realign メソッドを呼び出します。


参照
参照14421

DisableAlign メソッド

Realign メソッド


FindControl 関数
FindControl 関数14422

ユニット

Controls

宣言

function FindControl(Handle: HWnd): TWinControl;

説明

FindControl 関数は Handle パラメータで渡されたウィンドウハンドルに対応するウィンドウコントロールを返します。Handle がゼロか，Handle に対応するウィンドウコントロールがない場合，FindControl は nil を返します。


FindDragTarget 関数
FindDragTarget 関数14423

参照

ユニット

Controls

宣言

function FindDragTarget(const Pos: TPoint; AllowDisabled: Boolean): TControl;

説明

FindDragTarget 関数は Pos で渡された画面座標にあるコントロールを返します。AllowDisabled パラメータは使用不可にされたコントロールを検索に含めるかどうかを決めます。指定された位置にコントロールがなければ (または使用不可にされたコントロールがあっても AllowDisabled が False ならば)，FindDragTarget は False を返します。


参照
参照14424

ControlAtPos メソッド


FindNextControl メソッド
FindNextControl メソッド14425

参照

適用

TWinControl

宣言

function FindNextControl(CurControl: TWinControl;
  GoForward, CheckTabStop, CheckParent: Boolean): TWinControl;

説明

FindNextControl メソッドはウィンドウコントロールの子コントロールのうち，タブ順で CurControl の直後にある子コントロールを返します。CurControl がウィンドウコントロールの子でなければ，FindNextControl はタブ順で最初の子コントロールを返します。

GoForward パラメータは検索の方向を制御します。GoForward が True ならば，FindNextControl は子コントロールをタブ順の順方向に検索します。

CheckTabStop パラメータと CheckParent パラメータは FindNextControl で検出したコントロールに対して特定の検査を実行するかどうかを制御します。CheckTabStop が True ならば，返されたコントロールは TabStop プロパティが True に設定されています。CheckParent が True ならば，返されたコントロールの Parent プロパティはウィンドウコントロールを示しています。

FindNextControl は「次」になり得るコントロールのリストを構築するために GetTabOrderList メソッドを呼び出します。


参照
参照14426

GetTabOrderList メソッド


FreeHandle メソッド
FreeHandle メソッド14427

参照

適用

TControlCanvas

宣言

procedure FreeHandle;

説明

FreeHandle メソッドはコントロールキャンバスオブジェクトが使うデバイスコンテキストハンドルを解放します。


参照
参照14428

CreateHandle メソッド


GetCaptureControl 関数
GetCaptureControl 関数14429

参照

ユニット

Controls

宣言

function GetCaptureControl: TControl;

説明

GetCaptureControl 関数は現在マウスを「キャプチャ」しているコントロールを返します。そのようなコントロールがなければ nil を返します。

マウスのキャプチャについては MouseCapture プロパティの説明を参照してください。


参照
参照14430

MouseCapture プロパティ

SetCaptureControl 手続き


GetClientOrigin メソッド
GetClientOrigin メソッド14431

参照

適用

TControl, TWinControl

宣言

function GetClientOrigin: TPoint; virtual;

説明

GetClientOrigin メソッドは ClientOrigin プロパティ用のプロテクトアクセスメソッドです。

GetClientOrigin はコントロールの左上隅の位置を示す点を画面座標で返します。TControl の GetClientOrigin 実装ではコントロールの Left 値と Top 値を親コントロールの ClientOrigin に加算しています。TWinControl は Windows の API 関数 ClientToScreen を利用するために GetClientOrigin をオーバーライドします。


参照
参照14432

ClientOrigin プロパティ

GetClientRect メソッド


GetClientRect メソッド
GetClientRect メソッド14433

参照

適用

TControl, TWinControl, TForm

宣言

function GetClientRect: TRect; virtual;

説明

GetClientRect メソッドはClientRect プロパティ用のプロテクトアクセスメソッドです。

GetClientRect はコントロールのクライアント領域を定義する四角形を返します。TControl の GetClientRect では，Top フィールドと Left フィールドをゼロに，Bottom フィールドと Right フィールドがコントロールの Height と Width にそれぞれ設定された四角形を返します。TWinControl は Windows の API 関数 GetClientRect を呼び出すために GetClientRect をオーバーライドします。TForm もフォームの枠内の四角形を返すために GetClientRect をオーバーライドします。


参照
参照14434

GetClientOrigin メソッド


GetCursorValues 手続き
GetCursorValues 手続き14435

参照

ユニット

Controls

宣言

procedure GetCursorValues(Proc: TGetStrProc);

説明

GetCursorValues 手続きは現在のアプリケーションから使えるカーソルの名前のリストを構築するために，Proc で渡されたメソッドをシステムに登録済みの個々のカーソルごとに 1 回ずつカーソル名を渡して呼び出します。


参照
参照14436

CursorToString 関数


GetDeviceContext メソッド
GetDeviceContext メソッド14437

参照

適用

TControl, TWinControl

宣言

function GetDeviceContext(var WindowHandle: HWnd): HDC; virtual;

説明

GetDeviceContext メソッドは WindowHandle パラメータで渡されたウィンドウハンドルが表すコントロールのデバイスコンテキストを返します。TControl の GetDeviceContext では，親コントロールの GetDeviceContext から返されたデバイスコンテキストを返します。TWinControl は GetDeviceContext をオーバーライドして Windows API 関数 GetDC を呼び出し，その際にウィンドウコントロールの Handle プロパティを渡し，WindowHandle を Handle に設定します。


参照
参照14438

PaletteChanged メソッド


GetPalette メソッド
GetPalette メソッド14439

参照	例

適用

TControl

宣言

function GetPalette: HPALETTE;

説明

GetPalette メソッドはコントロール用のパレットを指定します。Delphi にはパレットの作成や保守をサポートする機能は特にありません。しかしパレットハンドルがわかれば，コントロール用の GetPalette をオーバーライドしてコントロールにそのパレットを使わせることができます。


例
例14440

次の Image コンポーネントは関連ビットマップのパレットをそのコンポーネントのパレットとして割り当てるために GetPalette をオーバーライドします。

function TImage.GetPalette: HPALETTE;

begin

  Result := 0;	{ デフォルトの結果はパレットなしです }

  if FPicture.Graphic is TBitmap then	{ ビットマップだけがパレットを持っています }

    Result := TBitmap(FPicture.Graphic).Palette;	{ それが使えれば使います }

end;


参照
参照14441

PaletteChanged メソッド


GetTabOrderList メソッド
GetTabOrderList メソッド14442

参照

適用

TWinControl

宣言

procedure GetTabOrderList(List: TList);

説明

GetTabOrderList メソッドはコントロールのタブ順リストを構築するためにウィンドウコントロールの内部のタブ順リストを反復処理し，個々のコントロールをそのコントロールに入っているコントロールも含めてリストに追加します。その結果，すべてのコントロールとそれらが所有するコントロールのタブ順リストが得られます。

FindNextControl メソッドは「次」になり得るコントロールの完全なリストを構築するために GetTabOrderList を呼び出します。


参照
参照14443

FindNextControl メソッド


IdentToCursor 関数
IdentToCursor 関数14444

参照

ユニット

Controls

宣言

function IdentToCursor(const Ident: string; var Cursor: Longint): Boolean;

説明

IdentToCursor 関数はカーソル識別子を対応するカーソル値に変換するために，アプリケーションで使えるカーソルのリストを検索し，Ident で渡された文字列に一致する名前が付いたカーソルを見つけます。検索で一致が生成されれば，IdentToCursor は Cursor パラメータにカーソル値を設定し，True を返します。検索で一致が生成されなければ，IdentToCursor は False を返し，Cursor は変更されません。


参照
参照14445

CursorToIdent 関数


IsControl プロパティ
IsControl プロパティ14446

参照

適用

TControl

宣言

property IsControl: Boolean;

説明

The IsControl プロパティ


参照
参照14447

TDesigner オブジェクト


IsControlMouseMsg メソッド
IsControlMouseMsg メソッド14448

参照

適用

TWinControl

宣言

function IsControlMouseMsg(var Message: TWMMouse): Boolean;

説明

IsControlMouseMsg メソッドは Message パラメータで渡されたマウスメッセージがウィンドウコントロールの子コントロールの 1 つへ向けられていれば True を返します。子ウィンドウコントロールへのメッセージの送信は Windows が担当しますが，非ウィンドウの子コントロールの場合，Windows はメッセージを親コントロールへ送り，親コントロールはどの子コントロールがメッセージを受け取るかを決めなくてはなりません。

ウィンドウコントロールの WndProc メソッドは，そのウィンドウコントロールへ送られたすべてのマウスメッセージを処理するために IsControlMouseMsg を呼び出します。


参照
参照14449

WndProc メソッド


IsHintMsg メソッド
IsHintMsg メソッド14450

参照

適用

THintWindow

宣言

function IsHintMsg(var Msg: TMsg): Boolean; virtual;

説明

IsHintMsg メソッドはヒントウィンドウが画面上にあるとき (ActivateHint を呼び出した後) にアプリケーションのメッセージを検査します。IsHintMsg はマウス，キーボード，コマンド，アクティブ化のいずれかのメッセージを検出すると True を返し，その結果アプリケーションはヒントウィンドウを隠します。


参照
参照14451

ActivateHint メソッド


KeyDown メソッド
KeyDown メソッド14452

参照

適用

TWinControl

宣言

procedure KeyDown(var Key: Word; Shift: TShiftState); dynamic;

説明

KeyDown メソッドはウィンドウコントロールの OnKeyDown イベントのためのプロテクトメソッドです。TWinControl から継承された KeyDown メソッドは OnKeyDown イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。KeyDown をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。

ウィンドウコントロールは Windows からのキーダウンメッセージ (WM_KEYDOWN) への応答として KeyDown を呼び出します。実際の動作としては，DoKeyDown メソッドを呼び出すプライベートメッセージハンドラへメッセージが送られます。DoKeyDown はコントロールに実際にその文字を処理させなくてはならないと判断した場合，キーダウンメッセージのパラメータを解読し，キーコードとシフトキー状態をそれぞれ Key パラメータと Shift パラメータの KeyDown に渡します。

KeyDown またはそれが呼び出す OnKeyDown イベントハンドラはどちらも Key パラメータをゼロに設定するので，それ以上のキーの処理が抑止されます。


参照
参照14453

OnKeyDown イベント

DoKeyDown メソッド

KeyPress メソッド

KeyUp メソッド


KeyPress メソッド
KeyPress メソッド14454

参照

適用

TWinControl

宣言

procedure KeyPress(var Key: Word); dynamic;

説明

KeyPress メソッドはウィンドウコントロールの OnKeyPress イベントのためのプロテクトメソッドです。TWinControl から継承された KeyPress メソッドは OnKeyPress イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。KeyPress をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。

ウィンドウコントロールは Windows からのキープレスメッセージ (WM_CHAR) への応答として KeyPress を呼び出します。実際の動作としては，DoKeyPress メソッドを呼び出すプライベートメッセージハンドラへメッセージが送られます。DoKeyPress はコントロールに実際にその文字を処理させなくてはならないと判断した場合，キープレスメッセージのパラメータを解読し，キーコードを Key パラメータの KeyPress に渡します。

KeyPress またはそれが呼び出す OnKeyPress イベントハンドラはどちらも Key パラメータをゼロに設定するので，それ以上の文字の処理が抑止されます。


参照
参照14455

OnKeyPress イベント

DoKeyPress メソッド

KeyDown メソッド

KeyUp メソッド


KeyUp メソッド
KeyUp メソッド14456

参照

適用

TWinControl

宣言

procedure KeyUp(var Key: Word; Shift: TShiftState); dynamic;

説明

KeyUp メソッドはウィンドウコントロールの OnKeyUp イベントのためのプロテクトメソッドです。TWinControl から継承された KeyUp メソッドは OnKeyUp イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。KeyUp をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。

ウィンドウコントロールは Windows からのキーアップメッセージ (WM_KEYUP) への応答として KeyUp を呼び出します。実際の動作としては，DoKeyUp メソッドを呼び出すプライベートメッセージハンドラへメッセージが送られます。DoKeyUp はコントロールに実際にその文字を処理させなくてはならないと判断した場合，キーアップメッセージのパラメータを解読し，キーコードとシフトキー状態をそれぞれ Key パラメータと Shift パラメータの KeyUp に渡します。

KeyUp またはそれが呼び出す OnKeyUp イベントハンドラはどちらも Key パラメータをゼロに設定するので，それ以上のキーの処理が抑止されます。


参照
参照14457

OnKeyUp イベント

DoKeyUp メソッド

KeyDown メソッド

KeyPress メソッド


MainWndProc メソッド
MainWndProc メソッド14458

参照

適用

TWinControl

宣言

procedure MainWndProc(var Message: TMessage);

説明

MainWndProc メソッドはウィンドウコントロール用のメインウィンドウプロシージャであり，Windows がそのコントロール用のメッセージを持っているときに呼び出すルーチンです。MainWndProc はメッセージ自体の処理やディスパッチは実行しませんが，それを実行する WndProc メソッドを呼び出します。MainWndProc は WndProc を囲む例外処理ブロックを提供し，アプリケーション内で未処理の例外が発生した場合でもそれらの例外が確実にアプリケーションオブジェクトの HandleException メソッドへ渡されるようにします。


参照
参照14459

WndProc メソッド

DefWndProc プロパティ


MouseCapture プロパティ
MouseCapture プロパティ14460

参照

適用

TControl

宣言

property MouseCapture: Boolean;

説明

MouseCapture プロパティはコントロールがマウスイベントを「キャプチャ」したかどうかを示します。コントロールがマウスをキャプチャすると，それ以後のすべてのマウスイベントはユーザーがマウスを解放するまでそのコントロール (キャプチャコントロールと呼ばれる) へ送られます。

コントロールがキャプチャコントロールになるのは，ユーザーがそのコントロールから項目をドラッグしたときです。コントロールの ControlStyle プロパティ内で csCaptureMouse フラグが設定されている場合も，ユーザーがそのコントロール上で左マウスボタンを押すと，そのコントロールはユーザーがボタンから指を離すまでの間，キャプチャコントロールになります。

MouseCapture は GetCaptureControl 関数と SetCaptureControl 手続きを使って実現されます。


参照
参照14461

GetCaptureControl 関数

SetCaptureControl 手続き


MouseDown メソッド
MouseDown メソッド14462

参照

適用

TControl

宣言

procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); dynamic;

説明

MouseDown メソッドはコントロールの OnMouseDown イベントのためのプロテクトメソッドです。TControl から継承された MouseDown メソッドは OnMouseDown イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。MouseDown をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。

コントロールは Windows のいずれかのマウスダウンメッセージ (WM_LBUTTONDOWN, WM_MBUTTONDOWN, WM_RBUTTONDOWN) への応答として MouseDown を呼び出し，メッセージのパラメータをシフトキー状態と位置に解読し，それぞれ Shift, X, Y の各パラメータに渡します。Button パラメータの値はどの Windows メッセージがイベントを発生させたかによって異なります。


参照
参照14463

OnMouseDown イベント

MouseMove メソッド

MouseUp メソッド


MouseMove メソッド
MouseMove メソッド14464

参照

適用

TControl

宣言

procedure MouseMove(Shift: TShiftState; X, Y: Integer); dynamic;

説明

MouseMove メソッドはコントロールの OnMouseMove イベントのためのプロテクトメソッドです。TControl から継承された MouseMove メソッドは OnMouseMove イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。MouseMove をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。

コントロールは Windows のマウス移動メッセージ (WM_MOUSEMOVE) への応答として MouseMove を呼び出し，メッセージのパラメータをシフトキー状態と位置に解読し，それぞれ Shift, X, Y の各パラメータに渡します。


参照
参照14465

OnMouseMove イベント

MouseDown メソッド

MouseUp メソッド


MouseUp メソッド
MouseUp メソッド14466

参照

適用

TControl

宣言

procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); dynamic;

説明

MouseUp メソッドはコントロールの OnMouseUp イベントのためのプロテクトメソッドです。TControl から継承された MouseUp メソッドは OnMouseUp イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。MouseUp をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。

コントロールは Windows のいずれかのマウスアップメッセージ (WM_LBUTTONUP, WM_MBUTTONUP, WM_RBUTTONUP) への応答として MouseUp を呼び出し，メッセージのパラメータをシフトキー状態と位置に解読し，それぞれ Shift, X, Y の各パラメータに渡します。Button パラメータの値はどの Windows メッセージがイベントを発生させたかによって異なります。


参照
参照14467

OnMouseUp イベント

MouseDown メソッド

MouseMove メソッド


NotifyControls メソッド
NotifyControls メソッド14468

参照

適用

TWinControl

宣言

procedure NotifyControls(Msg: Word);

説明

NotifyControls メソッドは Msg パラメータで渡されたメッセージ ID を持つメッセージをウィンドウコントロールの Controls 配列プロパティ内にあるすべてのコントロールへ送ります。Delphi は親の色やフォントに変更があったことなどを NotifyControls を使ってフォーム内のすべてのコントロールへ通知します。

NotifyControls は汎用メッセージレコードを構築し，そのメッセージ ID フィールドに Msg の値を記入し，パラメータフィールドと結果フィールドをゼロに設定した後，メッセージをすべての子コントロールへ送るために Broadcast メソッドを呼び出します。


参照
参照14469

Broadcast メソッド

コンポーネントメッセージ


Paint メソッド
Paint メソッド14470

参照

適用

TGraphicControl, TCustomControl, TCustomGrid

宣言

procedure Paint; virtual;

説明

Paint メソッドはグラフィックコントロールまたはカスタムコントロールのイメージを描画します。グラフィックコントロールとカスタムコントロールは WM_PAINT メッセージへの応答としてコントロールのキャンバスを初期化し，Paint を呼び出します。

グラフィックコントロールまたはカスタムコントロールを作成すると，コントロールのイメージを描画するために必ず Paint がオーバーライドされます。


参照
参照14471

OnPaint イベント

Canvas プロパティ


PaintControls メソッド
PaintControls メソッド14472

参照

適用

TWinControl

宣言

procedure PaintControls(DC: HDC; First: TControl);

説明

PaintControls メソッドは DC パラメータで渡されたデバイスコンテキストを使ってウィンドウコントロール内にある個々の子コントロールをペイントします。First パラメータはウィンドウコントロールの子コントロールリスト内のペイント開始点を示します。First が nil であるか子コントロールの 1 つを示していない場合，PaintControls はすべての子コントロールをペイントします。

Repaint メソッドはコントロールとそれが交差する可能性があるコントロールを再ペイントするためにコントロールの親について PaintControls を呼び出し，First 内のコントロールを渡します。PaintHandler も PaintWindow を呼び出した後に PaintControls を呼び出します。


参照
参照14473

Repaint メソッド

PaintHandler メソッド

Paint メソッド


PaintHandler メソッド
PaintHandler メソッド14474

参照

適用

TWinControl

宣言

procedure PaintHandler(var Message: TWMPaint);

説明

PaintHandler メソッドはウィンドウコントロール用の WM_PAINT メッセージへの応答として API 関数の BeginPaint と EndPaint を呼び出し，この 2 つの関数の間でコントロールの背景をペイントするために PaintWindow を，子コントロールをペイントするために PaintControls をそれぞれ呼び出します。


参照
参照14475

PaintControls メソッド

PaintWindow メソッド


PaintWindow メソッド
PaintWindow メソッド14476

参照

適用

TWinControl, TCustomControl

宣言

procedure PaintWindow(DC: HDC); virtual;

説明

PaintWindow メソッドはウィンドウコントロールの内容を再ペイントします。

PaintWindow は WM_PAINT メッセージをウィンドウコントロールの DefaultHandler メッセージへ送ります。メッセージレコードの WParam フィールドは DC で渡された値に，その他のパラメータフィールドと結果フィールドはゼロに設定されます。

TCustomControl は Canvas プロパティと Paint メソッドを使うために PaintWindow をオーバーライドします。キャンバスハンドルは DC で渡された値に設定され，その後に Paint が呼び出されます。


参照
参照14477

DefaultHandler メソッド


PaletteChanged メソッド
PaletteChanged メソッド14478

参照

適用

TControl, TWinControl

宣言

function PaletteChanged(Foreground: Boolean): Boolean; dynamic;

説明

PaletteChanged メソッドはシステムのパレットでの変更に応答するために，コントロールのパレットを GetPalette から返されたとおりに実現します。PaletteChanged のデフォルト動作を変更する必要はまったくありません。Foreground パラメータはパレットを実現するときに，このコントロールのパレットを前景と背景のどちらにあるものとして処理しなくてはならないかを示します。

PaletteChanged の戻り値はコントロールが実際にパレットを実現したかどうかを示し，GetPalette が有効なパレットを返した場合にだけ True を返します。


参照
参照14479

GetPalette メソッド


Perform メソッド
Perform メソッド14480

参照

適用

TControl

宣言

function Perform(Msg, WParam: Word; LParam: Longint): Longint;

説明

Perform メソッドを使うと，コントロールは自分自身へメッセージを送ることができます。Perform は Windows のメッセージキューを迂回して，メッセージをコントロールのウィンドウプロシージャへ直接送ります。

メッセージレコード (TMessage 型) には Msg パラメータで渡されたメッセージ ID, WParam と LParam で渡されたメッセージパラメータ，ゼロの結果フィールドが記入されます。Perform はこのメッセージレコードを WndProc メソッドへ渡して処理させます。


参照
参照14481

WndProc メソッド

Dispatch メソッド


Realign メソッド
Realign メソッド14482

参照

適用

TWinControl

宣言

procedure Realign;

説明

Realign メソッドはウィンドウコントロールにそのコントロール内のコンポーネントの位置を合わせさせます。そのウィンドウコントロールを親とするコントロールがどれも alNone 以外の値に設定された Align プロパティを持っていなければ，Realign は機能しません。

EnableAlign メソッドは参照カウントがゼロになったときに Realign を呼び出します。


参照
参照14483

AlignControls メソッド

DisableAlign メソッド

EnableAlign メソッド


RecreateWnd メソッド
RecreateWnd メソッド14484

参照

適用

TWinControl

宣言

procedure RecreateWnd;

説明

RecreateWnd メソッドはウィンドウコントロールへ関連付けられたウィンドウハンドルを廃棄した後，そのコントロールの現在の状態を反映した別のウィンドウハンドルを作成します。Windows ではコントロールに対する特定の種類の変更を反映させるためにコントロールをいったん廃棄して再作成しなくてはならない場合があります。たとえば編集ボックスの境界スタイルの変更を反映させるには，コントロールを再作成しなくてはなりません。

RecreateWnd はウィンドウハンドルを廃棄するために DestroyHandle を呼び出した後，コントロールを再表示する作業の一部としてハンドルを再生成します。


参照
参照14485

DestroyHandle メソッド

CreateWnd メソッド


ReleaseHandle メソッド
ReleaseHandle メソッド14486

参照

適用

THintWindow

宣言

procedure ReleaseHandle;

説明

ReleaseHandle メソッドはヒントウィンドウで使ったウィンドウハンドルを廃棄するために DestroyHandle メソッドを呼び出します。


参照
参照14487

DestroyHandle メソッド


ScaleControls メソッド
ScaleControls メソッド14488

参照

適用

TWinControl

宣言

procedure ScaleControls(M, D: Integer);

説明

ScaleControls メソッドはウィンドウコントロール自体のスケールを変更せずにウィンドウコントロールの子コントロールをスケール変更します。ScaleControls は M パラメータと D パラメータを渡して個々の子コントロールの ChangeScale メソッドを呼び出します。


参照
参照14489

ChangeScale メソッド


SelectFirst メソッド
SelectFirst メソッド14490

参照

適用

TWinControl

宣言

procedure SelectFirst;

説明

SelectFirst メソッドはウィンドウコントロール内で選択可能な最初のコントロールを見つけるために，現在のコントロールを nil に指定して FindNextControl を呼び出します。選択可能な最初のコントロールをアクティブコントロールにします。


参照
参照14491

FindNextControl メソッド

SelectNext メソッド


SelectNext メソッド
SelectNext メソッド14492

参照

適用

TWinControl

宣言

procedure SelectNext(CurControl: TWinControl; GoForward, CheckTabStop: Boolean);

説明

SelectNext メソッドは入力フォーカスを CurControl から Z オーダーで次にくるコントロールへ移動します。FindNextControl メソッドで (GoForward パラメータと CheckTabStop パラメータで定義したとおりの) 適切なコントロールが見つからなかった場合，SelectNext はフォーカスを CurControl に戻します。


参照
参照14493

FindNextControl メソッド


SetCaptureControl 手続き
SetCaptureControl 手続き14494

参照

ユニット

Controls

宣言

procedure SetCaptureControl(Control: TControl);

説明

SetCaptureControl 手続きは Control パラメータで渡されたコントロールを現在のキャプチャコントロールにします。そのコントロールは別のコントロールがマウスをキャプチャするか SetCaptureControl へ nil が渡されてマウスが「非キャプチャ」状態になるまで，すべてのマウスイベントを受け取ります。

MouseCapture プロパティは SetCaptureControl によって実現されています。GetCaptureControl 関数を呼び出せば，現在どのコントロールがキャプチャコントロールかわかります。


参照
参照14495

MouseCapture プロパティ

GetCaptureControl 関数


SetClientSize メソッド
SetClientSize メソッド14496

参照

適用

TControl

宣言

procedure SetClientSize(Value: TPoint); virtual;

説明

SetClientSize メソッドはコントロールのクライアント領域の幅と高さを Value パラメータで渡された値に設定します。コントロールの場合，クライアント領域はコントロールの領域全体と同じです。フォームの場合，クライアント領域は境界の内部の領域です。


参照
参照14497

GetClientOrigin メソッド

GetClientRect メソッド


SetParent メソッド
SetParent メソッド14498

参照

適用

TControl

宣言

procedure SetParent(AParent: TWinControl); virtual;

説明

SetParent メソッドは Parent プロパティ用のプロテクトアクセスメソッドです。すでにコントロールに親があれば，SetParent は親の RemoveControl メソッドを呼び出すので，親のコントロールリストからそのコントロールが取り除かれます。AParent が非 nil ならば，SetParent はそのコントロールをコントロールリストへ追加するためにそのコントロールの InsertControl メソッドを呼び出します。

すべてのコントロールの Destroy メソッドはコンポーネントを廃棄する前に，コントロールを親のコントロールリストから取り除くために SetParent(nil) を呼び出します。


参照
参照14499

Parent プロパティ


SetZOrder メソッド
SetZOrder メソッド14500

適用

TControl

宣言

procedure SetZOrder(TopMost: Boolean); dynamic;

説明

SetZOrder メソッドはコントロールを最上位コントロール (TopMost パラメータが True) または最下位コントロール (TopMost パラメータが False) にするために，コントロールを親のコントロールリスト内で移動します。順序の変更後，SetZOrder は再ペイントで新しい順序が確実に反映されるよう，コントロールを無効にします。


ShowControl メソッド
ShowControl メソッド14501

参照

適用

TWinControl

宣言

procedure ShowControl(AControl: TControl); virtual;

説明

ShowControl メソッドは AControl で渡されたコントロールが実際に可視になるようにします。ShowControl は Show メソッドのために使われるプロテクトメソッドです。ShowControl は特定のコントロールを確実に表示するために本質的に必要な処理をします。たとえばスクロールボックスとフォームは，そのコントロールを可視にするために必要であればスクロールします。ノートブックはそのコントロールが入ったページを前面に置きます。


参照
参照14502

Show メソッド


StringToCursor 関数
StringToCursor 関数14503

参照

ユニット

Controls

宣言

function StringToCursor(S: string): TCursor;

説明

StringToCursor 関数は S パラメータで渡された文字列を基にしてカーソル値を返します。StringToCursor は最初に IdentToCursor を呼び出して既知のカーソル名をそれに相当する値に変換します。変換が失敗すると，Val 手続きを使って S を数値に変換しようとします。エラーが起きた場合，StringToCursor は例外を生成し，S が数値でないことを示すか，S が表す数値がカーソルの有効範囲外であることを示します。


参照
参照14504

IdentToCursor 関数

CursorToString 関数


TCMActivate 型
TCMActivate 型14505

参照

ユニット

Controls

宣言

type
  TCMActivate = TWMNoParams;

説明

TCMActivate 型は CM_ACTIVATE メッセージのメッセージレコード型です。


参照
参照14506

コンポーネントメッセージ


TCMDeactivate 型
TCMDeactivate 型14507

参照

ユニット

Controls

宣言

type
  TCMDeactivate = TWMNoParams;

説明

TCMDeactivate 型は CM_DEACTIVATE メッセージのメッセージレコード型です。


TCMGotFocus 型
TCMGotFocus 型14508

参照

ユニット

Controls

宣言

type
  TCMGotFocus = TWMNoParams;

説明

TCMGotFocus 型は CM_GOTFOCUS メッセージのメッセージレコード型です。


TCMLostFocus 型
TCMLostFocus 型14509

参照

ユニット

Controls

宣言

type
  TCMLostFocus = TWMNoParams;

説明

TCMLostFocus 型は CM_LOSTFOCUS メッセージのメッセージレコード型です。


TCMCancelMode 型
TCMCancelMode 型14510

参照

ユニット

Controls

宣言

type
  TCMCancelMode = TWMNoParams;

説明

TCMCancelMode 型は CM_CANCELMODE メッセージのメッセージレコード型です。


TCMDialogKey 型
TCMDialogKey 型14511

参照

ユニット

Controls

宣言

type
  TCMDialogKey = TWMKeyDown;

説明

TCMDialogKey 型は CM_DIALOGKEY メッセージのメッセージレコード型です。


TCMDialogChar 型
TCMDialogChar 型14512

参照

ユニット

Controls

宣言

type
  TCMDialogChar = TWMSysChar;

説明

TCMDialogChar 型は CM_DIALOGCHAR メッセージのメッセージレコード型です。


TCMHitTest 型
TCMHitTest 型14513

参照

ユニット

Controls

宣言

type
  TCMHitTest = TWMNCHitTest;

説明

TCMHitTest 型は CM_HITTEST メッセージのメッセージレコード型です。


TCMEnter 型
TCMEnter 型14514

参照

ユニット

Controls

宣言

type
  TCMEnter = TWMNoParams;

説明

TCMEnter 型は CM_ENTER メッセージのメッセージレコード型です。


TCMExit 型
TCMExit 型14515

参照

ユニット

Controls

宣言

type
  TCMExit = TWMNoParams;

説明

TCMExit 型は CM_EXIT メッセージのメッセージレコード型です。


TCMDesignHitTest 型
TCMDesignHitTest 型14516

参照

ユニット

Controls

宣言

type
  TCMDesignHitTest = TWMMouse;

説明

TCMDesignHitTest 型は CM_DESIGNHITTEST メッセージのメッセージレコード型です。


TCMFocusChanged 型
TCMFocusChanged 型14517

参照

ユニット

Controls

宣言

type
  TCMFocusChanged = record
    Msg: Word
    Unused: Word;
    Sender: TWinControl;
    Result: Longint;
  end;

説明

TCMFocusChanged 型は CM_FOCUSCHANGED メッセージのメッセージレコード型です。


TCMWantSpecialKey 型
TCMWantSpecialKey 型14518

参照

ユニット

Controls

宣言

type
  TCMWantSpecialKey = TWMKey;

説明

TCMWantSpecialKey 型は CM_WANTSPECIALKEY メッセージのメッセージレコード型です。


TControl コンポーネント
TControl コンポーネント14519

参照	プロパティ	メソッド	イベント	コンポーネント

ユニット

Controls

説明

TControl コンポーネントはすべてのコントロールの抽象コンポーネント型です。コントロールはビジュアルコンポーネントなので，実行時に見たり操作したりできます。TControl はすべてのコントロールに必要なすべてのプロパティ，メソッド，イベントを提供します。すべてのコントロールに必要な項目は public として宣言され，すべてのコントロール内に表示されます。コントロールに役立つその他の項目は protected として宣言されます。つまり，それらの項目は TControl かその下位型の 1 つから派生したコンポーネントの中でパブリッシュにできます。


プロパティ
プロパティ14520

Caption	Font	ParentFont

Color	IsControl	ParentShowHint

DragCursor	MouseCapture	PopupMenu

DragMode	ParentColor	Text


メソッド
メソッド14521

CancelModes	GetDeviceContext	ReadState

ChangeScale	GetPalette	SetClientSize

Click	HasParent	SetParent

DblClick	MouseDown	SetName

DefaultHandler	MouseMove	SetZOrder

DefineProperties	MouseUp	UpdateBoundsRect

DragCanceled	Notification	VisibleChanging

GetClientOrigin	PaletteChanged	WndProc

GetClientRect	Perform


イベント
イベント14522

OnClick	OnDragOver	OnMouseMove

OnDblClick	OnEndDrag	OnMouseUp

OnDragDrop	OnMouseDown


参照
参照14523

TControlClass 型


TControlCanvas オブジェクト
TControlCanvas オブジェクト14524

参照	プロパティ	メソッド

ユニット

Controls

説明

TControlCanvas オブジェクトはウィンドウコントロールへ関連付けられた特殊なキャンバスオブジェクトです。


プロパティ
プロパティ14525

Control


メソッド
メソッド14526

CreateHandle	Destroy	FreeHandle


参照
参照14527

TCanvas オブジェクト


TControlClass 型
TControlClass 型14528

参照

ユニット

Controls

宣言

type
  TControlClass = class of TControl;

説明

TControlClass 型はコントロールコンポーネント用のオブジェクト型参照です。


参照
参照14529

TControl コンポーネント


TControlState 型
TControlState 型14530

参照

ユニット

Controls

宣言

type
  TControlState = set of (csLButtonDown, csClicked, csPalette, csReadingState,
    csAlignmentNeeded, csFocusing, csCreating);

説明

TControlState 型は ControlState プロパティに使える値の集合を定義します。各フラグの意味を次の表で説明します。

フラグ	意味

csLButtonDown	左マウスボタンがクリックされたが，ボタンから指がまだ放されていない。これはすべてのマウスダウンイベントについて設定される

csClicked	csLButtonDown と同じだが ControlStyle に csClickEvents が入っている場合，つまりマウスダウンイベントがクリックとして解釈される場合にだけ設定される

csPalette	コントロールは実現を必要とするパレットを持っている

csReadingState	コントロールは自分の状態をストリームから読み出し中である

csAlignmentNeeded	コントロールは位置合わせが再び可能になった時点で自分自身を位置合わせし直す必要がある

csFocusing	アプリケーションはコントロールにフォーカスを与えるためのメッセージを処理中である。コントロールがフォーカスを受け取るとは保証されないが，再帰呼び出しは防止される

csCreating	コントロールまたはコントロールのオーナー (あるいはその両方) と下位コントロールを作成中である。このフラグはすべての作成が終わった時点でクリアされる


参照
参照14531

ControlState プロパティ


TControlStyle 型
TControlStyle 型14532

参照

ユニット

Controls

宣言

type
  TControlStyle = set of (csAcceptsControls, csCaptureMouse, csDesignInteractive,
    csClickEvents, csFramed, csSetCaption, csOpaque, csDoubleClicks, csFixedWidth,
    csFixedHeight);

説明

TControlStyle 型は ControlStyle プロパティに使える値の集合を定義します。各フラグの意味を次の表で説明します。

フラグ	意味

csAcceptControls	コントロールは設計時にそのコントロールの上へドロップされたコントロールの親になる

csCaptureMouse	コントロールはマウスイベントをキャプチャする

csDesignInteractive	コントロールは設計時に右マウスボタンクリックをコントロールを操作する左ボタンクリックにマップする

csClickEvents	コントロールはマウスクリックを受け取って応答できる

csFramed	コントロールは枠を持つ

csSetCaption	コントロールは別のキャプションが明示的に指定されていなければ，キャプションを Name プロパティに一致するよう変更する

csOpaque	コントロールは自分の背後にある項目を隠し，それらの項目の描画を不要にする

csDoubleClicks	コントロールはダブルクリックメッセージを受け取って応答できる。あるいはダブルクリックをクリックへマップできる

csFixedWidth	コントロールの幅は変更されない

csFixedHeight	コントロールの高さは変更されない


参照
参照14533

ControlStyle プロパティ


TCreateParams 型
TCreateParams 型14534

参照

ユニット

Controls

宣言

type
  TCreateParams = record
    Caption: PChar;
    Style: Longint;
    ExStyle: Longint;
    X, Y: Integer;
    Width, Height: Integer;
    WndParent: HWND;
    Param: Pointer
    WindowClass: TWndClass;
    WinClassName: array[0..63] of Char;
  end;

説明

TCreateParams 型は Windows にウィンドウハンドルを作成するよう指示するときに必要な情報を入れておくデータ構造体です。TCreateParams レコードの各フィールドは CreateWindowEx API 関数を呼び出すためのパラメータになります。

Delphi コンポーネントは自分たちの作成パラメータを CreateParams メソッドの中で初期化します。


参照
参照14535

CreateParams メソッド


TCustomControl コンポーネント
TCustomControl コンポーネント14536

参照	プロパティ	メソッド	コンポーネント

ユニット

Controls

説明

TCustomControl コンポーネントは複雑なビジュアルイメージを簡単に描画できるようにする特殊なウィンドウコントロールです。独自のウィンドウコントロールを作成する場合は TWinControl から直接派生させるのでなく，TCustomControl から派生させてください。

標準ウィンドウコントロールは自分自身の表示方法をすでに「知って」います。それらのコントロールは Windows の一部だからです。したがってボタンコンポーネントまたはチェックボックスコンポーネントは TWinControl を直接継承します。

しかし，独自のウィンドウコントロールを作成するときはコントロールの外観を定義しなくてはならないので，TCustomControl は TWinControl から継承されるすべての機能のほかに，表面への描画を簡単におこなうための Canvas プロパティと，WM_PAINT メッセージに対する応答として呼び出される仮想 Paint メソッドも提供します。

フォーカスを受け取る必要がないカスタムコントロールは TCustomControl でなく TGraphicControl から派生させてください。ウィンドウコントロールのために生じるオーバーヘッドは必要ないからです。


プロパティ
プロパティ14537

Canvas


メソッド
メソッド14538

Create	Paint	PaintWindow

Destroy


参照
参照14539

TWinControl コンポーネント

TGraphicControl コンポーネント


TGraphicControl コンポーネント
TGraphicControl コンポーネント14540

参照	プロパティ	メソッド	コンポーネント

ユニット

Controls

説明

TGraphicControl コンポーネントは非ウィンドウカスタムコントロールの出発点です。TGraphicControl は TControl 抽象コンポーネントから継承されるすべての機能のほかに，コントロールの表面への描画を簡単におこなうための Canvas プロパティと，WM_PAINT メッセージへの応答として呼び出される仮想 Paint メソッドも提供します。

フォーカスを受け取る必要があるコンポーネントは，TGraphicControl でなく TCustomControl から継承されたウィンドウコントロールにしなくてはなりません。


プロパティ
プロパティ14541

Canvas


メソッド
メソッド14542

Create	Destroy	Paint


参照
参照14543

TCustomControl コンポーネント

TControl コンポーネント


THintWindow コンポーネント
THintWindow コンポーネント14544

参照	プロパティ	メソッド	コンポーネント

ユニット

Controls

説明

THintWindow コンポーネントは TCustomControl を継承した単純なカスタムコントロールです。ヒントウィンドウは ShowHint プロパティが True に設定されているコントロールの上に実行時に表示される小さなポップアップウィンドウです。

THintWindow は TCustomControl から継承されるすべての機能のほかに，いくつかのプロパティとメソッドを提供します。ヒントウィンドウは継承した Canvas, Caption, Color の各プロパティをパブリックにします。THintWindow は CreateParams プロテクトメソッドと Paint メソッドをオーバーライドし，3 つの新しいメソッドを導入します。それらはアプリケーションがヒントウィンドウの表示に使う ActivateHint と，ヒントウィンドウがアプリケーションメッセージを監視して表示の終了時期を決められるようにする IsHintMsg と，ヒントウィンドウのウィンドウハンドルを廃棄する ReleaseHandle です。

アプリケーション用に新しい種類のヒントウィンドウコンポーネントを派生させたい場合は，THintWindow から新しい型を派生させ，必要に応じてメソッドをオーバーライドし，アプリケーションの起動時にその新しい型を HintWindowClass 変数に代入します。


プロパティ
プロパティ14545

Canvas	Caption	Color


メソッド
メソッド14546

ActivateHint	CreateParams	Paint

Create	IsHintMsg	ReleaseHandle


参照
参照14547

THintWindowClass 型


THintWindowClass 型
THintWindowClass 型14548

参照

ユニット

Controls

宣言

type
  THintWindowClass = class of THintWindow;

説明

THintWindowClass 型は THintWindow コンポーネント用のオブジェクト型参照型です。HintWindowClass 変数 (THintWindowClass 型) はアプリケーションがヒント表示用に作成するコンポーネントの型を決めます。


参照
参照14549

HintWindowClass 変数

THintWindow コンポーネント


TWinControl コンポーネント
TWinControl コンポーネント14550

参照	プロパティ	メソッド	イベント	コンポーネント

ユニット

Controls

説明

TWinControl コンポーネントはウィンドウコントロール用の抽象コンポーネント型です。これらのコントロールはウィンドウハンドルを持ち，標準 Windows コントロールもこれに含まれます。

TWinControl から直接新しいコンポーネントを派生させる場合はほとんどありません。通常は，キャンバスをサポートしペイントメッセージを処理する TCustomControl や，さらに特殊化した抽象コントロールである TButtonControl, TCustomComboBox, TCustomEdit, TCustomListBox などから派生させます。

TWinControl は抽象コントロール型 TControl から継承したすべてのほかに，多数のプロパティ，メソッド，イベントを提供します。それらの多くはよく知られており，ほとんどの標準 Delphi コントロールに見られます。しかし，コンポーネントを作成する人だけが関心を持つプロテクトメソッドも多くあります。


プロパティ
プロパティ14551

Brush	DefWndProc	Showing

Controls	Handle	TabOrder

ControlCount	HelpContext	TabStop

Ctl3D	ParentCtl3D	WindowHandle


メソッド
メソッド14552

AlignControls	DoKeyPress	PaintWindow

Broadcast	DoKeyUp	PaletteChanged

CanFocus	EnableAlign	ReadState

ChangeScale	FindNextControl	Realign

ContainsControl	Focused	RecreateWnd

ControlAtPos	GetClientOrigin	RemoveControl

Create	GetClientRect	Repaint

CreateHandle	GetDeviceContext	ScaleBy

CreateParams	GetTabOrderList	ScaleControls

CreateSubClass	HandleAllocated	ScrollBy

CreateWindowHandle	HandleNeeded	SelectFirst

CreateWnd	InsertControl	SelectNext

DefaultHandler	Invalidate	SetBounds

Destroy	IsControlMouseMsg	SetFocus

DestroyHandle	KeyDown	SetZOrder

DestroyWindowHandle	KeyPress	ShowControl

DestroyWnd	KeyUp	Update

DisableAlign	MainWndProc

DoEnter	NotifyControls	WndProc

DoExit	PaintControls	WriteComponents

DoKeyDown	PaintHandler


イベント
イベント14553

OnEnter	OnKeyDown	OnKeyUp

OnExit	OnKeyPress


参照
参照14554

ビジュアルコンポーネントライブラリのウィンドウコントロール


UpdateBoundsRect メソッド
UpdateBoundsRect メソッド14555

参照

適用

TControl

宣言

procedure UpdateBoundsRect(const R: TRect);

説明

UpdateBoundsRect メソッドはコントロールの Left, Top, Width, Height の各プロパティを R パラメータで渡された四角形に合わせて変更しますが，画面イメージは更新しません。UpdateBoundsRect は Windows によって加えられた変更と同期をとるために主にコントロールの内部で使われます。


参照
参照14556

BoundsRect プロパティ


VisibleChanging メソッド
VisibleChanging メソッド14557

参照

適用

TControl

宣言

procedure VisibleChanging; dynamic;

説明

VisibleChanging メソッドはコントロールが Visible プロパティの値を変更する直前に呼び出されるプロテクトメソッドです。コンポーネントが何らかの理由で可視状態を変更できない場合は例外が生成されます。


参照
参照14558

Visible プロパティ


WindowHandle プロパティ
WindowHandle プロパティ14559

参照

適用

TWinControl

宣言

property WindowHandle: HWnd;

説明

WindowHandle プロパティは Handle プロパティと同じウィンドウハンドルへのアクセスを提供しますが，そのウィンドウハンドルは保護されているのでコンポーネントの内部のコードだけがアクセスできます。

WindowHandle の利点は Handle が読み出し専用であるのに対し，書き込み可能であることです。したがって WindowHandle を通して既存のウィンドウコントロールへ新しいハンドルの割り当てができます。WindowHandle の値を読み出しても，有効なハンドルが自動的に作成されるわけではありません。Handle のアクセスメソッドは，まだハンドルがなければ，ハンドルを生成するために必ず HandleNeeded を呼び出します。WindowHandle の読み出しではゼロの値が返される場合もあります。


参照
参照14560

CreateWindowHandle メソッド

DestroyWindowHandle メソッド


WndProc メソッド
WndProc メソッド14561

参照

適用

TControl

宣言

procedure WndProc(var Message: TMessage); virtual;

説明

WndProc メソッドはコントロールに特定のメッセージ応答を提供します。Delphi コントロールの場合，WndProc がメッセージを受け取る最初のメソッドです。

TControl 用の WndProc は基本的なクリックとドラッグに対するマウスメッセージ応答を定義しており，その他のすべてのメッセージを Dispatch メソッドへ送ります。TWinControl はフォーカス，マウス，キーボードの各メッセージに対する応答を定義するために WndProc をオーバーライドし，その他のすべてを継承された WndProc へ送ります。

メッセージへの特殊な応答を提供するために独自のコンポーネント内で WndProc をオーバイライドする場合は，最後に他のメッセージをディスパッチするために必ず継承された WndProc を呼び出してください。


参照
参照14562

DefWndProc プロパティ

MainWndProc メソッド


目次 (折りたたみ)
コンポーネント開発者ヘルプ目次14563

項目のトピックリストを展開または折りたたみするにはフォルダアイコンをクリックします。トピックリストを表示するには下線付き文字をクリックします。すべてのフォルダを展開または折りたたみするにはタイトルでアイコンをクリックします。

ヘルプを表示するには F1 を押します。

	Delphi コンポーネントの作成を始める前に知っておく必要のある概念と要点。
	コンポーネントの作成のために用意するプロパティ，イベント，メソッドの作成，グラフィックの使い方，メッセージ処理とコンポーネントの登録のヘルプ。
	コンポーネント開発者リファレンス。
ショートカット:	ヘルプ項目を探すには［検索(S)］ボタンを使います。


目次 (展開)
コンポーネント開発者ヘルプ目次14564

項目のトピックリストを展開または折りたたみするにはフォルダアイコンをクリックします。トピックリストを表示するには下線付き文字をクリックします。すべてのフォルダを展開または折りたたみするにはタイトルでアイコンをクリックします。

ヘルプを表示するには F1 を押します。

	Delphi コンポーネントの作成を始める前に知っておく必要のある概念と要点。    コンポーネントとは何か    コンポーネント開発は何が違うのか    コンポーネントのさまざまな側面    コンポーネント開発者のための OOP
	コンポーネントの作成のために用意するプロパティ，イベント，メソッドの作成，グラフィックの使い方，メッセージ処理とコンポーネントの登録のヘルプ。    プロパティの作成    イベントの作成    メソッドの作成    コンポーネントにおけるグラフィックの使い方    メッセージの処理    コンポーネントの登録
	コンポーネント開発者リファレンス。    コンポーネント    オブジェクト    VCL 手続きと関数
ショートカット:	ヘルプ項目を探すには［検索(S)］ボタンを使います。


目次: 要点
コンポーネント開発者ヘルプ目次14565

項目のトピックリストを展開または折りたたみするにはフォルダアイコンをクリックします。トピックリストを表示するには下線付き文字をクリックします。すべてのフォルダを展開または折りたたみするにはタイトルでアイコンをクリックします。

ヘルプを表示するには F1 を押します。

	Delphi コンポーネントの作成を始める前に知っておく必要のある概念と要点。    コンポーネントとは何か    コンポーネント開発は何が違うのか    コンポーネントのさまざまな側面    コンポーネント開発者のための OOP
	コンポーネントの作成のために用意するプロパティ，イベント，メソッドの作成，グラフィックの使い方，メッセージ処理とコンポーネントの登録のヘルプ。
	コンポーネント開発者リファレンス。
ショートカット:	ヘルプ項目を探すには［検索(S)］ボタンを使います。


目次: アプリケーションの構築
コンポーネント開発者ヘルプ目次14566

項目のトピックリストを展開または折りたたみするにはフォルダアイコンをクリックします。トピックリストを表示するには下線付き文字をクリックします。すべてのフォルダを展開または折りたたみするにはタイトルでアイコンをクリックします。

ヘルプを表示するには F1 を押します。

	Delphi コンポーネントの作成を始める前に知っておく必要のある概念と要点。
	コンポーネントの作成のために用意するプロパティ，イベント，メソッドの作成，グラフィックの使い方，メッセージ処理とコンポーネントの登録のヘルプ。    プロパティの作成    イベントの作成    メソッドの作成    コンポーネントにおけるグラフィックの使い方    メッセージの処理    コンポーネントの登録
	コンポーネント開発者リファレンス。
ショートカット:	ヘルプ項目を探すには［検索(S)］ボタンを使います。


目次: コンポーネントライブラリ
コンポーネント開発者ヘルプ目次14567

項目のトピックリストを展開または折りたたみするにはフォルダアイコンをクリックします。トピックリストを表示するには下線付き文字をクリックします。すべてのフォルダを展開または折りたたみするにはタイトルでアイコンをクリックします。

ヘルプを表示するには F1 を押します。

	Delphi コンポーネントの作成を始める前に知っておく必要のある概念と要点。
	コンポーネントの作成のために用意するプロパティ，イベント，メソッドの作成，グラフィックの使い方，メッセージ処理とコンポーネントの登録のヘルプ。
	コンポーネント開発者リファレンス。    コンポーネント    オブジェクト    VCL 手続きと関数
ショートカット:	ヘルプ項目を探すには［検索(S)］ボタンを使います。


AllEqual メソッド
AllEqual メソッド14568

参照	例

適用

TPropertyEditor

宣言

function AllEqual: Boolean; virtual;

説明

AllEqual メソッドは選択したコンポーネントグループの特定のプロパティの値がすべて等しい場合 True を返します。オブジェクトインスペクタは AllEqual を呼び出すことで選択したコンポーネントに共通したプロパティの値を表示するかどうかを決定します。

TPropertyEditor.AllEqual は PropCount が 1 のときのみ True を返します。これは選択された複数のコンポーネントを常に異なるものとして扱うことを意味します。AllEqual は個々のプロパティエディタで AllEqual をオーバーライドすることで，編集したいプロパティが同じ値を持つ場合に True を返すように変更できます。


例14569

TOrdinalProperty は GetOrdValue メソッドがすべて同じ値を返す場合，AllEqual をオーバーライドして順序型プロパティを等しく設定します。

function TOrdinalProperty.AllEqual: Boolean;

var
  I: Integer;
  V: Longint;

begin
  Result := False;	{ 値が異なることを前提として開始します }

  if PropCount > 1 then	{ 複数の値がある場合... }
  begin
    V := GetOrdValue;	{ 最初の値を取り出します }
    for I := 1 to PropCount - 1 do	{ それ以外のすべての値と比較します }

      if GetOrdValueAt(I) <> V then Exit;	{ 異なる値があれば False を返します }

  end;
  Result := True;	{ すべて等しい場合，ここにきます }

end;


参照
参照14570

PropCount プロパティ


Component プロパティ
Component プロパティ14571

参照

適用

TComponentEditor

宣言

property Component: TComponent;

説明

Component プロパティはコンポーネントエディタオブジェクトが現在編集中のコンポーネントへの読み出し専用の参照です。コンポーネントエディタの Create メソッドに渡されるパラメータの 1 つが Component の値を設定します。


参照
参照14572

Designer プロパティ


Copy メソッド
Copy メソッド14573

参照

適用

TComponentEditor

宣言

procedure Copy; virtual;

説明

Copy メソッドは編集後のコンポーネントをアプリケーションがクリップボードにコピーするときに，コンポーネントエディタオブジェクトが形式をクリップボードに追加できるようにします。

設計時にクリップボードにコンポーネントをコピーすると，フィールドイメージ (コンポーネントの WriteState メソッドが作成するイメージ) がクリップボードに自動的に置かれ，Copy が呼び出されます。デフォルトの場合，Copy メソッドは何もしません。Copy はコンポーネントエディタ型でオーバーライドでき，クリップボードに別の情報 (追加情報など) を書き込めます。Delphi はこのような情報を無視しますが，別のアプリケーションはこの情報を使うことがあります。


参照
参照14574

WriteState メソッド


コンポーネントエディタの Create メソッド
Create メソッド14575

参照

適用

TComponentEditor

宣言

constructor Create(AComponent: TComponent; ADesigner: TFormDesigner); virtual;

説明

Create コンストラクタはコンポーネントエディタオブジェクトを作成して初期化します。設計時にコンポーネントを選択するたびに，Delphi は GetComponentEditor 関数を呼び出してそのコンポーネントのコンポーネントエディタオブジェクトを作成します。コンポーネントエディタオブジェクトの型はコンポーネント型に対して登録したエディタの型によって決まります。

Create に指定する 2 つのパラメータは選択したコンポーネントと現在使用中のデザイナを示します。それぞれプロパティ Component と Designer の値になります。


参照
参照14576

GetComponentEditor 関数

RegisterComponentEditor 手続き


Designer プロパティ
Designer プロパティ14577

参照

適用

TPropertyEditor, TComponentEditor

宣言

property Designer: TFormDesigner;

説明

Designer プロパティは編集中のプロパティまたはコンポーネントを含んでいるフォームデザイナオブジェクトへの読み出し専用の参照です。プロパティエディタオブジェクトまたはコンポーネントエディタオブジェクトの Create メソッドに指定するパラメータの 1 つが Designer の値になります。


参照
参照14578

TFormDesigner オブジェクト


Edit メソッド
Edit メソッド14579

参照

適用

TPropertyEditor, TComponentEditor

宣言

procedure Edit; virtual;

説明

プロパティエディタまたはコンポーネントエディタの Edit メソッドはプロパティまたはコンポーネント全体を編集できるダイアログボックスを実行します。プロパティの値の列をダブルクリックするか値の横の［...］ボタンをクリックするとオブジェクトインスペクタが Edit を呼び出します。設計中のフォームで選択したコンポーネントをダブルクリックするとフォームデザイナが Edit を呼び出します。

TPropertyEditor から継承した Edit メソッドは何もしません。Edit をオーバーライドしてダイアログボックスを表示して読み出せば，プロパティエディタを指定できます。

TComponentEditor から継承した Edit メソッドはエディタ用の ExecuteVerb メソッドを呼び出し，コンポーネントエディタの動詞リストの最初の動詞を実行します。


参照
参照14580

ExecuteVerb メソッド


EditProperty メソッド
EditProperty メソッド14581

参照

適用

TDefaultEditor

宣言

procedure EditProperty(PropertyEditor: TPropertyEditor;
  var Continue, FreeEditor: Boolean); virtual;

説明

EditProperty メソッドはデフォルトエディタを使うコンポーネントで編集するデフォルトプロパティを選択します。TDefaultEditor の Edit メソッドは基本選択項目リストでプロパティを選択するために EditProperty を呼び出します。

EditProperty はイベント OnClick, OnChange, OnCreate をこの順に探し，(TMethodProperty エディタを使って) このイベントのプロパティ値を編集します。コンポーネントにこれらのイベントがどれもない場合，PropertyEdit はコンポーネントで最初に宣言しているプロパティを選択してそのエディタを呼び出します。


参照
参照14582

Edit メソッド


EPropertyError オブジェクト
EPropertyError オブジェクト14583

参照

ユニット

DsgnIntf

宣言

type
  EPropertyError = class(Exception);

説明

EPropertyError オブジェクトはプロパティの設定エラーを示します。プロパティエディタオブジェクトの SetValue メソッドは指定したプロパティ値を設定できないと，EPropertyError 例外を生成します。


参照
参照14584

SetValue メソッド


ExecuteVerb メソッド
ExecuteVerb メソッド14585

参照

適用

TComponentEditor

宣言

procedure ExecuteVerb(Index: Integer); virtual;

説明

ExecuteVerb メソッドはコンポーネントエディタの動詞リストで Index パラメータで指定した動詞を実行します。ExecuteVerb は 0 から GetVerbCount - 1 までのインデックス値ごとに有効なアクションをしなくてはなりません。各インデックス値に対するアクションは GetVerb がコンテキストメニューに示す文字列に対応していなくてはなりません。

動詞を実行するには，たいていの場合コンポーネントのコンテキストメニューで項目を選択します。ただし設計時にコンポーネントをダブルクリックすると，デフォルトのプロパティエディタがコンポーネントの動詞リストの最初の動詞を呼び出します。


参照
参照14586

GetVerb メソッド

GetVerbCount メソッド


GetAttributes メソッド
GetAttributes メソッド14587

参照

適用

TPropertyEditor

宣言

function GetAttributes: TPropertyAttributes; virtual;

説明

GetAttributes メソッドはプロパティを選択したときにどのツールがそのプロパティに使えるかを調べるのにオブジェクトインスペクタが使う情報を返します。TPropertyAttributes 型集合の別の値を使えば値のドロップダウンリスト，下位プロパティリスト，ダイアログボックスなどをプロパティの編集用にオブジェクトインスペクタに含めなくてはならないことを指定できます。

ほとんどのプロパティエディタオブジェクト型は処理するデータの種類に従って GetAttributes をオーバーライドします。


参照
参照14588

TPropertyAttributes 型


GetComponent メソッド
GetComponent メソッド14589

参照

適用

TPropertyEditor

宣言

function GetComponent(Index: Integer): TComponent;

説明

GetComponent メソッドは編集中のコンポーネントのプロパティエディタリストで Index パラメータで指定するコンポーネントを返します。プロパティエディタの GetAttributes メソッドが paMultiSelect を含む値を返す (つまり選択した複数のオブジェクトの値をエディタが同時に編集できる) 場合，エディタは編集中のコンポーネントのリストを保持しています。

AllEqual などのメソッドは別のコンポーネントにアクセスしてそれぞれのプロパティ値を比較する必要があります。


参照
参照14590

GetAttributes メソッド

AllEqual メソッド


GetComponentEditor 関数
GetComponentEditor 関数14591

参照

ユニット

DsgnIntf

宣言

function GetComponentEditor(Component: TComponent;
  Designer: TFormDesigner): TComponentEditor;

説明

GetComponentEditor 関数は RegisterComponentEditor 手続きが登録したコンポーネントエディタのリストを検索し，Component の適切な型のコンポーネントエディタインスタンスを作成しそのインスタンスを返します。Component の型用に登録されているコンポーネントエディタがないと，GetComponentEditor は TDefaultEditor のインスタンスを作成して返します。

Delphi フォームデザイナは設計時にフォームで選択した各コンポーネントごとに GetComponentEditor を呼び出し，コンポーネントを選択解除したときに返されるコンポーネントエディタを廃棄します。Component パラメータはエディタを使うコンポーネントであり，Designer はエディタを使うフォームデザイナです。


参照
参照14592

RegisterComponentEditor 手続き

TDefaultEditor オブジェクト


GetComponentProperties 手続き
GetComponentProperties 手続き14593

参照

ユニット

DsgnIntf

宣言

procedure GetComponentProperties(Components: TComponentList; Filter: TTypeKinds;
  Designer: TFormDesigner; Proc: TGetPropEditProc);

説明

GetComponentProperties 手続きはオブジェクトインスペクタに Components パラメータで指定するコンポーネントのプロパティとプロパティエディタをパディングします。Components にコンポーネントが 1 つしかない場合，そのすべてのパブリッシュプロパティが表示されます。Components に複数のコンポーネントがある場合，作成されるプロパティリストには複数のコンポーネントすべてが共有するプロパティだけが表示されます。

プロパティインスペクタの GetProperties メソッドが下位プロパティを表示する場合と同様に，オブジェクトインスペクタはプロパティを表示するため GetComponentProperties を呼び出します。TDefaultEditor オブジェクトも GetComponentProperties を呼び出してプロパティリストを作成し，そのリストでデフォルト時に編集するプロパティを選択します。

Filter パラメータはリスト (通常の場合イベントのメソッドポインタプロパティとそれ以外の型のプロパティを区別するリスト) 内にどの型のプロパティを 1 つまたは複数個表示するかを決めます。Designer パラメータは選択したコンポーネントを含むフォームデザイナを表し，プロパティエディタオブジェクトに渡されます。


参照
参照14594

GetProperties メソッド

TDefaultEditor オブジェクト


GetEditLimit メソッド
GetEditLimit メソッド14595

適用

TPropertyEditor, TCustomGrid

説明

GetEditLimit メソッドは 2 つあります。1 つはプロパティエディタオブジェクト用，もう 1 つはグリッドのインプレースエディタ用で，それぞれ編集フィールドに入力できる最大文字数を指定します。

PropertyEditor オブジェクトの GetEditLimit メソッド

CustomGrid コンポーネントの GetEditLimit メソッド


GetEditLimit メソッド
GetEditLimit メソッド14596

参照

適用

TPropertyEditor

宣言

function GetEditLimit: Integer; virtual;

説明

GetEditLimit メソッドはオブジェクトインスペクタの値として入力できる文字数を制限します。デフォルト値は 255 文字ですが，プロパティエディタの型によっては GetEditLimit をオーバーライドしてもっと短い長さの名前しか入力できないように制限できます。

不正な値を防ぐため入力長を制限するには，SetValue メソッドに制限長を超える入力文字列を受け付けさせないで拒否させるように GetEditLimit をオーバーライドしなくてはなりません。


参照
参照14597

SetValue メソッド


GetName メソッド
GetName メソッド14598

参照

適用

TPropertyEditor

宣言

function GetName: string; virtual;

説明

GetName メソッドはプロパティエディタが編集したプロパティの名前を返します。すべての下線はスペースに変換します。オブジェクトインスペクタは GetName を呼び出してプロパティ列に表示する名前を取り出します。

GetName をオーバーライドする必要はほとんどありませんが，オーバーライドして別の名前を返したり名前文字列の形式を変更したりできます。


参照
参照14599

GetValue メソッド


GetProperties メソッド
GetProperties メソッド14600

参照	例

適用

TPropertyEditor

宣言

procedure GetProperties(Proc: TGetPropEditProc); virtual;

説明

オブジェクトインスペクタでオブジェクト型プロパティを展開して下位プロパティを表示することを指定すると，GetProperties メソッドは下位プロパティとそのプロパティエディタのリストを返します。GetProperties は GetAttributes が paSubProperties を含む集合を返す場合だけ呼び出せます。

デフォルトの GetProperties メソッドは何もせず，下位プロパティも追加しません。下位プロパティを返さなくてはならないプロパティエディタは GetProperties をオーバーライドして，Proc パラメータで指定する手続きを呼び出し，下位プロパティとそのエディタのリストを返します。

TClassProperty は GetProperties をオーバーライドして，1 つのオブジェクト型プロパティのパブリッシュプロパティリストをドロップダウン形式で表示します。TSetProperty は GetProperties をオーバーライドして集合型プロパティの各要素ごとに集合要素エディタを返します。


例
例14601

次のコードは TSetProperty が GetProperties メソッドをオーバーライドするコードです。

procedure TSetProperty.GetProperties(Proc: TGetPropEditProc);

var
  I: Integer;

begin

  with GetTypeData(GetTypeData(GetPropType)^.CompType)^ do

    for I := MinValue to MaxValue do	{ 値ごとに指定します }

      Proc(TSetElementProperty.Create(FDesigner, FPropList, FPropCount, I));	{ Proc を呼び出します }

end;


参照
参照14602

GetAttributes メソッド


GetPropType メソッド
GetPropType メソッド14603

参照

適用

TPropertyEditor

宣言

function GetPropType: PTypeInfo;

説明

GetPropType メソッドは編集中の (1 つまたは複数の) プロパティの型情報レコードポインタを返します。GetPropType をオーバーライドする必要はありません。戻り値が示すレコードは編集中の型についての情報を示す実行時型情報 (RTTI) レコードです。


参照
参照14604

ClassInfo メソッド


GetValue メソッド
GetValue メソッド14605

参照	例

適用

TPropertyEditor

宣言

function GetValue: string; virtual;

説明

GetValue メソッドは編集中のプロパティの現在値を示す文字列を返します。GetValue は Value プロパティの read 部のためのメソッドです。


例
例14606

TIntegerProperty は GetValue をオーバーライドしてプロパティの数値を文字列に変換します。

function TIntegerProperty.GetValue: string;

begin

  Result := IntToStr(GetOrdValue);

end;


参照
参照14607

SetValue メソッド

Value プロパティ

GetName メソッド


GetValues メソッド
GetValues メソッド14608

参照	例

適用

TPropertyEditor

宣言

procedure GetValues(Proc: TGetStrProc); virtual;

説明

GetValues メソッドはプロパティエディタに表示する値のリストを作成します。Proc パラメータは GetValues メソッドがプロパティの値ごとに呼び出さなくてはならない手続きを表し，そのつど値を表す文字列を渡します。GetValues は GetAttributes が返す集合に paValueList が含まれている場合だけ呼び出せます。


例
例14609

Yes, No, Maybe の 3 つの値をとるプロパティは GetValues を次のようにオーバーライドします。

procedure TSamplePropertyEditor.GetValues(Proc: TGetStrProc);
begin
  Proc('Yes');

  Proc('No');

  Proc('Maybe');
end;


参照
参照14610

GetAttributes メソッド


GetVerb メソッド
GetVerb メソッド14611

参照

適用

TComponentEditor

宣言

function GetVerb(Index: Integer): string; virtual;

説明

GetVerb メソッドは Index パラメータで指定する有効なインデックス値に対応する文字列を返します。GetVerb は 0 から GetVerbCount - 1 までのすべてのインデックス値に対して有効な文字列を返さなくてはなりません。

返される文字列はコンテキストメニューに表示され，アンド記号 (&) と省略記号 (...) を正しく使っていなくてはなりません。ExecuteVerb メソッドは GetVerb が返す文字列に対応するアクションをします。


参照
参照14612

GetVerbCount メソッド

ExecuteVerb メソッド


GetVerbCount メソッド
GetVerbCount メソッド14613

参照

適用

TComponentEditor

宣言

function GetVerbCount: Integer; virtual;

説明

GetVerbCount メソッドはメソッド GetVerb と ExecuteVerb の有効なインデックスの数を返します。どちらのメソッドも 0 から GetVerbCount - 1 のインデックスが示す有効なアクションをしなくてはなりません。


参照
参照14614

GetVerb メソッド

ExecuteVerb メソッド


Initialize メソッド
Initialize メソッド14615

参照

適用

TPropertyEditor

宣言

procedure Initialize; virtual;

説明

Initialize メソッドはプロパティエディタに必要なすべての初期化をします。プロパティエディタに時間を要する設定が必要な場合，Create ではなく Initialize で指定しなくてはなりません。

オブジェクトインスペクタはプロパティエディタオブジェクトを作成した後，それを使う前に Initialize を呼び出します。オブジェクトインスペクタはプロパティエディタを一度も使わないうちに破棄することがあるので，長い設定手続きは避ける方が早く処理できます。

プロパティエディタのコンストラクタは短く迅速にし，時間がかかる設定手続きは Initialize に割り当ててください。


参照
参照14616

Create メソッド


PrivateDirectory プロパティ
PrivateDirectory プロパティ14617

適用

TPropertyEditor

宣言

property PrivateDirectory: string;

説明

PrivateDirectory プロパティはプロパティエディタが補助ファイルまたは状態ファイルを格納するディレクトリを指定します。PrivateDirectory は読み出し専用のプロパティです。デフォルトの場合，PrivateDirectory は DELPHI.EXE を含むディレクトリまたは DELPHI.INI で指定する作業用ディレクトリを返します。


PropCount プロパティ
PropCount プロパティ14618

参照

適用

TPropertyEditor

宣言

property PropCount: Integer;

説明

PropCount プロパティはプロパティエディタが現在編集中のプロパティの数を返します。この数はプロパティエディタオブジェクトの Create コンストラクタに渡される数です。PropCount は同じプロパティを共有する複数のコンポーネントを選択する場合だけ 1 より大きい値になります。


参照
参照14619

Create メソッド


RegisterComponentEditor 手続き
RegisterComponentEditor 手続き14620

参照	例

ユニット

DsgnIntf

宣言

procedure RegisterComponentEditor(ComponentClass: TComponentClass;
  ComponentEditor: TComponentEditorClass);

説明

RegisterComponentEditor 手続きはコンポーネントエディタ型を登録済みのコンポーネントエディタリストに追加します。Delphi フォームデザイナが選択したコンポーネントのエディタを作成するために GetComponentEditor 関数を呼び出すと，GetComponentEditor は登録済みのコンポーネントエディタのリストを検索します。指定した型のエディタが登録されていない場合，GetComponentEditor は TDefaultEditor インスタンスを返します。

フォームデザイナがユーザーの作成するコンポーネントエディタを使うようにするには，RegisterComponentEditor を呼び出してエディタを登録し，エディタを使って編集するコンポーネントの型とエディタの型を指定しなくてはなりません。


例
例14621

次のコードはコンポーネントエディタ型 TMyComponentEditor をコンポーネント型 TMyComponent のエディタ型として登録します。

procedure Register;

begin

  RegisterComponentEditor(TMyComponent, TMyComponentEditor);

end;


参照
参照14622

GetComponentEditor 関数


RegisterPropertyEditor 手続き
RegisterPropertyEditor 手続き14623

参照

ユニット

DsgnIntf

宣言

procedure RegisterPropertyEditor(PropertyType: PTypeInfo; ComponentClass: TClass;
  const PropertyName: string; EditorClass: TPropertyEditorClass);

説明

RegisterPropertyEditor 手続きはプロパティエディタをプロパティ型に関連付けます。必要に応じてコンポーネントの特定の型とそのコンポーネントの特定のプロパティに限定できます。


参照
参照14624

TPropertyEditor オブジェクト


SetValue メソッド
SetValue メソッド14625

参照

適用

TPropertyEditor オブジェクト

宣言

procedure SetValue(const Value: string); virtual;

説明

SetValue メソッド は Value で指定する文字列を解析し，必要に応じて正しいプロパティ値にするために変換します。SetValue は Value プロパティの write 部のためのメソッドです。

TIntegerProperty は SetValue をオーバーライドして Value を等価な数値に変換します。


参照
参照14626

GetValue メソッド

Value プロパティ


TCaptionProperty オブジェクト
TCaptionProperty オブジェクト14627

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TCaptionProperty オブジェクトはプロパティ Caption と Text のデフォルトのプロパティエディタです。このエディタは標準の文字列プロパティエディタですが，paAutoUpdate 属性を持っているのでキー入力ごとにプロパティを更新します。

TCaptionProperty は TStringProperty からすべてを継承するほか，GetAttributes をオーバーライドして複数選択と自動更新を可能にします。


メソッド
メソッド14628

GetAttributes


参照
参照14629

Caption プロパティ

Text プロパティ

TStringProperty オブジェクト


TCharProperty オブジェクト
TCharProperty オブジェクト14630

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TCharProperty オブジェクトは文字型プロパティ用のプロパティエディタです。プロパティ型が Char の部分範囲 (A ～ Z など) の場合，エディタはプロパティ型の範囲内の文字だけの入力に制限します。

TCharProperty は TOrdinalProperty からすべて継承するほか，メソッド GetValue と SetValue をオーバーライドして可視文字だけを表示し，個々の文字と # 文字が前に付いた ASCII 値を受け付けます。


メソッド
メソッド14631

GetValue	SetValue


参照
参照14632

TOrdinalProperty オブジェクト


TClassProperty オブジェクト
TClassProperty オブジェクト14633

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TClassProperty オブジェクトはオブジェクトであるすべてのプロパティ用のデフォルトのプロパティエディタです。オブジェクト型プロパティを直接は変更できませんが，エディタがオブジェクト型の名前を表示し，プロパティの下位プロパティとしてオブジェクトのプロパティを編集可能にします。

TClassProperty は TPropertyEditor からすべてを継承するほか，GetAttributes をオーバーライドして下位プロパティを作成し，GetProperties をオーバーライドしてその下位プロパティを表示し，GetValue をオーバーライドしてオブジェクト型の名前を表示します。


メソッド
メソッド14634

GetAttributes	GetProperties	GetValue


参照
参照14635

TPropertyEditor オブジェクト


TColorProperty オブジェクト
TColorProperty オブジェクト14636

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TColorProperty オブジェクトは Color プロパティや TColor 型の他のプロパティ用のデフォルトのプロパティエディタです。カラープロパティエディタは標準の clXXX カラー定数がある場合，その 1 つとして現在のカラー値を表示します。カラー定数が存在しない場合，16 進値として表示します。エディタはすべての clXXX カラー定数のドロップダウンリストを表示します。

TColorProperty は TIntegerProperty からすべてを継承するほか，Edit メソッドをオーバーライドして Windows の［Color Selection］ダイアログボックスを使い，GetAttributes メソッドをオーバーライドして複数型の編集を可能にし，GetValue と SetValue をオーバーライドして型カラー値ごとにすべて異なる方法で処理し，GetValues をオーバーライドしてすべての標準カラー定数を表示します。


メソッド
メソッド14637

Edit	GetValue	SetValue

GetAttributes	GetValues


参照
参照14638

TColor 型

Color プロパティ

TIntegerProperty オブジェクト


TComponentEditor オブジェクト
TComponentEditor オブジェクト14639

参照	プロパティ	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TComponentEditor オブジェクトはすべてのコンポーネントエディタの基本です。TComponentEditor そのものは抽象オブジェクトであり，実際にはコンポーネントを編集しません。デフォルトのコンポーネントエディタは TComponentEditor の下位オブジェクトである TDefaultEditor です。これは作業用 Edit メソッドです。

新しいコンポーネントエディタを作成する理由は次の表に説明するように 3 つあります。

理由	オーバーライドするメソッド

コンテキストメニューへの項目の追加	GetVerb, GetVerbCount

設計時のダブルクリックアクションの変更	Edit

クリップボードへの別の形式の貼り付け	Copy

新しいコンポーネントエディタ型を派生する場合，RegisterComponentEditor 手続きを呼び出してそのエディタ型を登録しなくてはなりません。

設計時にフォームでコンポーネントを選択すると，フォームデザイナはコンポーネント型に基づいてコンポーネントエディタを作成します。エディタのプロパティ Component と Designer はそれぞれコンポーネントインスタンスとアクティブなフォームデザイナを参照します。

コンポーネントをダブルクリックすると，フォームデザイナがコンポーネントエディタの Edit メソッドを呼び出す

右クリックするか Alt+F10 を押してコンテキストメニューを呼び出すと，コンポーネントエディタは GetVerbCount を呼び出してから各項目ごとに GetVerb を呼び出してコンテキストメニューを作成する。コンテキストメニュー項目を選択すると，エディタは ExecuteVerb を呼び出す

コンポーネントをクリップボードにコピーすると，コンポーネントエディタはまずコンポーネントの記述をコピーしてから Copy メソッドを呼び出す。このメソッドはコンポーネントエディタがクリップボードに別の形式をコピーできるようにする。別の形式を貼り付けてもフォームデザイナはそれを無視するが，別のアプリケーションがその形式を認識できる

メモ:	コンポーネントエディタがコンポーネントを変更する場合，そのつど Designer.Modified を呼び出さなくてはなりません。これはフォームデザイナがコンポーネントの変更後の状態に合わせて画面上のイメージを更新できるようにします。


プロパティ
プロパティ14640

Component	Designer


メソッド
メソッド14641

Copy	Edit	GetVerb

Create	ExecuteVerb	GetVerbCount


参照
参照14642

TComponentEditorClass 型


TComponentEditorClass 型
TComponentEditorClass 型14643

参照

ユニット

DsgnIntf

宣言

type
  TComponentEditorClass = class of TComponentEditor;

説明

TComponentEditorClass 型はコンポーネントエディタオブジェクトのオブジェクト参照型です。


参照
参照14644

TComponentEditor オブジェクト


TComponentList オブジェクト
TComponentList オブジェクト14645

参照	オブジェクト

ユニット

DsgnIntf

説明

TComponentList オブジェクトは標準のリストオブジェクト TList へのコンポーネントベースのインターフェースを提供するリストオブジェクトです。TComponentList はその項目がどれも TComponent の下位コンポーネントであるとみなします。それ以外はコンポーネントリストオブジェクトは他のリストオブジェクトと同じように動作します。

GetComponentProperties 手続きはオブジェクトインスペクタのプロパティリストを作成するとき，コンポーネントリストを使って現在選択しているすべてのコンポーネントを保持します。コンポーネントリストオブジェクトはプロパティエディタがその内部でだけ使うので，ユーザーが作成する必要はありません。


参照
参照14646

TList オブジェクト

GetComponentProperties 手続き


TComponentProperty オブジェクト
TComponentProperty オブジェクト14647

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TComponentProperty オブジェクトはコンポーネントであるプロパティ用のデフォルトのプロパティエディタです。このようなコンポーネントプロパティのプロパティは変更できませんが，同じフォームの互換コンポーネントの名前は指定できます。ActiveControl プロパティは TComponentProperty オブジェクトを使うプロパティの例です。

TComponentProperty は TPropertyEditor からすべて継承するほか，GetAttributes メソッドをオーバーライドしてソートした有効なコンポーネントのドロップダウンリストを表示し，GetEditLimit メソッドをオーバーライドして入力文字を 64 文字に制限し，GetValue メソッドをオーバーライドして指定コンポーネントの名前を表示し，GetValues メソッドをオーバーライドして互換コンポーネントのドロップダウンリストを作成し，SetValue をオーバーライドしてコンポーネント名を受け付けます。


メソッド
メソッド14648

GetAttributes	GetValue	SetValue

GetEditLimit	GetValues


参照
参照14649

TPropertyEditor オブジェクト


TCursorProperty オブジェクト
TCursorProperty オブジェクト14650

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TCursorProperty オブジェクトは TCursor 型プロパティ用のデフォルトのプロパティエディタです。カーソル値が標準カーソルのどれかならば，エディタは値を crXXX カーソル値の 1 つとして表示します。そうでなければ，値は 16 進値として表示されます。

TCursorProperty は TIntegerProperty からすべてを継承するほか，GetAttributes メソッドをオーバーライドして値のドロップダウンリストを作成し，GetValues メソッドをオーバーライドしてリストを作成し，メソッド GetValue と SetValue をオーバーライドして数値または定義済みのカーソル定数を受け付け表示します。


メソッド
メソッド14651

GetAttributes	GetValues	SetValue

GetValue


参照
参照14652

TCursor 型

TIntegerProperty オブジェクト


TDefaultEditor オブジェクト
TDefaultEditor オブジェクト14653

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TDefaultEditor は Delphi フォームデザイナのデフォルトのコンポーネントエディタです。つまり特定の型のコンポーネント用のカスタマイズコンポーネントエディタを登録する場合を除き，フォームデザイナはフォーム内の各コンポーネントを編集するために TDefaultEditor のインスタンスを作成します。

TDefaultEditor は TComponentEditor から継承した Edit メソッドをオーバーライドして関連付けられたコンポーネントのイベント OnCreate, OnChanged, OnClick のうち最初に見つかったもののイベントハンドラを生成します。コンポーネントエディタが GetVerb メソッドをオーバーライドしてコンテキストメニューに項目を追加すると，メニューに最初に追加した項目がデフォルトのダブルクリックアクションになります。


メソッド
メソッド14654

Edit	EditProperty


参照
参照14655

TComponentEditor オブジェクト


TEnumProperty オブジェクト
TEnumProperty オブジェクト14656

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TEnumProperty オブジェクトはすべての列挙型用のデフォルトプロパティエディタです。列挙型エディタはすべての列挙型値のドロップダウンリストをサポートします。

TEnumProperty は TOrdinalProperty からすべてを継承するほか，GetAttributes メソッドをオーバーライドして値のドロップダウンリストを作成し，GetValues メソッドをオーバーライドしてリストを作成し，メソッド GetValue と SetValue をオーバーライドして定義済みの列挙型の値を受け付け表示します。


メソッド
メソッド14657

GetAttributes	GetValues	SetValue

GetValue


参照
参照14658

TOrdinalProperty オブジェクト


TFloatProperty オブジェクト
TFloatProperty オブジェクト14659

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TFloatProperty オブジェクトはすべての浮動小数点数プロパティ用のデフォルトのプロパティエディタです。

TFloatProperty は TPropertyEditor からすべてを継承するほか，AllEqual メソッドをオーバーライドして浮動小数点値を比較し，メソッド GetValue と SetValue をオーバーライドして浮動小数点数を受け付け表示します。


メソッド
メソッド14660

AllEqual	GetValue	SetValue


参照
参照14661

TPropertyEditor オブジェクト


TFontProperty オブジェクト
TFontProperty オブジェクト14662

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TFontProperty オブジェクトは Font プロパティ用のデフォルトのプロパティエディタです。フォントプロパティエディタはフォントオブジェクトの各属性を下位プロパティとして編集できるようにするほか，Windows の標準の［Font Selection］ダイアログボックスにアクセスできるようにします。

TFontProperty は TClassProperty からすべて継承するほか，GetAttributes メソッドをオーバーライドしてダイアログボックスエディタの使用を可能にし，Edit メソッドをオーバーライドして Windows の標準の［Font Selection］ダイアログボックスを使ってフォントプロパティ全体を編集します。


メソッド
メソッド14663

Edit	GetAttributes


参照
参照14664

TClassProperty オブジェクト


TFontNameProperty オブジェクト
TFontNameProperty オブジェクト14665

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TFontNameProperty オブジェクトはフォント名用のデフォルトのプロパティエディタです。このエディタは Windows で現在使えるすべてのフォントの名前をドロップダウン形式で表示します。

TFontNameProperty は TStringProperty からすべて継承するほか，GetAttributes メソッドをオーバーライドして値をドロップダウン形式で表示できるようにし，GetValues メソッドをオーバーライドしてリストを生成します。


メソッド
メソッド14666

GetAttributes	GetValues


参照
参照14667

TStringProperty オブジェクト


TFormDesigner オブジェクト
TFormDesigner オブジェクト14668

参照	オブジェクト

ユニット

DsgnIntf

説明

TFormDesigner オブジェクトは Delphi のフォームデザイナが継承する抽象型です。TFormDesigner は TDesigner から継承するプロパティとメソッドのほかに，コードエディタのイベントハンドラを処理する 5 個の抽象メソッドを宣言します。

メソッド

メソッド	使い方

CreateComponent	指定した場所とサイズで，指定したコンポーネントを親として使って，指定したコンポーネントを作成する

CreateMethod	指定の名前と型のイベントハンドラを作成し，メソッドポインタを返す

GetComponent	パラメータとして渡した名前に一致するコンポーネントを返す。現在のフォームが使うフォーム内の名前を解析する

GetComponentName	パラメータとして渡したコンポーネントの名前を返す。GetComponent と逆である

GetComponentNames	指定した型のプロパティに関連付けることができるコンポーネントごとに，渡されたメソッドを呼び出す。これには，現在のフォームが使うフォーム内の項目が含まれる

GetMethodName	指定のイベントハンドラの名前を返す

GetMethods	特定の型のメソッドリストを作成する

GetPrivateDirectory	フォームデザイナの専用ディレクトリを返す

IsComponentLinkable	指定したコンポーネントが現在のフォームが使うフォーム内にある場合，True を返す

MakeComponentLinkable	指定したコンポーネントのユニットを設計中のフォームの uses 節に追加する

MethodExists	指定のイベントハンドラが存在すれば True を返す

MethodFromAncestor	指定したメソッドを，現在のフォームではなく上位フォームが導入していた場合，True を返す

RenameMethod	既存のイベントハンドラの名前を変更する

Revert	指定したプロパティを，上位フォームにある対応するコンポーネントの値に戻すようにフォーム設計者に求める

ShowMethod	入力カーソルが指定のイベントハンドラにあるコードエディタを起動する


参照
参照14669

TDesigner オブジェクト


TGetPropEditProc 型
TGetPropEditProc 型14670

参照

ユニット

DsgnIntf

宣言

type
  TGetPropEditProc = procedure(Prop: TPropertyEditor) of object;

説明

TGetPropEditProc 型は GetProperties メソッドと GetComponentProperties 手続きへのパラメータの 1 つとして使うメソッドポインタ型です。


参照
参照14671

GetProperties メソッド

GetComponentProperties 手続き


TIntegerProperty オブジェクト
TIntegerProperty オブジェクト14672

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TIntegerProperty オブジェクトはすべてのサイズのすべての整数型用のデフォルトのプロパティエディタです。TIntegerProperty は編集中の特定の整数型の範囲内に値を制限します。

TIntegerProperty は TOrdinalProperty からすべて継承するほか，メソッド GetValue と SetValue をオーバーライドして数値を受け付け表示します。


メソッド
メソッド14673

GetValue	SetValue


参照
参照14674

TOrdinalProperty オブジェクト


TMethodProperty オブジェクト
TMethodProperty オブジェクト14675

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TMethodProperty オブジェクトはメソッドポインタ (ほとんどの場合イベント) であるプロパティ用のデフォルトのプロパティエディタです。

TMethodProperty は TPropertyEditor からすべて継承するほか，AllEqual メソッドをオーバーライドしてメソッドポインタの値を比較し，GetAttributes メソッドをオーバーライドして値をドロップダウン形式で表示し，GetValues メソッドをオーバーライドしてリストを生成し，Edit メソッドをオーバーライドしてイベントハンドラを生成または編集し，メソッド GetEditLimit, GetValue, SetValue をオーバーライドしてイベントハンドラ名を処理します。


メソッド
メソッド14676

AllEqual	GetEditLimit	GetValues

Edit	GetValue	SetValue

GetAttributes


参照
参照14677

TPropertyEditor オブジェクト


TModalResultProperty オブジェクト
TModalResultProperty オブジェクト14678

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TModalResultProperty オブジェクトは ModalResult プロパティ用のデフォルトのプロパティエディタです。

TModalResultProperty は TIntegerProperty からすべて継承するほか，GetAttributes メソッドをオーバーライドしてドロップダウンリストを作成し，GetValues リストをオーバーライドしてそのリストを作成し，メソッド GetValue と SetValue をオーバーライドして数字または定義済みのモード付き結果定数を受け付け表示します。


メソッド
メソッド14679

GetAttributes	GetValues	SetValue

GetValue


参照
参照14680

ModalResult プロパティ

TIntegerProperty オブジェクト


TMPFileNameProperty オブジェクト
TMPFileNameProperty オブジェクト14681

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TMPFileNameProperty オブジェクトは TMediaPlayer コンポーネントの FileName プロパティ用のデフォルトのプロパティエディタです。このエディタは［File Open］ダイアログボックスを開きます。このダイアログボックスではメディアプレーヤが再生するファイルの名前を選択できます。

TMPFileNameProperty は TStringProperty からすべて継承するほか，GetAttributes メソッドをオーバーライドしてダイアログボックスを編集可能にし，Edit メソッドをオーバーライドしてファイル名を選択する Windows の標準の［File Open］ダイアログボックスを開きます。


メソッドEditvclTPropertyEditorEditMethodGetAttributesvclGetAttributesMethod
メソッド14682

Edit	GetAttributes


参照
参照14683

FileName プロパティ

TMediaPlayer コンポーネント

TStringProperty オブジェクト


TOrdinalProperty オブジェクト
TOrdinalProperty オブジェクト14684

参照	メソッド	オブジェクト

ユニット

DsgnIntf

TOrdinalProperty オブジェクトはすべての順序型プロパティエディタの基本型です。TOrdinalProperty は TPropertyEditor からすべて継承するほか，AllEqual メソッドをオーバーライドして順序値を比較し，GetEditLimit をオーバーライドして入力値を 64 文字に制限します。

抽象型の TOrdinalProperty の下位プロパティには，便利な TIntegerProperty, TCharProperty, TEnumProperty, TSetProperty, TShortCutProperty があります。


メソッド
メソッド14685

AllEqual	GetEditLimit


参照
参照14686

TPropertyEditor オブジェクト


TPropertyAttributes 型
TPropertyAttributes 型14687

参照

ユニット

DsgnIntf

宣言

TPropertyAttribute = (paValueList, paSubProperties, paDialog, paMultiSelect, paAutoUpdate, paSortList, paReadOnly, paRevertable);
TPropertyAttributes = set of TPropertyAttribute;

説明

TPropertyAttributes 型はオブジェクトインスペクタにプロパティを表示する方法を指定します。プロパティインスペクタオブジェクトの GetAtrributes メソッドはプロパティ属性集合を返します。この集合はエディタが値を表示する方法を示します。

次の表に属性の意味を説明します。

属性	意味

paValueList	エディタは列挙型の値リストを作成できる。GetValues メソッドはリストを作成する

paSubProperties	プロパティは下位プロパティを表示できるオブジェクトである。GetProperties メソッドは下位プロパティリストを処理する

paDialog	エディタはプロパティ全体を編集するダイアログボックスを表示できる。Edit メソッドはダイアログボックスを開く

paMultiSelect	複数のコンポーネントを選択するとプロパティが表示される。大半のプロパティエディタでは複数の選択ができる。Name プロパティ用のエディタは例外である

paAutoUpdate	値全体が承認された後ではなく各値を変更後に SetValue メソッドを呼び出す

paSortList	オブジェクトインスペクタは値リストをアルファベット順にソートする

paReadOnly	プロパティはオブジェクトインスペクタの読み出し専用である。ユーザーが直接入力できない文字セットとフォントに使う

paRevertable	継承した値にプロパティを戻せる。セットのネストプロパティや要素は復元可能にするべきではない


参照
参照14688

GetAttributes メソッド


TPropertyEditor オブジェクト
TPropertyEditor オブジェクト14689

参照	プロパティ	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TPropertyEditor 型はすべてのプロパティエディタの基本のオブジェクト型です。TPropertyEditor は抽象オブジェクトですが，すべての有効なプロパティエディタが使うかオーバーライドするプロパティとメソッドを定義します。

TPropertyEditor は TObject からすべて継承するほか，4 つのプロパティと各種のメソッドを宣言します。

抽象型オブジェクト TPropertyEditor の下位オブジェクト型には，便利な TOrdinalProperty, TFloatProperty, TStringProperty, TSetElementProperty, TClassProperty, TMethodProperty, TComponentProperty があります。


プロパティ
プロパティ14690

Designer	PropCount	Value

PrivateDirectory


メソッド
メソッド14691

AllEqual	GetEditLimit	GetValue

Destroy	GetName	GetValues

Edit	GetProperties	Initialize

GetAttributes	GetPropType	SetValue

GetComponent


参照
参照14692

TPropertyEditorClass 型


TPropertyEditorClass 型
TPropertyEditorClass 型14693

参照

ユニット

DsgnIntf

宣言

type
  TPropertyEditorClass = class of TPropertyEditor;

説明

TPropertyEditorClass 型はすべてのプロパティエディタオブジェクト型のオブジェクト型参照型です。


参照
参照14694

TPropertyEditor オブジェクト


TSetElementProperty オブジェクト
TSetElementProperty オブジェクト14695

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TSetElementProperty オブジェクトは集合内の各要素用のデフォルトのプロパティエディタです。オブジェクトインスペクタは集合の各要素を論理項目として処理し，集合に要素が含まれていれば True を返し，集合に要素がなければ False を返します。

TSetElementProperty は TPropertyEditor からすべて継承するほか，GetName メソッドをオーバーライドしてプロパティ名ではなく要素名を表示し，GetValue と SetValue をオーバーライドして論理値を使って各要素の状態を表します。


メソッド
メソッド14696

AllEqual	GetName	GetValues

Destroy	GetValue	SetValue

GetAttributes


参照
参照14697

TSetProperty オブジェクト

TPropertyEditor オブジェクト


TSetProperty オブジェクト
TSetProperty オブジェクト14698

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TSetProperty オブジェクトはすべての集合型プロパティ用のデフォルトのプロパティエディタです。集合プロパティエディタは集合を直接編集せず，集合内の各要素の集合要素用エディタを作成します。

TSetProperty は TOrdinalProperty からすべて継承するほか，GetAttributes メソッドをオーバーライドして各集合要素を下位プロパティとして展開できるようにし，GetProperties メソッドをオーバーライドして集合要素とそのエディタのリストを返し，GetValue メソッドをオーバーライドして Object Pascal 表記で集合値を表示します。


メソッド
メソッド14699

GetAttributes	GetProperties	GetValue


参照
参照14700

TSetElementProperty オブジェクト


TShortCutProperty オブジェクト
TShortCutProperty オブジェクト14701

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TShortCutProperty オブジェクトは ShortCut プロパティ用のデフォルトエディタです。ドロップダウンリストでショートカットキーを選択することもショートカットキーの値を入力することもできます。

TShortCutProperty は TOrdinalProperty からすべて継承するほか，GetAttributes メソッドをオーバーライドして値をドロップダウン形式で表示できるようにし，GetValues メソッドをオーバーライドしてリストを返し，メソッド GetValue と SetValue をオーバーライドしてリストを表示しショートカットを選択するか直接入力できるようにします。


メソッド
メソッド14702

GetAttributes	GetValues	SetValue

GetValue


参照
参照14703

ShortCut プロパティ

TOrdinalProperty オブジェクト


TStringProperty オブジェクト
TStringProperty オブジェクト14704

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TStringProperty オブジェクトはすべての文字列型プロパティ用のデフォルトのプロパティエディタです。

TStringProperty は TPropertyEditor からすべて継承するほか，AllEqual メソッドをオーバーライドして文字列値を比較し，GetEditLimit メソッドをオーバーライドして文字列型の最大長に入力値を制限し，メソッド GetValue と SetValue をオーバーライドしてその文字列を受け付け表示します。


メソッド
メソッド14705

AllEqual	GetValue	SetValue

GetEditLimit


参照
参照14706

TPropertyEditor オブジェクト


TTabOrderProperty オブジェクト
TTabOrderProperty オブジェクト14707

参照	メソッド	オブジェクト

ユニット

DsgnIntf

説明

TTabOrderProperty オブジェクトは TabOrder プロパティ用のデフォルトのプロパティエディタです。このエディタは標準の整数プロパティエディタですが，複数のコンポーネントが選択されている間は表示されません。タブ順序の値は各コンポーネントごとに異なる値が必要だからです。

TTabOrderProperty は TIntegerProperty からすべて継承するほか，GetAttributes メソッドをオーバーライドして複数のコンポーネントのエディタを表示しないようにします。


メソッド
メソッド14708

GetAttributes


参照
参照14709

TabOrder プロパティ

TIntegerProperty オブジェクト


TTypeInfo 型
TTypeInfo 型14710

参照

ユニット

TypInfo

宣言

type
  PTypeInfo = ^TTypeInfo;
  TTypeInfo = record
    Kind: TTypeKind;
    Name: string;
    TypeData: TTypeData;
  end;

説明

TTypeInfo 型 (とそれに関連付けられたポインタ型 PTypeInfo) は Delphi オブジェクトの実行時型情報 (RTTI) を表します。


参照
参照14711

TTypeKind 型


TTypeKind 型
TTypeKind 型14712

参照

ユニット

TypInfo

宣言

type
  TTypeKind = (tkUnknown, tkInteger, tkChar, tkEnumeration, tkFloat, tkString, tkSet,
    tkClass, tkMethod);

説明

TTypeKind 型は Delphi とオブジェクトインスペクタが処理しなくてはならない一般的な複数のプロパティ型を指定する列挙型です。


参照
参照14713

TTypeInfo 型

TTypeKinds 型


TTypeKinds 型
TTypeKinds 型14714

参照

ユニット

TypInfo

宣言

type
  TTypeKinds = set of TTypeKind;

説明

TTypeKinds 型はルーチンが 1 つまたは複数の種類の型を指定しなくてはならないときに使う型の種類の集合です。たとえば GetComponentProperties 手続きは TTypeKinds 型のパラメータを使ってどの型のプロパティを返すか決めます。


参照
参照14715

TTypeKind 型

GetComponentProperties 手続き


Value プロパティ
Value プロパティ14716

参照

適用

TPropertyEditor

宣言

property Value: string read GetValue write SetValue;

説明

Value プロパティは編集中のプロパティの値を表します。オブジェクトインスペクタは Value を使ってプロパティ値をプロパティエディタとの間でやりとりします。Value そのものを変更する必要はありませんが，GetValue と SetValue メソッドはたいていオーバーライドされます。


参照
参照14717

GetValue メソッド

SetValue メソッド


コンポーネント開発者リファレンス
コンポーネント開発者リファレンス14718

コンポーネント	オブジェクト	ルーチン

このリファレンスは通常の VCL リファレンスへの補足です。

標準的な VCL コンポーネントのプロテクト部についての情報

コンポーネントを処理するためのオブジェクトやルーチンなど，コンポーネントの開発に役立つ情報

基本的にこのリファレンスを必要とする開発者は，コンポーネントを含めた既存のオブジェクトを単に利用するだけではないと想定しています。独自の新しいオブジェクトを開発するには，既存のオブジェクトのユーザーがアクセスできない部分についての情報が必要です。

オブジェクトの派生とそれらのプロテクト部分へのアクセスについての詳細は，コンポーネント開発者の OOPを参照してください。


Apply メソッド
Apply メソッド14719

参照

適用

TFontDialog

宣言

procedure Apply(Wnd: HWND); dynamic;

説明

Apply メソッドは［font-selection］ダイアログボックスの OnApply イベント用のプロテクトメソッドです。［font-selection］ダイアログボックスは，ユーザーがダイアログボックスで［Apply］ボタンをクリックしたことを示すメッセージを Windows から受け取ると Apply を呼び出します。Wnd パラメータは［font-selection］ダイアログボックスの親ウィンドウのウィンドウハンドルを指定します。

デフォルトでは，Apply は OnApply イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。Apply をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。


参照
参照14720

OnApply イベント


AutoButtonSet メソッド
AutoButtonSet メソッド14721

参照

適用

TMediaPlayer

宣言

procedure AutoButtonSet(Btn: TMPBtnType); virtual;

説明

AutoButtonSet メソッドは，AutoEnable プロパティが True に設定されている場合にメディアプレーヤのボタンを自動的に使用可能または使用不可にします。Btn パラメータはユーザーが押したメディアプレーヤのボタンを示します。


参照
参照14722

AutoEnable プロパティ


CanChange メソッド
CanChange メソッド14723

参照

適用

TTabSet

宣言

function CanChange(NewIndex: Integer): Boolean; virtual;

説明

CanChange メソッドはタブセットコンポーネントの OnChange イベント用のプロテクトメソッドです。


参照
参照14724

OnChange イベント


CanModify メソッド
CanModify メソッド14725

適用

TCustomRadioGroup

宣言

function CanModify: Boolean; virtual;

説明

CanModify メソッドはユーザーがラジオボタンのグループ内の別の項目を選択できるかを決めます。ユーザーがラジオボタンのグループ内のラジオボタンをクリックするかそれに相当するキーを押すと，それが許されているかが CanModify でチェックされます。

CanModify はデフォルトでは True を返しますが，ユーザーによる変更を許可しない場合には False を返すようにオーバーライドすることもできます。


Change メソッド
Change メソッド14726

参照

適用

TCustomEdit, TCustomComboBox, TScrollBar

宣言

procedure Change; dynamic;

説明

編集ボックス，コンボボックス，スクロールバーの Change メソッドは OnChange イベント用のプロテクトメソッドです。デフォルトでは，Change メソッドはどのコンポーネントでも OnChange イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。Change をオーバーライドすれば，これらのコンポーネントへの変更に対してほかにも応答ができます。

Change への呼び出しを発生させる状況についての詳細は OnChange イベントの説明を参照してください。


参照
参照14727

OnChange イベント


CheckCursor メソッド
CheckCursor メソッド14728

参照

適用

TCustomMaskEdit

宣言

procedure CheckCursor;

説明

CheckCursor メソッドは，マスク編集ボックスのテキストが変更された後に，選択項目またはテキストカーソルを再設定します。


参照
参照14729

SetCursor メソッド

GetSel メソッド

SetSel メソッド


MediaPlayer の Click メソッド
Click メソッド14730

参照

適用

TMediaPlayer

宣言

procedure Click(Button: TMPBtnType; var DoDefault: Boolean); dynamic;

説明

メディアプレーヤコンポーネントの Click メソッドは OnClick イベント用のプロテクトメソッドです。デフォルトでは，Click はメディアプレーヤの OnClick にアタッチされたイベントハンドラを呼び出す以外は何もしません。下位の型では Click をオーバーライドし，クリックに対する処理をカスタマイズできます。


参照
参照14731

OnClick イベント

PostClick メソッド


ComboWndProc メソッド
ComboWndProc メソッド14732

参照

適用

TCustomComboBox

宣言

procedure ComboWndProc(var Message: TMessage; ComboWnd: HWnd; ComboProc: Pointer); virtual;

説明

ComboWndProc メソッドはコンボボックスコンポーネントのウィンドウプロシージャメソッドです。コンボボックスコンポーネントは実際には 2 つのコントロールです。1 つは選択された項目が入る編集ボックスで，もう 1 つは項目のリストです。どちらのコントロールのウィンドウもコンボボックス全体に影響するメッセージを受け取ることがあるので，ComboWndProc メソッドに共通のメッセージへの応答をいくつか共有しています。


参照
参照14733

WndProc メソッド


Collapse メソッド
Collapse メソッド14734

参照

適用

TCustomOutline

宣言

procedure Collapse(Index: LongInt); dynamic;

説明

Collapse メソッドはアウトラインコンポーネントの OnCollapse イベント用のプロテクトメソッドです。アウトラインノードオブジェクトは，展開した項目を折りたたむときに，関連するアウトラインの Collapse メソッドを呼び出します。

デフォルトでは，Collapse メソッドは OnCollapse イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。Collapse をオーバーライドし，折りたたみイベントに対する応答を変更することもできます。


参照
参照14735

OnCollapse イベント

Expand メソッド


ConvertFields メソッド
ConvertFields メソッド14736

参照

適用

TFindDialog

説明

ConvertFields メソッドは［find］ダイアログボックスコンポーネントの格納データを Windows のコモンダイアログボックス用のデータ構造に変換します。主に Object Pascal の文字列がヌルで終わる文字列に変換されます。

ConvertFields は，［find］ダイアログボックスの Execute メソッドによって検索の実行前に呼び出されます。検索に成功すると，［find］ダイアログボックスコンポーネントは ConvertFieldsForCallback メソッドを呼び出して検索したデータを元の形式に戻します。


参照
参照14737

ConvertFieldsForCallback メソッド


ConvertFieldsForCallback メソッド
ConvertFieldsForCallback メソッド14738

参照

適用

TFindDialog

宣言

procedure ConvertFieldsForCallback; virtual;

説明

ConvertFieldsForCallback メソッドは Windows の［find］コモンダイアログボックス用のデータ構造を［find］ダイアログボックスコンポーネント用の形式に変換します。主にヌルで終わる文字列が Object Pascal の文字列に変換されます。

ConvertFieldsForCallback は，［find］ダイアログボックスコンポーネントが検索に成功すると呼び出されます。［find］ダイアログボックスコンポーネントは検索を開始する前に ConvertFields メソッドを呼び出してデータを Windows 形式に変換します。


参照
参照14739

ConvertFields メソッド


Create メソッド
Create メソッド14740

適用

TObject (すべてのオブジェクト)，TComponent, TFiler, TComponentEditor

説明

Create メソッドはオブジェクトまたはコンポーネントを作成します。

すべてのオブジェクトの Create メソッド

コンポーネントの Create メソッド

Filer オブジェクトの Create メソッド

FileStream オブジェクトの Create メソッド

HandleStream オブジェクトの Create メソッド

Create method for resource-stream objects

ComponentEditor の Create メソッド


DirectoryExists 関数
DirectoryExists 関数14741

参照

ユニット

FileCtrl

宣言

function DirectoryExists(Name: string): Boolean;

説明

DirectoryExists 関数は Name パラメータに渡された文字列が既存のディレクトリを示すならば True を返します。それ以外の場合は False を返します。


参照
参照14742

FileExists 関数


DispatchCommand メソッド
DispatchCommand メソッド14743

参照

適用

TMenu

宣言

function DispatchCommand(ACommand: Word): Boolean;

説明

DispatchCommand メソッドは ACommand に渡されたコマンドに関連付けられている項目をメニューで探します。項目があれば，DispatchCommand はその項目の Click メソッドを呼び出し True を返します。項目がなければ False を返します。


参照
参照14744

DispatchPopup メソッド


DispatchPopup メソッド
DispatchPopup メソッド14745

参照

適用

TMenu

宣言

function DispatchPopup(AHandle: HMENU): Boolean;

説明

DispatchPopup メソッドは AHandle に渡されたメニューハンドルを持つ項目をメニューで探します。項目があれば，DispatchPopup はその項目の Click メソッドを呼び出し True を返します。項目がなければ False を返します。


参照
参照14746

DispatchCommand メソッド


DoNotify メソッド
DoNotify メソッド14747

参照

適用

TMediaPlayer

宣言

procedure DoNotify; dynamic;

説明

DoNotify メソッドはメディアプレーヤコンポーネントの OnNotify イベント用のプロテクトメソッドです。DoNotify はメディアプレーヤの MMNotify メソッドにより，MMNotify がボタンを使用可能または使用不可に変更し，通知メッセージパラメータで渡された値に従って内部フラグを設定した後に呼び出されます。

デフォルトでは，DoNotify はメディアプレーヤの OnNotify イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。DoNotify をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。


参照
参照14748

MMNotify メソッド

OnNotify イベント


DrawButtonFace 関数
DrawButtonFace 関数14749

参照

ユニット

Buttons

宣言

function DrawButtonFace(Canvas: TCanvas; const Client: TRect; BevelWidth: Integer;
  Style: TButtonStyle; IsRounded, IsDown, IsFocused: Boolean): TRect;

説明

DrawButtonFace 関数は Client で指定された四角形にベベル，角，その他ボタンの標準的な外観を描画し，クライアント四角形の残りの部分をその結果として返します。

スピードボタンとビットマップボタンは基本的なボタンの外観を作成するために，それぞれ Paint メソッドと DrawItem メソッドで DrawButtonFace を使います。


参照
参照14750

Paint メソッド


DrawItem メソッド
DrawItem メソッド14751

参照

適用

TCustomComboBox, TCustomListBox

宣言

procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); virtual;

説明

DrawItem メソッドはオーナー描画リストボックスやオーナー描画コンボボックスの OnDrawItem イベント用のプロテクトメソッドです。オーナー描画リストボックスやオーナー描画コンボボックスは，リストボックス内の表示項目ごとに DrawItem を呼び出し，Index パラメータに項目のインデックスを渡します。

デフォルトでは，オーナー描画コンボボックスとオーナー描画リストボックスのどちらの DrawItem メソッドも，そのコンポーネントの OnDrawItem イベントにアタッチされたイベントハンドラを呼び出します。イベントハンドラがアタッチされていない場合，DrawItem は Rect で渡された四角形を塗りつぶし，インデックスの項目に関連付けられているテキストを描画します。State パラメータはアタッチされたイベントハンドラに渡されますが，デフォルトでは無視されます。


参照
参照14752

OnDrawItem イベント


DrawTab メソッド
DrawTab メソッド14753

参照

適用

TTabSet

宣言

procedure DrawTab(TabCanvas: TCanvas; R: TRect; Index: Integer;
  Selected: Boolean); virtual;

説明

DrawTab メソッドはオーナー描画タブセットコンポーネントの OnDrawTab イベント用のプロテクトメソッドです。タブセットは Paint メソッドの一環として表示されるタブごとに DrawTab を呼び出し，タブ領域用のキャンバス，キャンバスに描画する四角形，描画するタブのインデックス，描画するタブが選択されているかをパラメータで渡します。

デフォルトでは，DrawTab メソッドは OnDrawTab イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。DrawTab をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。


参照
参照14754

OnDrawTab イベント


DropDown メソッド
DropDown メソッド14755

参照

適用

TCustomComboBox

宣言

procedure DropDown; dynamic;

説明

DropDown メソッドはコンボボックスの OnDropDown イベント用のプロテクトメソッドです。コンボボックスは Windows からリストをドロップする必要があるというメッセージ (CBN_DROPDOWN) を受け取ると DropDown を呼び出します。

デフォルトでは，DropDown はコンボボックスの OnDropDown イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。DropDown をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。


参照
参照14756

OnDropDown イベント


EditCanModify メソッド
EditCanModify メソッド14757

参照

適用

TCustomMaskEdit

宣言

function EditCanModify: Boolean; virtual;

説明

EditCanModify メソッドはマスク編集ボックスが編集可能な状態であるかを決めます。EditCanModify は KeyDown などのいくつかのメソッドで Del や BS などのキー入力が実行されるべきかの判定に使われます。

デフォルトでは，EditCanModify は True を返します。マスク編集ボックスを読み出し専用にしなくてはならない状況では EditCanModify をオーバーライドして False を返すこともできます。


参照
参照14758

KeyDown メソッド


Expand メソッド
Expand メソッド14759

参照

適用

TCustomOutline

宣言

procedure Expand(Index: LongInt); dynamic;

説明

Expand メソッドはアウトラインコンポーネントの OnExpand イベント用のプロテクトメソッドです。アウトラインノードオブジェクトは，折りたたんだ項目を表示するときに，関連するアウトラインの Expand メソッドを呼び出します。

デフォルトでは，Expand メソッドは OnExpand イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。Expand をオーバーライドすれば，展開イベントに対する応答を変更することもできます。


参照
参照14760

OnExpand イベント

Collapse メソッド


Find メソッド
Find メソッド14761

参照

適用

TFindDialog

宣言

procedure Find; dynamic;

説明

Find メソッドは［search］ダイアログボックスの OnFind イベント用のプロテクトメソッドです。［find］と［replace］の各ダイアログボックスは検索で対象のテキストを見つけると Find を呼び出します。

デフォルトでは，Find は OnFind イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。Find をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。


参照
参照14762

OnFind イベント

Replace メソッド


FormatMaskText 関数
FormatMaskText 関数14763

ユニット

Mask

宣言

function FormatMaskText(const EditMask: string; const Value: string): string;

説明

FormatMaskText 関数は EditMask パラメータに渡された編集マスクの文字列を Value パラメータに渡された文字列に適用し，結果の形式文字列を返します。


Frame3D 手続き
Frame3D 手続き14764

参照

ユニット

ExtCtrls

宣言

procedure Frame3D(Canvas: TCanvas; var Rect: TRect; TopColor, BottomColor: TColor;
  Width: Integer);

説明

Frame3D 手続きは，Rect で渡された四角形の中の Canvas に渡されたキャンバスオブジェクトに 3 次元表示の影を付けた四角形を描画します。このとき TopColor で指定された色が上と左の側面に，BottomColor で指定された色が右と下の側面に使われます。Width パラメータは四角形の影の線の太さを指定します。Frame3D は影を付けた四角形の内部だけを含むように Rect の四角形を調整してから返します。

Frame3D は Panel コンポーネントでベベルを描画するために使われます。


参照
参照14765

DrawButtonFace 関数


GetFirstEditChar メソッド
GetFirstEditChar メソッド14766

参照

適用

TCustomMaskEdit

宣言

function GetFirstEditChar: Integer;

説明

GetFirstEditChar メソッドは，マスク編集コントロールの EditText の文字列の最初の編集可能文字の位置を返します (マスクによる形式設定で追加される文字を除きます)。


参照
参照14767

GetLastEditChar メソッド

GetNextEditChar メソッド

GetPriorEditChar メソッド


GetLastEditChar メソッド
GetLastEditChar メソッド14768

参照

適用

TCustomMaskEdit

宣言

function GetLastEditChar: Integer;

説明

GetLastEditChar メソッドは，マスク編集コントロールの EditText の文字列の最後の編集可能文字の位置を返します (マスクによる形式設定で追加される文字を除きます)。


参照
参照14769

GetFirstEditChar メソッド

GetNextEditChar メソッド

GetPriorEditChar メソッド


GetMaxChars メソッド
GetMaxChars メソッド14770

参照

適用

TCustomMaskEdit

宣言

function GetMaxChars: Integer;

説明

GetMaxChars 関数は，ユーザーがマスク編集ボックスに入力できる文字の最大数を返します。IsMasked プロパティが True の場合，GetMaxChars は MaxLength プロパティの値を返します。それ以外の場合は継承された GetTextLen メソッドの値を返します。


参照
参照14771

MaxLength プロパティ

GetTextLen メソッド


GetNextEditChar メソッド
GetNextEditChar メソッド14772

参照

適用

TCustomMaskEdit

宣言

function GetNextEditChar(Offset: Integer): Integer;

説明

GetNextEditChar メソッドは，マスク編集コントロールの EditText の文字列の Offset の位置にある文字以降の最初の編集可能文字の位置を返します (マスクによる形式設定で追加される文字を除きます)。


参照
参照14773

GetFirstEditChar メソッド

GetLastEditChar メソッド

GetPriorEditChar メソッド


GetNodeDisplayWidth メソッド
GetNodeDisplayWidth メソッド14774

参照

適用

TCustomOutline

宣言

function GetNodeDisplayWidth(Node: TOutlineNode): Integer;

説明

GetDisplayNodeWidth メソッドは，指定されたノードの表示に必要な幅をピクセルで返します。この幅には現在のフォントでの項目のテキスト，アウトライン内での項目のレベルに対するインデント，線などのグラフィック用の空間，そしてアウトラインのスタイルによっては正符号と負符号が含まれます。

OnDrawItem イベントにハンドラがアタッチされたオーナー描画アウトラインの場合，GetNodeDisplayWidth はすべてのノードについて 0 を返します。


参照
参照14775

SetDisplayWidth メソッド


GetPriorEditChar メソッド
GetPriorEditChar メソッド14776

参照

適用

TCustomMaskEdit

宣言

function GetPriorEditChar(Offset: Integer): Integer;

説明

GetPriorEditChar メソッドは，マスク編集コントロールの EditText の文字列の Offset の位置にある文字以前の最初の編集可能文字の位置を返します (マスクによる形式設定で追加される文字を除きます)。


参照
参照14777

GetFirstEditChar メソッド

GetLastEditChar メソッド

GetNextEditChar メソッド


GetSel メソッド
GetSel メソッド14778

参照

適用

TCustomMaskEdit

宣言

procedure GetSel(var SelStart, SelStop: Integer);

説明

GetSel メソッドは，SelStart と SelStop の各 var パラメータをマスク編集ボックスの最初と最後の選択文字のインデックスにそれぞれ設定します。


参照
参照14779

SetSel メソッド


IsShortCut メソッド
IsShortCut メソッド14780

参照

適用

TMenu

宣言

function IsShortCut(var Message: TWMKey): Boolean;

説明

IsShortCut メソッドは Message パラメータに渡されたキーメッセージを解読し，メッセージのキー入力がメニュー内の項目のショートカットキーである場合，その項目の Click メソッドを呼び出して True を返します。メッセージに対応するショートカットがメニュー内の項目にない場合は False を返します。


参照
参照14781

メニュー項目の Click メソッド


MaskGetFldSeparator 関数
MaskGetFldSeparator 関数14782

参照

ユニット

Mask

宣言

function MaskGetFldSeparator(const EditMask: string): Integer;

説明

MaskGetFldSeparator 関数は EditMask に渡された文字列内で項目区切り記号を見つけ，文字列内でのその位置を返します。文字列に項目区切り記号がない場合，MaskGetFldSeparator は -1 を返します。


参照
参照14783

MaskGetMaskBlank 関数


MaskGetMaskBlank 関数
MaskGetMaskBlank 関数14784

参照

ユニット

Mask

宣言

function MaskGetMaskBlank(const EditMask: string): Char;

説明

MaskGetMaskBlank 関数は EditMask に渡された編集マスク文字列内でデフォルトの空白文字を見つけ，その位置を返します。空白文字は編集マスク文字列の最後の文字で，項目区切り記号の次になくてはなりません。


参照
参照14785

MaskGetFldSeparator 関数


MaskGetMaskSave 関数
MaskGetMaskSave 関数14786

参照

ユニット

Mask

宣言

function MaskGetMaskSave(const EditMask: string): Boolean;

説明

MaskGetMaskSave 関数は，EditMask に渡された編集マスク文字列のマスク保存項目に MaskNoSave 文字がない場合，True を返します。マスク保存項目に MaskNoSave 文字がある場合は False を返します。


参照
参照14787

EditMask プロパティ


MeasureItem メソッド
MeasureItem メソッド14788

参照

適用

TCustomComboBox, TCustomListBox

宣言

procedure MeasureItem(Index: Integer; var Height: Integer); virtual;

説明

MeasureItem メソッドはオーナー描画コンボボックスコンポーネントやオーナー描画リストボックスコンポーネントの OnMeasureItem イベント用のプロテクトメソッドです。項目を描画する前に，可変のオーナー描画コンボボックスやオーナー描画リストボックスは表示項目ごとに MeasureItem を呼び出し，寸法を取得するインデックスと項目のデフォルトの高さを渡します。Height は var パラメータなので，MeasureItem では各項目の高さを必要に応じて増減できます。

デフォルトでは，MeasureItem メソッドは OnMeasureItem イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。MeasureItem をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。


参照
参照14789

OnMeasureItem イベント

DrawItem メソッド


MeasureTab メソッド
MeasureTab メソッド14790

参照

適用

TTabSet

宣言

procedure MeasureTab(Index: Integer; var TabWidth: Integer); virtual;

説明

MeasureTab メソッドはオーナー描画タブセットコンポーネントの OnMeasureTab イベント用のプロテクトメソッドです。タブを描画する前に，タブセットは表示するタブごとに MeasureTab を呼び出し，寸法を取得するタブのインデックスとタブのデフォルトの幅を渡します。TabWidth は var パラメータなので，MeasureTab ではタブの幅を必要に応じて増減できます。

デフォルトでは，MeasureTab メソッドは OnMeasureTab イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。MeasureTab をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。


参照
参照14791

OnMeasureTab イベント

DrawTab メソッド


MenuChanged メソッド
MenuChanged メソッド14792

参照

適用

TMenuItem

宣言

procedure MenuChanged(Rebuild: Boolean); dynamic;

説明

MenuChanged メソッドはメニュー項目コンポーネントの OnChange イベント用のプロテクトメソッドです。Rebuild パラメータは変更によってメニュー構造の再構築が必要かを示します。メニュー項目は，項目の追加，削除，名前変更などメニューの構造や内容が変更されると MenuChanged を呼び出します。

TMenuItem で定義される MenuChanged メソッドは OnChange イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。MenuChanged をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。


参照
参照14793

OnChange イベント


Message メソッド
Message メソッド14794

参照

適用

TCommonDialog

宣言

function Message(var Msg: TMessage): Boolean; virtual; export;

説明

Message メソッドはコモンダイアログボックスコンポーネントのウィンドウプロシージャメソッドです。TCommonDialog は，ダイアログボックスの HelpContext プロパティに 0 以外の値が入っている場合，ヘルプリクエストメッセージの処理用に Message を定義します。［find］と［replace］の各ダイアログボックスは，検索と置換のメッセージも処理できるように Message をオーバーライドします。


参照
参照14795

Find メソッド

Replace メソッド


MMNotify メソッド
MMNotify メソッド14796

参照

適用

TMediaPlayer

宣言

procedure MMNotify(var Message: TMessage); message MM_MCINOTIFY;

説明

MMNotify メソッドはマルチメディアコマンドが完了したという Windows からの通知メッセージを受け取ると，AutoEnable プロパティが True であればボタンの状態を更新し，コマンドの結果を反映するように内部フラグを設定し，DoNotify メソッドを呼び出して OnNotify イベントやその他の特別な処理を発生させます。


参照
参照14797

DoNotify メソッド


Move メソッド
Move メソッド14798

参照

適用

TCustomOutline

宣言

procedure Move(Destination, Source: LongInt; AttachMode: TAttachMode);

説明

Move メソッドは Source に指定されたインデックスの位置にあるアウトラインノードを Destination に渡されたインデックスに移動します。移動では，AttachMode パラメータの値によって，ノードを追加，挿入，または子として追加します。


参照
参照14799

MoveTo メソッド


NewItem 関数
NewItem 関数14800

参照

ユニット

Menus

宣言

function NewItem(const ACaption: string; AShortCut: TShortCut; AChecked, AEnabled: Boolean;
  AOnClick: TNotifyEvent; hCtx: Word; const AName: string): TMenuItem;

説明

NewItem 関数はパラメータで指定された属性のメニュー項目コンポーネントを作成し，作成したメニュー項目を返します。NewItem を NewLine, NewMenu, NewPopupMenu, NewSubMenu という関連関数と一緒に使うことにより，Delphi のメニューデザイナを使うかわりに，またはメニューデザイナを使う以外に，実行時にメニュー構造全体を作成できます。


参照
参照14801

NewLine 関数

NewMenu 関数

NewPopupMenu 関数

NewSubMenu 関数


NewLine 関数
NewLine 関数14802

参照

ユニット

Menus

宣言

function NewLine: TMenuItem;

説明

NewLine 関数は他の項目との間の分割線として使うメニュー項目コンポーネントを作成し，作成したメニュー項目を返します。NewLine を NewItem, NewMenu, NewPopupMenu, NewSubMenu という関連関数と一緒に使うことにより， Delphi のメニューデザイナを使うかわりに，またはメニューデザイナを使う以外に，実行時にメニュー構造全体を作成できます。


参照
参照14803

NewItem 関数

NewMenu 関数

NewPopupMenu 関数

NewSubMenu 関数


NewMenu 関数
NewMenu 関数14804

参照

ユニット

Menus

宣言

function NewMenu(Owner: TComponent; const AName: string;
  Items: array of TMenuItem): TMainMenu;

説明

NewMenu 関数は Owner パラメータに指定されたオーナー，AName に指定された名前，配列パラメータの Items に渡されたメニュー項目を持つメインメニューコンポーネントを作成し，作成したメインメニューを返します。Items 配列を NewItem, NewLine, NewSubMenu の各関数への呼び出しで構築することにより，実行時にメインメニュー全体を作成できます。


参照
参照14805

NewItem 関数

NewLine 関数

NewPopupMenu 関数

NewSubMenu 関数


NewPopupMenu 関数
NewPopupMenu 関数14806

参照

ユニット

Menus

宣言

function NewPopupMenu(Owner: TComponent; const AName: string; Alignment: TPopupAlignment;
  AutoPopup: Boolean; Items: array of TMenuitem): TPopupMenu;

説明

NewPopupMenu 関数は Owner パラメータで指定されたオーナー，AName に渡された名前，配列パラメータの Items に渡されたメニュー項目を持つポップアップメニューコンポーネントを作成し，作成したポップアップメニューを返します。 Items 配列を NewItem, NewLine, NewSubMenu の各関数への呼び出しで構築することにより，実行時にポップアップメニュー全体を作成できます。


参照
参照14807

NewItem 関数

NewLine 関数

NewMenu 関数

NewSubMenu 関数


NewSubMenu 関数
NewSubMenu 関数14808

参照

ユニット

Menus

宣言

function NewSubMenu(const ACaption: string; hCtx: Word; const AName: string;
  Items: array of TMenuItem): TMenuItem;

説明

NewSubMenu 関数は，渡されたパラメータで指定されたキャプション，ヘルプコンテキスト，名前を持つメニュー項目コンポーネントと，配列パラメータの Items で指定された下位項目を作成し，作成したメニュー項目を返します。NewSubMenu を NewLine, NewMenu, NewPopupMenu, NewItem という関連関数と一緒に使うことにより，Delphi のメニューデザイナを使うかわりに，またはメニューデザイナを使う以外に，実行時にメニュー構造全体を作成できます。


参照
参照14809

NewItem 関数

NewLine 関数

NewMenu 関数

NewPopupMenu 関数


PostClick メソッド
PostClick メソッド14810

参照

適用

TMediaPlayer

宣言

procedure PostClick(Button: TMPBtnType); dynamic;

説明

PostClick メソッドは OnPostClick イベント用のプロテクトメソッドです。デフォルトでは，PostClick はメディアプレーヤの OnPostClick イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。下位の型では PostClick をオーバーライドし，クリックに対する処理をカスタマイズできます。


参照
参照14811

OnPostClick イベント

Click メソッド


Replace メソッド
Replace メソッド14812

参照

適用

TReplaceDialog

宣言

procedure Replace; dynamic;

説明

Replace メソッドは［find-and-replace］ダイアログボックスの OnReplace イベント用のプロテクトメソッドです。［find-and-replace］ダイアログボックスは検索対象のテキストを見つけて置換すると Replace を呼び出します。

デフォルトでは，Replace は OnReplace イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。Replace をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。


参照
参照14813

OnReplace イベント

Find メソッド


Scroll メソッド
Scroll メソッド14814

参照

適用

TScrollBar

宣言

procedure Scroll(ScrollCode: TScrollCode; var ScrollPos: Integer); dynamic;

説明

Scroll メソッドはスクロールバーコンポーネントの OnScroll イベント用のプロテクトメソッドです。TScrollBar は Windows からスクロールメッセージを受け取ると Scroll を呼び出します。

TScrollBar に定義される Scroll メソッドは OnScroll イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。Scroll をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。


参照
参照14815

OnScroll イベント


SetButtonStyle メソッド
SetButtonStyle メソッド14816

適用

TButton

宣言

procedure SetButtonStyle(ADefault: Boolean); virtual;

説明

SetButtonStyle メソッドは，ボタンコントロールにフォーカスがあるかによって，デフォルトのスタイルとそれ以外のスタイルとを切り替えます。


SetCursor メソッド
SetCursor メソッド14817

参照

適用

TCustomMaskEdit

宣言

procedure SetCursor(Pos: Integer);

説明

SetCursor メソッドは，テキストカーソルを Pos パラメータで指定されたマスク編集ボックスのテキストに設定します。


参照
参照14818

CheckCursor メソッド


SetDisplayWidth メソッド
SetDisplayWidth メソッド14819

参照

適用

TCustomOutline

宣言

procedure SetDisplayWidth(Value: Integer);

説明

SetDisplayWidth メソッドはアウトラインの DefaultColWidth プロパティを Value に渡された値に設定します。アウトラインは 1 つの列しか表示しないので，このことによりアウトラインの表示の幅が設定されます。アウトラインは，アウトラインのスタイルとスクロールバーを変更するときに最も幅の広い項目に合わせて表示幅を設定するために SetDisplayWidth を呼び出します。


参照
参照14820

DefaultColWidth プロパティ


SetLevel メソッド
SetLevel メソッド14821

参照

適用

TCustomOutline

宣言

procedure SetLevel(Node: TOutlineNode; CurLevel, NewLevel: Cardinal);

説明

SetLevel メソッドは指定されたノードを (CurLevel に渡された) 現在のレベルから新しいレベル (NewLevel に渡されたレベル，現在のレベルより上でも下でもよい) に割り当てます。


参照
参照14822

Level プロパティ


SetSel メソッド
SetSel メソッド14823

参照

適用

TCustomMaskEdit

宣言

procedure SetSel(SelStart, SelStop: Integer);

説明

SetSel メソッドは，マスク編集ボックスの SelStart インデックスから SelStop インデックスまでの文字を選択します。


参照
参照14824

GetSel メソッド


Sized メソッド
Sized メソッド14825

参照

適用

THeader

宣言

procedure Sized(ASection, AWidth: Integer); dynamic;

説明

Sized メソッドはヘッダーコンポーネントの OnSized イベント用のプロテクトメソッドです。ヘッダーコンポーネントはユーザーがサイズ変更の操作を終えると Sized を呼び出します。

THeader で定義される Sized メソッドは，OnSized イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。ただし，設計時にはヘッダーコンポーネントを含むフォームデザイナの Modified メソッドを呼び出します。Sized をオーバーライドすれば，継承された動作のほかにも応答ができます。


参照
参照14826

OnSized イベント

Sizing メソッド


Sizing メソッド
Sizing メソッド14827

説明

Sizing というメソッドは 2 つあります。それぞれがサイズ変更のためにドラッグされるコントロールを扱いますが，コントロールによってそのパラメータが違います。

Header の Sizing メソッド

CustomGrid の Sizing メソッド


Header の Sizing メソッド
Sizing メソッド14828

参照

適用

THeader

宣言

procedure Sizing(ASection, AWidth: Integer); dynamic;

説明

Sizing メソッドはヘッダーコンポーネントの OnSizing イベント用のプロテクトメソッドです。ヘッダーコンポーネントは，ユーザーによるヘッダーのセクションのサイズ変更時のマウス移動メッセージごとに Sizing を呼び出します。

THeader に定義される Sizing メソッドは OnSizing イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。Sizing をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。


参照
参照14829

OnSizing イベント

Sized メソッド


TBevel コンポーネント (プロテクト)
TBevel コンポーネント (プロテクト)14830

参照	メソッド	コンポーネント

ユニット

ExtCtrls

説明

TBevel コンポーネントは TGraphicControl の単純な下位コンポーネントです。ベベルコンポーネントの VCL リファレンスに説明があるパブリッシュ部のほかに，TBevel はベベルの外観を描画するために Paint というプロテクトメソッドをオーバーライドします。


メソッド
メソッド14831

Paint


参照
参照14832

TGraphicControl コンポーネント

TBevel コンポーネント VCL リファレンス


TButton コンポーネント (プロテクト)
TButton コンポーネント (プロテクト)14833

参照	メソッド	コンポーネント

ユニット

StdCtrls

説明

TButton コンポーネントは TButtonControl の直接の下位コンポーネントで，Windows の標準押しボタンコントロールに対するコンポーネントインターフェースを提供します。

TButtonControl からの継承項目と TButton の VCL リファレンスに説明があるパブリック項目とパブリッシュ項目のほかに，TButton は Windows のボタンコントロールとの関連付けを作成するために CreateParams と CreateWnd の各プロテクトメソッドをオーバーライドし，フォーカスがフォーム間を移動するのに従ってボタンをデフォルトまたはそれ以外のスタイルに変更する SetButtonStyle というプロテクトメソッドを提供します。


メソッド
メソッド14834

CreateParams	CreateWnd	SetButtonStyle


参照
参照14835

TButtonControl コンポーネント

TButton コンポーネント VCL リファレンス


TButtonControl コンポーネント
TButtonControl コンポーネント14836

参照	メソッド	コンポーネント

ユニット

StdCtrls

説明

TButtonControl コンポーネントは TWinControl を簡素化したもので，TButton, チェックボックス，ラジオボタンを含むすべてのボタンコンポーネントの基礎です。TButtonControl はボタンのフォーカスの変更を特別に処理するために WndProc というプロテクトメソッドをオーバーライドします。


メソッド
メソッド14837

WndProc


参照
参照14838

TWinControl コンポーネント


TCommonDialog コンポーネント
TCommonDialog コンポーネント14839

参照	プロパティ	メソッド	コンポーネント

ユニット

Dialogs

説明

TCommonDialog コンポーネントは，［file-open］，［find］，［replace］，［color］，［font-selection］ダイアログボックスなどの Windows のコモンダイアログボックスを表すコンポーネント用の，TComponent から派生した抽象コンポーネント型です。TCommonDialog から新しい型を派生することはできますが，TCommonDialog は Windows のコモンダイアログボックスのカプセル化だけを意図して設計されています。新しくダイアログボックスを作成する場合は，普通 TForm から開始します。

TCommonDialog が新しく提供する 2 つのプロパティ Ctl3D と HelpContext はすべてのコモンダイアログボックスコンポーネントでパブリッシュに設定されています。TCommonDialog は，コモンダイアログボックスのウィンドウプロシージャとして使われる Message というプロテクトメソッドも新しく提供します。


プロパティ
プロパティ14840

Ctl3D	HelpContext


メソッド
メソッド14841

Create	Message


参照
参照14842

TComponent コンポーネント


TCustomCheckBox コンポーネント
TCustomCheckBox コンポーネント14843

参照	プロパティ	メソッド	コンポーネント

ユニット

StdCtrls

説明

TCustomCheckBox コンポーネントは，TCheckBox, TDBCheckBox，ユーザー定義のチェックボックスコンポーネントを含む，すべてのチェックボックスコントロールの抽象基本型です。

TCustomCheckBox で定義されるプロパティはすべて Delphi の標準チェックボックスコンポーネントでパブリッシュに設定されています。TCustomCheckBox は 3 つのプロテクトメソッドをオーバーライドするほか，有効なチェックボックス状態間の切り替えをする Toggle というプロテクトメソッドを提供します。


プロパティ
プロパティ14844

Alignment	Checked	TabStop

AllowGrayed	State


メソッド
メソッド14845

Create	CreateWnd	Toggle

CreateParams


参照
参照14846

TButtonControl コンポーネント


TCustomComboBox コンポーネント
TCustomComboBox コンポーネント14847

参照	プロパティ	メソッド	イベント	コンポーネント

ユニット

StdCtrls

説明

TCustomComboBox コンポーネントは，TComboBox, TDBComboBox, TDriveComboBox を含む，すべてのコンボボックスコントロールの抽象基本型です。

TCustomComboBox で宣言されたすべてのプロパティは TComboBox でパブリッシュに設定されています。TWinControl から継承するメソッドのほかに，TCustomComboBox はいくつかのプロテクトメソッドをオーバーライドし，4 つのプロテクトメソッドを新しく提供します。ComboWndProc メソッドはコンボボックスコンポーネントのウィンドウプロシージャとして使われます。Change, DropDown, DrawItem, MeasureItem の各メソッドは OnChange, OnDropDown, OnDrawItem, OnMeasureItem の各イベントをそれぞれ発生させます。


プロパティ
プロパティ14848

DropDownCount	MaxLength	Sorted

ItemHeight	ParentColor	Style


メソッド
メソッド14849

Change	CreateWnd	DropDown

ComboWndProc	DestroyWnd	MeasureItem

CreateParams	DrawItem	WndProc


イベント
イベント14850

OnChange	OnDrawItem	OnMeasureItem

OnDropDown


参照
参照14851

TWinControl コンポーネント


TCustomEdit コンポーネント
TCustomEdit コンポーネント14852

参照	プロパティ	メソッド	イベント	コンポーネント

ユニット

StdCtrls

説明

TCustomEdit コンポーネントは，TEdit, TDBEdit, TMaskEdit, TMemo を含む，Delphi のすべての編集ボックスコンポーネントとメモコンポーネントの抽象基本コンポーネント型です。

TCustomEdit で宣言されたすべてのプロパティは TEdit でパブリッシュに設定されており，編集ボックスコンポーネントの VCL リファレンスに説明されています。TWinControl から継承するメソッドのほかに，TCustomEdit は 2 つのプロテクトメソッドをオーバーライドし，OnChange イベントを発生させる Change とうプロテクトメソッドを新しく提供します。OnChange も TCustomEdit で新しく提供されるものです。


プロパティ
プロパティ14853

AutoSelect	HideSelection	PasswordChar

AutoSize	MaxLength	ParentColor

BorderStyle	OEMConvert	ReadOnly

CharCase


メソッド
メソッド14854

Change	CreateParams	CreateWnd


イベント
イベント14855

OnChange


参照
参照14856

TWinControl コンポーネント


TCustomGroupBox コンポーネント
TCustomGroupBox コンポーネント14857

参照	メソッド	コンポーネント

ユニット

StdCtrls

説明

TCustomGroupBox コンポーネントは TGroupBox と TRadioGroup を含む，Delphi のすべてのグループボックスコントロールの抽象基本コンポーネント型です。

TCustomGroupBox は TCustomControl から継承するメソッドのほかにプロテクトメソッドを新しく 1 つ提供します。この AlignControls メソッドは所有コントロールの位置設定を処理します。また，TCustomGroupBox は Paint メソッドをオーバーライドします。


メソッド
メソッド14858

AlignControls	Create	Paint


参照
参照14859

TCustomControl コンポーネント


TCustomLabel コンポーネント
TCustomLabel コンポーネント14860

参照	プロパティ	メソッド	コンポーネント

ユニット

StdCtrls

説明

TCustomLabel コンポーネントは TLabel と TDBText を含む，Delphi のすべてのラベルコンポーネントの抽象基本コンポーネント型です。

TCustomLabel で新しく提供されるプロパティはすべて TLabel でパブリッシュに設定されており，TLabel の VCL リファレンスに説明されています。TGraphicControl から継承するメソッドのほかに，TCustomLabel は 2 つのプロテクトメソッドをオーバーライドします。


プロパティ
プロパティ14861

Alignment	FocusControl	Transparent

AutoSize	ShowAccelChar	WordWrap

Canvas


メソッド
メソッド14862

Create	Notification	Paint


参照
参照14863

TGraphicControl コンポーネント


TCustomListBox コンポーネント
TCustomListBox コンポーネント14864

参照	プロパティ	メソッド	イベント	コンポーネント

ユニット

StdCtrls

説明

TCustomListBox コンポーネントは TListBox, TDBListBox, TFileListBox を含む，すべてのリストボックスコントロールの抽象基本型です。

TCustomListBox で宣言されるすべてのプロパティと多くのメソッドは TListBox でパブリッシュに設定されています。TWinControl から継承するメソッドのほかに，TCustomListBox はいくつかのプロテクトメソッドをオーバーライドし，2 つのプロテクトメソッドを新しく提供します。その DrawItem メソッドと MeasureItem メソッドは OnDrawItem イベントと OnMeasureItem イベントをそれぞれ発生させます。


プロパティ
プロパティ14865

BorderStyle	ItemIndex	Selected

Canvas	Items	Sorted

Columns	MultiSelect	Style

ExtendedSelect	ParentColor	TabStop

IntegralHeight	SelCount	TopIndex

ItemHeight


メソッド
メソッド14866

Clear	Destroy	ItemAtPos

Create	DestroyWnd	ItemRect

CreateParams	DragCanceled	MeasureItem

CreateWnd	DrawItem	WndProc


イベント
イベント14867

OnDrawItem	OnMeasureItem


参照
参照14868

TWinControl コンポーネント


TCustomMaskEdit コンポーネント
TCustomMaskEdit コンポーネント14869

参照	プロパティ	メソッド	コンポーネント

ユニット

Mask

説明

TCustomMaskEdit コンポーネントは TCustomEdit から派生した抽象コンポーネント型で，これを使うと TMaskEdit などの便利なマスク編集ボックスコンポーネントが作成できます。TCustomMaskEdit に宣言されたプロパティとメソッドのほとんどは TMaskEdit でパブリッシュに設定されており，マスク編集ボックスの VCL リファレンスに説明されています。

このほか，下位のマスク編集ボックスでオーバーライドできるプロテクトメソッドも数多くあります。


プロパティ
プロパティ14870

EditMask	IsMasked	Text

EditText	MaxLength


メソッド
メソッド14871

CheckCursor	GetMaxChars	KeyPress

Clear	GetNextEditChar	KeyUp

Create	GetPriorEditChar	SetCursor

Destroy	GetSel	SetSel

EditCanModify	GetTextLen	ValidateEdit

GetFirstEditChar	KeyDown	ValidateError

GetLastEditChar


参照
参照14872

TCustomEdit コンポーネント


TCustomMemo コンポーネント
TCustomMemo コンポーネント14873

参照	プロパティ	メソッド	コンポーネント

ユニット

StdCtrls

説明

TCustomMemo  コンポーネントはメモコンポーネントの抽象基本型です。メモコンポーネントは TMemo や TDBMemo などの複数行の編集ボックスです。

TCustomEdit からの継承項目のほかに，TCustomMemo は TMemo でパブリッシュに設定されるいくつかのプロパティを新しく提供します。これらはすべて TMemo コンポーネントの VCL リファレンスに説明されています。TCustomMemo は，継承プロテクトメソッドのいくつかもオーバーライドします。


プロパティ
プロパティ14874

Alignment	ScrollBars	WantTabs

Lines	WantReturns	WordWrap


メソッド
メソッド14875

Create	CreateWindowHandle	KeyPress

CreateParams	Destroy


参照
参照14876

TCustomEdit コンポーネント


TCustomOutline コンポーネント
TCustomOutline コンポーネント14877

参照	プロパティ	メソッド	イベント	コンポーネント

ユニット

Outline

説明

TCustomOutline コンポーネントは，TCustomGrid から派生した特殊な抽象グリッドコンポーネントです。TCustomOutline は TOutline などの便利なグリッドコンポーネントの基礎です。TCustomOutline に定義されるプロパティとメソッドのほとんどはプロテクトされており，各アウトラインコンポーネントでパブリッシュに設定するかは選択できます。TOutline ではそのほとんどがパブリッシュに設定されており，TOutline の VCL リファレンスに説明されています。

TOutline でパブリッシュに設定されている項目のほかに，TCustomOutline は各アウトラインコンポーネントでオーバーライドしなくてはならないプロテクトメソッドを数多く宣言します。


プロパティ
プロパティ14878

Canvas	Options	PictureOpen

ItemCount	OutlineStyle	PicturePlus

ItemHeight	PictureClosed	Row

Items	PictureLeaf	SelectedItem

ItemSeparator	PictureMinus	Style

Lines


メソッド
メソッド14879

Add	DrawCell	KeyDown

AddChild	EndUpdate	KeyPress

AddChildObject	Expand	Loaded

AddObject	FullCollapse	LoadFromFile

BeginUpdate	FullExpand	LoadFromStream

Clear	GetDataItem	Move

Collapse	GetItem	SaveToFile

Create	GetNodeDisplayWidth	SaveToStream

DblClick	GetTextItem	SetDisplayWidth

DefineProperties	Insert	SetLevel

Delete	InsertObject	SetUpdateState

Destroy


イベント
イベント14880

OnCollapse	OnExpand	OnDrawItem


参照
参照14881

TCustomGrid コンポーネント


TCustomPanel コンポーネント
TCustomPanel コンポーネント14882

参照	プロパティ	メソッド	イベント	コンポーネント

ユニット

ExtCtrls

説明

TCustomPanel コンポーネントは，TPanel を含む Delphi のすべてのパネルコンポーネントの抽象基本コンポーネント型です。

TCustomControl からの継承項目のほかに，TCustomPanel は数多くのプロパティを新しく提供します。これらはすべて TPanel でパブリッシュに設定されており，TPanel の VCL リファレンスに説明されています。また，TCustomPanel は多くの継承プロテクトメソッドをオーバーライドし，OnResize イベントを発生させるプロテクトメソッド Resize を新しく提供します。OnResize も TCustomPanel で新しく提供されるものです。


プロパティ
プロパティ14883

Alignment	BevelWidth	Color

BevelInner	BorderWidth	Locked

BevelOuter	BorderStyle	ParentColor


メソッド
メソッド14884

AlignControls	CreateParams	Paint

Create	DefineProperties	Resize


イベント
イベント14885

OnResize


参照
参照14886

TCustomControl コンポーネント


TCustomRadioGroup コンポーネント
TCustomRadioGroup コンポーネント14887

参照	プロパティ	メソッド	コンポーネント

ユニット

ExtCtrls

説明

TCustomRadioGroup コンポーネントは TCustomGroupBox の特殊な下位コンポーネントで，ラジオグループコンポーネントの基礎コンポーネント型です。

TCustomRadioGroup で新しく提供されるプロパティはすべて TRadioGroup でパブリッシュに設定されており，TRadioGroup の VCL リファレンスに説明されています。TCustomRadioGroup は継承プロテクトメソッドをいくつかオーバーライドし，CanModify というプロテクトメソッドを新しく提供します。


プロパティ
プロパティ14888

Columns	ItemIndex	Items


メソッド
メソッド14889

CanModify	Destroy	ReadState

Create


参照
参照14890

TCustomGroupBox コンポーネント


TFindDialog コンポーネント (プロテクト)
TFindDialog コンポーネント (プロテクト)14891

参照	メソッド	コンポーネント

ユニット

Dialogs

説明

TFindDialog コンポーネントは TCommonDialog の下位コンポーネントです。継承項目のほかに，TFindDialog は Message メソッドをオーバーライドし，3 つのプロテクトメソッドを新しく提供します。1 つは Find で OnFind イベントを発生させます。残りの 2 つの ConvertFields と ConvertFieldsForCallback は Windows のコモンダイアログボックスとのデータの交換のためにデータ型を変換します。


メソッド
メソッド14892

ConvertFields	Find	Message

ConvertFieldsForCallback


参照
参照14893

TCommonDialog コンポーネント

TFindDialog コンポーネント VCL リファレンス


TFontDialog コンポーネント (プロテクト)
TFontDialog コンポーネント (プロテクト)14894

参照	メソッド	コンポーネント

ユニット

Dialogs

説明

TFontDialog コンポーネントは TCommonDialog の下位コンポーネントです。継承項目と TFontDialog の VCL リファレンスに説明があるパブリッシュ項目のほかに，TFontDialog は現在の［font］ダイアログボックスの値を適用する Apply というプロテクトメソッドを新しく提供します。


メソッド
メソッド14895

Apply


参照
参照14896

TCommonDialog コンポーネント

TFontDialog コンポーネント VCL リファレンス


THeader コンポーネント (プロテクト)
THeader コンポーネント (プロテクト)14897

参照	メソッド	コンポーネント

ユニット

ExtCtrls

説明

THeader コンポーネントは TCustomControl の下位コンポーネントです。継承項目と THeader の VCL リファレンスに説明があるパブリッシュ部のほかに，2 つのプロテクトメソッドをオーバーライドし，OnSized イベントと OnSizing イベントをそれぞれ発生させる Sized と Sizing というプロテクトメソッドを新しく提供します。


メソッド
メソッド14898

CreateParams	Sized	Sizing

Paint


参照
参照14899

TCustomControl コンポーネント

THeader コンポーネント VCL リファレンス


TImage コンポーネント (プロテクト)
TImage コンポーネント (プロテクト)14900

参照	メソッド	コンポーネント

ユニット

ExtCtrls

説明

TImage コンポーネントは TGraphicControl の下位コンポーネントです。継承項目と TImage の VCL リファレンスに説明があるパブリッシュ項目のほかに，TImage は GetPalette メソッドと Paint メソッドをオーバーライドします。


メソッド
メソッド14901

GetPalette	Paint


参照
参照14902

TGraphicControl コンポーネント

TImage コンポーネント VCL リファレンス


Timer メソッド
Timer メソッド14903

参照

ユニット

ExtCtrls

適用

TTimer

宣言

procedure Timer; dynamic;

説明

Timer メソッドは Timer コンポーネントの OnTimer イベント用のプロテクト実現メソッドです。Timer コンポーネントは Windows からタイマーメッセージ (WM_TIMER) を受け取ると Timer を呼び出します。

TTimer に定義される Timer メソッドは OnTimer イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。Timer をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。


参照
参照14904

OnTimer イベント


TMediaPlayer コンポーネント (プロテクト)
TMediaPlayer コンポーネント (プロテクト)14905

参照	メソッド	コンポーネント

ユニット

MPlayer

説明

TMediaPlayer コンポーネントは TCustomControl の下位コンポーネントです。継承項目と TMediaPlayer の VCL リファレンスに説明があるパブリッシュ項目のほかに，メディアプレーヤボタンを表示するために Paint メソッドを，AutoOpen プロパティを実現するために Loaded メソッドをオーバーライドします。TMediaPlayer はクリックや Windows の通知を処理するためのプロテクトメソッドも新しく提供します。


メソッド
メソッド14906

AutoButtonSet	Loaded	Paint

Click	MMNotify	PostClick

DoNotify


参照
参照14907

TCustomControl コンポーネント

TMediaPlayer コンポーネント VCL リファレンス


TMemo コンポーネント (プロテクト)
TMemo コンポーネント (プロテクト)14908

参照	メソッド	コンポーネント

ユニット

StdCtrls

説明

TMemo コンポーネントは TCustomMemo からすべてのものを継承し，DefineProperties というプロテクトメソッドをオーバーライドします。TMemo のほかのすべての項目はパブリックかパブリッシュに設定されており，TMemo コンポーネントの VCL リファレンスに説明されています。


メソッド
メソッド14909

DefineProperties


参照
参照14910

TCustomMemo コンポーネント

TMemo コンポーネント VCL リファレンス


TMenu コンポーネント
TMenu コンポーネント14911

参照	プロパティ	メソッド	コンポーネント

ユニット

Menus

説明

TMenu コンポーネントは，TMainMenu や TPopupMenu などの便利なメニューコンポーネントの抽象基本型です。上位コンポーネント TComponent からの継承項目のほかに，TMenu は 3 つのプロパティといくつかのメソッドを新しく提供します。


プロパティ
プロパティ14912

Handle	Items	WindowHandle


メソッド
メソッド14913

Create	DispatchPopup	IsShortCut

Destroy	FindItem	WriteComponents

DispatchCommand	GetHelpContext


参照
参照14914

TComponent コンポーネント


TMenuItem コンポーネント (プロテクト)
TMenuItem コンポーネント (プロテクト)14915

参照	メソッド	コンポーネント

ユニット

Menus

説明

TMenuItem コンポーネントはメインメニューまたはポップアップメニューの項目です。TMenuItem のほとんどの部はパブリックかパブリッシュに設定されており，メニュー項目の VCL リファレンスに説明されています。TMenuItem は OnChange イベントを実現する MenuChanged というプロテクトメソッドを 1 つ新しく提供し，4 つのプロテクトメソッド DefineProperties, HasParent, ReadState, WriteComponents をオーバーライドします。


メソッド
メソッド14916

DefineProperties	MenuChanged	WriteComponents

HasParent	ReadState


参照
参照14917

TComponent コンポーネント

TMenuItem コンポーネント VCL リファレンス


TNotebook コンポーネント (プロテクト)
TNotebook コンポーネント (プロテクト)14918

参照	メソッド	コンポーネント

ユニット

ExtCtrls

説明

TNotebook コンポーネントは カスタムコントロールです。継承項目と TNotebook の VCL リファレンスに説明があるパブリッシュ項目のほかに，いくつかの継承プロテクトメソッドをオーバーライドします。


メソッド
メソッド14919

CreateParams	ShowControl	WriteComponents

ReadState


参照
参照14920

TCustomControl コンポーネント

TNotebook コンポーネント VCL リファレンス


Toggle メソッド
Toggle メソッド14921

参照

適用

TCustomCheckBox

宣言

procedure Toggle; virtual;

説明

Toggle メソッドはチェックボックスコンポーネントの State プロパティの値の間を切り替えます。チェックボックスコンポーネントはクリックされると Toggle を呼び出します。

次の表に，TCustomCheckBox で定義される Toggle メソッドが，State の値をそれ以前の値に基づいてどのように変更するかを示します。

Toggle を呼び出す前の State	Toggle を呼び出した後の State

csChecked	csUnchecked

csGrayed	csChecked

csUnchecked	csChecked，ただし AllowGrayed が True の場合は csGrayed

Toggle をオーバーライドし，チェックボックスコンポーネントでの値の切り替え順序を変更することもできます。


参照
参照14922

State プロパティ


TRadioButton コンポーネント (プロテクト)
TRadioButton コンポーネント (プロテクト)14923

参照	メソッド	コンポーネント

ユニット

StdCtrls

説明

TRadioButton コンポーネントはボタンコントロールです。継承項目と TRadioButton の VCL リファレンスに説明があるパブリッシュ項目のほかに，CreateParams と CreateWnd という 2 つのプロテクトメソッドをオーバーライドします。


メソッド
メソッド14924

CreateParams	CreateWnd


参照
参照14925

TButtonControl コンポーネント

TRadioButton コンポーネント VCL リファレンス


TReplaceDialog コンポーネント (プロテクト)
TReplaceDialog コンポーネント (プロテクト)14926

参照	メソッド	コンポーネント

ユニット

Dialogs

説明

TReplaceDialog コンポーネントはテキストの検索と置換を両方とも実行する TFindDialog をカスタマイズしたものです。継承項目と TReplaceDialog の VCL リファレンスに説明があるパブリッシュ項目のほかに，ConvertFields と ConvertFieldsForCallback というプロテクトメソッドをオーバーライドし，OnReplace イベントを発生させる Replace というプロテクトメソッドを新しく提供します。


メソッド
メソッド14927

ConvertFields	ConvertFieldsForCallback	Replace


参照
参照14928

TFindDialog コンポーネント (プロテクト)

TReplaceDialog コンポーネント VCL リファレンス


TShape コンポーネント (プロテクト)
TShape コンポーネント (プロテクト)14929

参照	メソッド	コンポーネント

ユニット

ExtCtrls

説明

TShape コンポーネントは TGraphicControl の単純な下位コンポーネントです。Shape コンポーネントの VCL リファレンスに説明があるパブリッシュ部のほかに，TShape は幾何学図形を描画するために Paint というプロテクトメソッドをオーバーライドします。


メソッド
メソッド14930

Paint


参照
参照14931

TGraphicControl コンポーネント

TShape コンポーネント VCL リファレンス


TPaintBox コンポーネント (プロテクト)
TPaintBox コンポーネント (プロテクト)14932

参照	メソッド	コンポーネント

ユニット

ExtCtrls

説明

TPaintBox コンポーネントは TGraphicControl の単純な下位コンポーネントです。Paint Box コンポーネントの VCL リファレンスに説明があるパブリッシュ部のほかに，TPaintBox は OnPaint イベントを発生させる Paint というプロテクトメソッドをオーバーライドします。


メソッド
メソッド14933

Paint


参照
参照14934

TGraphicControl コンポーネント

TPaintBox コンポーネント VCL リファレンス


TScrollBar コンポーネント (プロテクト)
TScrollBar コンポーネント (プロテクト)14935

参照	メソッド	コンポーネント

ユニット

StdCtrls

説明

TScrollBar オブジェクトはウィンドウコントロールです。継承項目と TScrollBar の VCL リファレンスに説明があるパブリッシュ項目のほかに，TScrollBar は 2 つのプロテクトメソッドをオーバーライドし，OnChange イベントと OnScroll イベントをそれぞれ発生させるプロテクトメソッドの Change と Scroll を新しく提供します。


メソッド
メソッド14936

Change	CreateWnd	Scroll

CreateParams


参照
参照14937

TWinControl コンポーネント

TScrollBar コンポーネント VCL リファレンス


TTabSet コンポーネント (プロテクト)
TTabSet コンポーネント (プロテクト)14938

参照	メソッド	コンポーネント

ユニット

Tabs

説明

TTabSet コンポーネントはカスタムコントロールです。継承項目と TTabSet の VCL リファレンスに説明があるパブリッシュ項目のほかに，DefineProperties と Paint というプロテクトメソッドをオーバーライドし，3 つのプロテクトメソッドを新しく提供します。その 2 つの DrawTab と MeasureTab はそれぞれ OnDrawTab イベントと OnMeasureTab イベントを発生させます。もう 1 つの CanChange はコントロールが選択されたタブの変更ができるかを判定し，変更できる場合は OnChange イベントを発生させます。


メソッド
メソッド14939

CanChange	DrawTab	Paint

DefineProperties	MeasureTab


参照
参照14940

TCustomControl コンポーネント

TTabSet コンポーネント VCL リファレンス


TTimer コンポーネント (プロテクト)
TTimer コンポーネント (プロテクト)14941

参照	メソッド	コンポーネント

ユニット

ExtCtrls

説明

TTimer コンポーネントは TComponent から直接派生した，単純な非ビジュアルコンポーネントです。タイマーコンポーネントの VCL リファレンスに説明があるパブリック項目とパブリッシュ項目のほかに，TTimer は OnTimer イベントを発生させる Timer というプロテクトメソッドを宣言します。


メソッド
メソッド14942

Timer


参照
参照14943

TComponent コンポーネント

TTimer コンポーネント VCL リファレンス


ValidateError メソッド
ValidateError メソッド14944

参照

適用

TCustomMaskEdit

宣言

procedure ValidateError; virtual;

説明

ValidateError メソッドは，マスク編集ボックスのテキストの検証でエラーが発生すると ValidateEdit メソッドにより呼び出されます。デフォルトでは，ValidateError は警告音を鳴らしてから EDBEditError 例外を生成します。ValidateError をオーバーライドし，別のエラー処理もできます。


参照
参照14945

ValidateEdit メソッド


コンポーネント
コンポーネント14946

オブジェクト	ルーチン	VCL コンポーネント

ここではコンポーネントの保護部だけを記載します。

TApplication	TCustomMaskEdit	TMenu

TBevel	TCustomMemo	TMenuItem

TButton	TCustomOutline	TNotebook

TButtonControl	TCustomPanel	TPaintBox

TCommonDialog	TCustomRadioGroup	TRadioButton

TComponent	TFindDialog	TReplaceDialog

TControl	TFontDialog	TScrollBar

TCustomCheckBox	TForm	TScrollBox

TCustomComboBox	TGraphicControl	TScrollingWinControl

TCustomControl	THeader	TShape

TCustomEdit	THintWindow	TTabSet

TCustomGrid	TImage	TTimer

TCustomGroupBox	TInplaceEdit	TWinControl

TCustomLabel	TMediaPlayer

TCustomListBox	TMemo


オブジェクト
オブジェクト14947

コンポーネント	ルーチン	VCL オブジェクト

『コンポーネント開発者リファレンス』に記載されているオブジェクトを次に示します。

TBitmap	TFiler	TMPFileNameProperty

TCanvas	TFileStream	TObject

TCaptionProperty	TFloatProperty	TOrdinalProperty

TCharProperty	TFontProperty	TPersistent

TClassProperty	TFontNameProperty	TPicture

TColorProperty	TFormDesigner	TPropertyEditor

TComponentEditor	TGraphic	TReader

TComponentList	THandleStream	TResourceStream

TComponentProperty	TIcon	TSetElementProperty

TControlCanvas	TIntegerProperty	TSetProperty

TCursorProperty	TList	TShortCutProperty

TCustomMemoryStream	TMemoryStream	TStream

TDefaultEditor	TMetafile	TStringProperty

TDesigner	TMethodProperty	TTabOrderProperty

TEnumProperty	TModalResultProperty	TWriter


ルーチン
ルーチン14948

コンポーネント	オブジェクト

次の手続きと関数は主にコンポーネントの開発に関係します。

DrawButtonFace	GetFixupRoots	RegisterComponentEditor

FindDragTarget	IdentToCursor	RegisterComponents

FormatMaskText	InitComponentRes	RegisterPropertyEditor

GetComponentEditor	MaskGetFldSeparator	SetCaptureControl

GetComponentProperties	MaskGetMaskBlank	StringToCursor

GetCursorValues	MaskGetMaskSave


Ancestor プロパティ
Ancestor プロパティ14949

参照

適用

TFiler

宣言

property Ancestor: TPersistent;

説明

Ancestor プロパティは，継承フォームにコンポーネントを書き込む場合に使われます。ライターオブジェクトは，継承したのと異なるプロパティの値だけを書き込まなければならないので，継承した各コンポーネントを Ancestor に記録し，書き込む前にプロパティを比較します。

Ancestor が nil の場合，対応する継承コンポーネントはなく，ライターオブジェクトがコンポーネントをストリームに完全に書き出さなければなりません。WriteDescendant と WriteDescendantRes を呼び出している間を除いて，Ancestor は常に nil です。

DefineProperties メソッドを記述またはオーバーライドする場合，Ancestor が設定されることを意識しなければならず，それに応じて，プロパティを記述しなければならない場合と記述する必要のない場合があります。


参照
参照14950

RootAncestor プロパティ

DefineProperties メソッド


AssignTo メソッド
AssignTo メソッド14951

参照

適用

TPersistent

宣言

procedure AssignTo(Dest: TPersistent); virtual;

説明

AssignTo メソッドはオブジェクトに関連付けられたデータを別のオブジェクトに割り当てる一般的な機構を提供します。AssignTo はパブリックメソッド Assign の実際の作業を行なうプロテクトメソッドです。デフォルトの場合，AssignTo は EConvertError 例外を生成します。クリップボードオブジェクトは AssignTo をオーバーライドすることで異種のグラフィックオブジェクト間でクリップボードのデータをコピーできるようにします。

TClipboard.AssignTo はクリップボードの内容を Dest で指定するオブジェクトにコピーします。Dest は画像，ビットマップ，メタファイルのいずれかでなくてはなりません。それ以外の種類のオブジェクトを指定すると変換エラーが発生します。


参照
参照14952

Assign メソッド


BeginReferences メソッド
BeginReferences メソッド14953

参照	例

適用

TReader

宣言

procedure BeginReferences;

説明

BeginReferences メソッドは，互いへの参照があるコンポーネントを読み出すブロックの開始を宣言します。BeginReferences は，try..finally ブロック内で必ず FixupReferences と EndReferences と一緒に使います。

BeginReferences を呼び出した後，読み出されたすべてのオブジェクトとそれらの名前のリストがリーダーオブジェクトによって作成されます。すべての相互依存オブジェクトを読み出した後，ストリームからの名前付き参照をインスタンスへの参照にするために FixupReferences を呼び出します。最後に，フィックスアップリストを破棄するために EndReferences を呼び出します。


例
例14954

互いを参照するコンポーネントを読み出すブロックは，常に次の形式になります。

BeginReferences;	{ フィックスアップリストを作成する }

try

  { すべてのコンポーネントを読み出し，それらの名前をフィックスアップリストに追加する }

  ...

  FixupReferences;	{ 名前をフィックスアップリストに追加する }

finally

  EndReferences;	{ フィックスアップリストを破棄する }

end;


参照
参照14955

EndReferences メソッド

FixupReferences メソッド


Capacity プロパティ
Capacity プロパティ14956

参照

適用

TMemoryStream

宣言

property Capacity: Longint;

説明

Capacity プロパティは，一度の割り当てでメモリストリームに割り当てるメモリプールのサイズを決めます。ストリーム内のデータのサイズである Size とは異なります。大量のデータを小さい単位で追加することがわかっている場合は，Capacity の初期値を大きくして再割り当ての多発を防げます。


参照
参照14957

Size プロパティ

Realloc メソッド


ChangeName メソッド
ChangeName メソッド14958

参照

適用

TComponent (すべてのコンポーネント)

宣言

procedure ChangeName(const NewName: TComponentName);

説明

ChangeName メソッドは NewName で指定する文字列を Name プロパティの内部領域に設定します。SetName メソッドは ChangeName を使ってコンポーネント名を実際に変更します。SetName をオーバーライドする場合，継承した SetName を呼び出すか，ChangeName を直接呼び出すか，Name プロパティに新たな内部記憶領域を割り当てなくてはなりません。


参照14959

Name プロパティ

すべてのコンポーネントの SetName メソッド


Clear メソッド
Clear メソッド14960

参照

適用

TMemoryStream

宣言

procedure Clear;

説明

Clear メソッドはメモリストリームに割り当てたメモリプールを破棄し，Memory プロパティを nil に設定します。Clear を呼び出した後は，メモリストリームの Size プロパティと Position プロパティはどちらも 0 になります。


参照
参照14961

Memory プロパティ


ComponentState プロパティ
ComponentState プロパティ14962

参照

適用

TComponent (すべてのコンポーネント)

宣言

property ComponentState: TComponentState;

説明

ComponentState プロパティはコンポーネントの現在の状態を示す読み出し専用のプロパティです。各コンポーネント状態フラグについての詳細は TComponentState 型を参照してください。

コンポーネントは特定の種類のアクションを避けなくてはならない状態を ComponentState プロパティを使って検出します。たとえばコンポーネントで実行時での特定の動作を設計時にはしてはならない場合，csDesigning フラグの有無を調べて判断します。


参照
参照14963

TComponentState 型


ComponentStyle プロパティ
ComponentStyle プロパティ14964

参照

適用

TComponent (すべてのコンポーネント)

宣言

property ComponentStyle: TComponentStyle;

説明

ComponentStyle プロパティは，コンポーネントの動作を制御する使用可能なスタイルの集合です。

もしあれば，csInheritable スタイルは，下位フォーム型がコンポーネントを継承できることを表します。フォームのどのコンポーネントにも csInheritable スタイルがない場合，そのフォームを継承フォームの上位として使うことはできません。TComponent は csInheritable スタイルをデフォルトで設定し，標準コンポーネントの大部分は継承可能です。

csCheckPropAvail スタイルは，コンポーネントがプロパティの読み出し可能性をチェックしなければならないことを表します。csCheckPropAvail スタイルは OLE コントロールにだけ使われます。プロパティが読み出し可能かどうか，したがって表示可能かどうかをオブジェクトインスペクタで直接判断することはできません。読み出し可能性のチェックは時間がかかるので，Delphi のネイティブコンポーネントは csCheckPropAvail スタイルを使うべきではありません。


参照
参照14965

TComponentStyle 型


CopyFrom メソッド
CopyFrom メソッド14966

適用

TStream

宣言

function CopyFrom(Source: TStream; Count: Longint): Longint;

説明

CopyFrom メソッドは Source で指定するストリームの Count バイトをストリームにコピーし，現在の位置を Count で指定するバイト数だけ移動し，コピーしたバイト数を返します。


フィルタオブジェクトの Create メソッド
Create メソッド14967

参照

適用

TFiler

宣言

constructor Create(Stream: TStream; BufSize: Cardinal);

説明

Create メソッドは新しいファイラオブジェクトを作成し，Stream パラメータで指定したストリームに BufSize で指定するバッファサイズ分だけ関連付けます。


参照
参照14968

Create メソッド


コンポーネントの Create メソッド
Create メソッド14969

参照

適用

TComponent

宣言

constructor Create(AOwner: TComponent); virtual;

説明

Create メソッドは新しいコンポーネントオブジェクトを作成し，初期化してから，AOwner パラメータで指定するオーナーの InsertComponent メソッドを呼び出して新しく作成したコンポーネントをそのオーナーに挿入します。

ほとんどのコンポーネントは Create をオーバーライドし，そのコンポーネント独自のプロパティを初期化します。コンポーネントの Create をオーバーライドする場合，継承する Create メソッドを先に呼び出してからコンポーネントを初期化しなくてはなりません。

コンポーネントの Create メソッドがリソースまたはメモリを割り当てる場合，Destroy メソッドもオーバーライドしてそのリソースを解放しなくてはなりません。


参照
参照14970

すべてのオブジェクトの Create メソッド

Destroy メソッド


ファイルストリームオブジェクトの Create メソッド
Create メソッド14971

参照

適用

TFileStream

宣言

constructor Create(const FileName: string; Mode: Word);

説明

Create メソッドは FileName で指定するファイルに関連付けられた新しいファイルストリームオブジェクトを作成します。Create は関連付けられたファイルを Mode で指定するファイルモードを使って開きます。Mode は Delphi のファイルモード定数でなくてはなりません。


参照
参照14972

Create メソッド


ハンドルストリームオブジェクトの Create メソッド
Create メソッド14973

参照

適用

THandleStream

宣言

constructor Create(AHandle: Integer);

説明

Create メソッドは AHandle で指定するファイルハンドルに関連付けられた新しいハンドルストリームを作成します。AHandle はストリームの Handle プロパティの値になります。


参照
参照14974

Create メソッド

Handle プロパティ


Create メソッド
Create メソッド14975

参照

適用

TResourceStream

宣言

constructor Create(Instance: THandle; const ResName: string; ResType: PChar);

説明

リソースストリームの Create メソッドは，ResName に指定した名前で ResType に指定した型のリソースがあるメモリストリームを，Instance に渡したインスタンスから作成します。


参照
参照14976

CreateFromID メソッド


CreateFromID メソッド
CreateFromID14977

参照

適用

TResourceStream

宣言

constructor CreateFromID(Instance: THandle; ResID: Integer; ResType: PChar);

説明

CreateFormID メソッドは，型が ResType で，リソース ID が ResID と一致する，Instance に渡したインスタンスのリソースにメモリストリームを作成します。


参照
参照14978

リソースストリームの Create メソッド


DefineBinaryProperty メソッド
DefineBinaryProperty メソッド14979

参照

適用

TFiler, TReader, TWriter

宣言

procedure DefineBinaryProperty(const Name: string; ReadData, WriteData: TStreamProc;
  HasData: Boolean); virtual; abstract;

説明

DefineBinaryProperty メソッドはプロパティであるかのようにファイラオブジェクトが格納するバイナリデータを定義します。Name パラメータはこの「偽の」プロパティの名前を指定します。パラメータ ReadData と WriteData は必要なデータの読み出し，書き込みをする格納側オブジェクトのメソッドをそれぞれ指定します。HasData パラメータは実行時に「偽の」プロパティが格納データを持っているかどうか示します。

DefineBinaryProperty とその非バイナリバージョンである DefineProperty は格納するデータを持つオブジェクトの DefineProperties メソッド内だけで呼び出さなくてはなりません。DefineProperties にはパラメータとしてファイラオブジェクトがあるので，そのファイラオブジェクトのメソッド DefineProperty と DefineBinaryProperty を呼び出します。

DefineBinaryProperty と DefineProperty の相違点はバイナリプロパティの場合ファイラオブジェクトを介すのではなくストリームオブジェクトとして直接書き込まれることです。ReadData と WriteData で指定するメソッドはオブジェクトのバイナリデータを指定するストリームに直接書き込み，読み出します。

バイナリプロパティを定義することはほとんどありません。バイナリプロパティを定義する標準的な VCL オブジェクトはカスタムアウトライン (内部ビットマップを格納するためのカスタムアウトライン)，グラフィック，画像だけです。


参照
参照14980

DefineProperty メソッド

DefineProperties メソッド


DefineProperties メソッド
DefineProperties メソッド14981

参照	例

適用

TPersistent

宣言

procedure DefineProperties(Filer: TFiler); virtual;

説明

DefineProperties メソッドはフォームファイルなどのストリームにオブジェクトの非パブリッシュデータを格納するメソッドを指定します。デフォルトの場合，ストリームへのオブジェクトの書き込みではすべてのパブリッシュプロパティの値を書き込み，オブジェクトの読み出しではすべてのパブリッシュプロパティの値を読み出してプロパティに割り当てます。オブジェクトは DefineProperties メソッドをオーバーライドすることでプロパティ以外のデータの読み出しと書き込みのメソッドも指定できます。

DefineProperties をオーバーライドする場合，次の一部またはすべてを指定します。

継承メソッドの呼び出し

ファイラオブジェクトの DefineProperty メソッドの呼び出し

ファイラオブジェクトの DefineBinaryProperty メソッドの呼び出し

TPersistent が定義する DefineProperties メソッドはデフォルトの場合何もしませんが，それ以外の多くのオブジェクトとコンポーネントはこのメソッドをオーバーライドして非パプリッシュデータを格納します。


例
例14982

DefineProperties メソッドの最も単純な例は TComponent の場合です。TComponent ではプロパティ Left と Top が宣言されていませんが，コンポーネントをが配置された位置情報を格納できます。TComponent は DifineProperties をオーバーライドしてコンポーネントの位置を保存するので，TComponent から直接派生した非ビジュアルコンポーネントはその位置を保存できます。

procedure TComponent.DefineProperties(Filer: TFiler);

begin

  Filer.DefineProperty('Left', ReadLeft, WriteLeft, LongRec(FDesignInfo).Lo <> 0);

  Filer.DefineProperty('Top', ReadTop, WriteTop, LongRec(FDesignInfo).Hi <> 0);

end;

一方 TControl では実際に Left プロパティと Top プロパティをパブリッシュとして設定するため，DefineProperties をオーバーライドしても「偽の」Left と Top を定義する継承したメソッドは呼び出す必要はありません。

procedure TControl.DefineProperties(Filer: TFiler);

begin

  { 実際のプロパティにより再定義されるので，継承元で定義されたプロパティを無視します }

  Filer.DefineProperty('IsControl', ReadIsControl, WriteIsControl, FIsControl);

end;


参照
参照14983

DefineProperty メソッド

DefineBinaryProperty メソッド


DefineProperty メソッド
DefineProperty メソッド14984

参照	例

適用

TFiler, TReader, TWriter

宣言

procedure DefineProperty(const Name: string; ReadData: TReaderProc; WriteData: TWriterProc;
  HasData: Boolean); virtual; abstract;

説明

DefineProperty メソッドはファイラオブジェクトにとってあたかもプロパティが存在するかのように読み書きできるデータを実行時に定義します。

Name 引数はこの「偽の」プロパティの名前を指定します。

引数 ReadData と WriteData には必要なデータの読み書きを行うためのメソッドをそれぞれ指定します。

DefineProperty とそのバイナリ版である DefineBinaryProperty は読み書きするデータを持つオブジェクトの DefineProperties メソッドの中からのみ呼び出すことができます。DefineProperties は引数としてファイラオブジェクトを持っています。その DefineProperty や DefineBinaryProperty を呼び出すことでプロパティの登録が行われます。

メモ:	プロパティの書き込みメソッドを定義するときは継承元クラスを知らなければなりません。Ancestor プロパティが nil でない場合は元クラスから継承したもの以外の新たに追加したプロパティの値だけを書き込まなければならないからです。


例
例14985

DefineProperties メソッドの最も単純な例は TComponent の場合です。TComponent ではプロパティ Left と Top が宣言されていませんが，コンポーネントが配置された位置情報を格納できます。TComponent は DifineProperties をオーバーライドしてコンポーネントの位置を保存するので，TComponent から直接派生した非ビジュアルコンポーネントはその位置を保存できます。

procedure TComponent.DefineProperties(Filer: TFiler);

begin

  Filer.DefineProperty('Left', ReadLeft, WriteLeft, LongRec(FDesignInfo).Lo <> 0);

  Filer.DefineProperty('Top', ReadTop, WriteTop, LongRec(FDesignInfo).Hi <> 0);

end;


参照
参照14986

DefineBinaryProperty メソッド

DefineProperties メソッド

Ancestor プロパティ


DesignInfo プロパティ
DesignInfo プロパティ14987

適用

TComponent (すべてのコンポーネント)

宣言

property DesignInfo: Longint;

説明

DesignInfo プロパティにはフォームデザイナが使う情報が含まれています。DesignInfo にアクセスする必要はありません。


DestroyComponents メソッド
DestroyComponents メソッド14988

参照

適用

TComponent (すべてのコンポーネント)

宣言

procedure DestroyComponents;

説明

DestroyComponents メソッドはコンポーネントが所有するすべてのコンポーネントについて，所有リストから削除し，廃棄します。TComponent の Destroy メソッドは Destroying を呼び出した後，Destroy メソッドそのものが終了する前に DestroyComponents を呼び出します。


参照
参照14989

Destroy メソッド

Destroying メソッド


Destroying メソッド
Destroying メソッド14990

参照

適用

TComponent (すべてのコンポーネント)

宣言

procedure Destroying;

説明

Destroying メソッドは ComponentState プロパティに csDestroying フラグを設定してから所有コンポーネントごとに Destroying メソッドを呼び出して，どのコンポーネントにもこのフラグが再度設定されるようにします。csDestroying がすでに設定されていれば，Destroying は何もしません。

TComponent の Destroy メソッドは実際に廃棄する前に Destroying を呼び出します。TWinControl などの他のコンポーネントも所有コンポーネントにこれから廃棄することを直接通知するため，Destroying を呼び出します。


参照
参照14991

Destroy メソッド

ComponentState プロパティ


EndOfList メソッド
EndOfList メソッド14992

参照	例

適用

TReader

宣言

function EndOfList: Boolean;

説明

EndOfList メソッドはリーダーオブジェクトが項目リストの最後まで読み出した場合，True を返します。項目リストを読み出すには，リーダーオブジェクトの ReadListBegin メソッドを呼び出してから，リスト項目を繰り返し呼び出して，EndOfList が True を返したら ReadListEnd を呼び出します。


例
例14993

次のコードは TStrings オブジェクトの ReadData メソッドです。このメソッドではリーダーオブジェクトから文字列リスト読み込みを文字列リストオブジェクトに追加します。

procedure TStrings.ReadData(Reader: TReader);

begin

  Reader.ReadListBegin;

  Clear;

  while not Reader.EndOfList do
    Add(Reader.ReadString);

  Reader.ReadListEnd;

end;


参照
参照14994

ReadListBegin メソッド

ReadListEnd メソッド


EndReferences メソッド
EndReferences メソッド14995

参照

適用

TReader

宣言

procedure EndReferences;

説明

EndReferences メソッドは，互いを参照するリーダーオブジェクトのストリームからコンポーネントを読み出すコードのブロックを終了します。EndReferences メソッドは，必ず BeginReferences と FixupReferences の呼び出しのある try..finally ブロックの finally 部の中で使います。


参照
参照14996

BeginReferences メソッド

FixupReferences メソッド


Error メソッド
Error メソッド14997

適用

TReader，TList

宣言

コンポーネント開発者に関係する Error メソッドは 2 つあります。1 つは，リーダーオブジェクトがエラーに遭遇した場合に呼び出されます。もう 1 つは，リストオブジェクトの添字が範囲を超えた場合に呼び出されます。

リーダーオブジェクトの Error メソッド

リストオブジェクトの Error メソッド


Error メソッド
Error メソッド14998

参照	例

適用

TReader

宣言

function Error(const Message: string): Boolean; virtual;

説明

Error メソッドはリーダーオブジェクトの OnError イベントのためのプロテクトメソッドです。戻り値はエラー処理を続行するかどうか示します。戻り値が True ならば,アプリケーションはエラーのまま処理を続けなくてはなりません。False ならば，エラー条件は無視すべきことを示します。

リーダーオブジェクトはコンポーネントまたはプロパティの読み出しに関する問題を検出すると，必ず Error を呼び出します。デフォルトの場合，Error は戻り値に False を設定し，OnError イベントにアタッチされたハンドラを呼び出します。ハンドラで戻り値を変更することができます。


例
例14999

TReader オブジェクトは必ず try..except ブロックの except 部で Error を呼び出し，エラーを無視する機会を用意します。次のような構文が必要です。

try
  { コンポーネントを呼び出す文 }

except

  on E: Exception do
  begin
    ...	{ クリーンアップします }

    if not Error(E.Message) then raise;	{ Error が False を返すと例外が再度生成されます }

  end;
end;

この処理方法は Delphi 環境ですでにご存じかもしれません。フォームファイルの読み出し中に Delphi が未定義のプロパティ名または未登録のコンポーネントを検出すると，リーダーエラーが発生し，エラーを無視して読み出しを続行するか尋ねるメッセージボックスが表示されます。


参照
参照15000

OnError イベント


Error メソッド
Error メソッド15001

参照

適用

TList

宣言

procedure Error; virtual;

説明

Error メソッドは，不正な添字値 (負の添字や，リストの現在のサイズを超えた添字など) をリストオブジェクトが操作しようとした場合に呼び出されます。デフォルトでは，TList.Error によって EListError 例外が生成されます。

追加または代替のエラー処理やエラーレポートを提供するために，Error をオーバーライドできます。


参照
参照15002

EListError オブジェクト


ファイルモード定数
ファイルモード定数15003

参照	例

ユニット

Classes

説明

Classes ユニットはファイルストリームオブジェクトの Create コンストラクタのパラメータとして使うファイルモード定数の数を指定します。指定する定数により，ストリームに関連付けられたファイルを開くのに使うファイルモードが決まります。

次の表にファイルモード定数とその意味を示します。

定数	値	意味

fmOpenRead	$0000	読み出し用にファイルを開く

fmOpenWrite	$0001	書き込み用にファイルを開く

fmOpenReadWrite	$0002	読み書き用にファイルを開く

fmShareExclusive	$0010	ファイルを開く。その間他のアプリケーションが読み出しまたは書き込みのためそのファイルを開くことはできない

fmShareDenyWrite	$0020	ファイルを開く。その間他のアプリケーションが書き込みのためそのファイルを開くことはできない

fmShareDenyRead	$0030	ファイルを開く。その間他のアプリケーションが読み出しのためそのファイルを開くことはできない

fmShareDenyNone	$0040	ファイルを開く。その間他のアプリケーションが独占して使う目的でそのファイルを開くことはできない

fmCreate	$FFFF	ファイルを新規作成する。同じ名前の既存ファイルがある場合，新しいファイルで更新する

ファイルモード定数は or 演算子を使って結合できます。


例
例15004

関連付けられたファイルが読み出し専用に設定されており，他のアプリケーションもそのファイルを読み出せる場合，ファイルストリームを開くには，ファイルモード定数を次のように結合します。

FileStream := TFileStream.Create('EXAMPLE.STM', fmOpenRead or fmShareDenyWrite);


参照
参照15005

Create メソッド


FindClass 関数
FindClass 関数15006

参照

ユニット

Classes

宣言

function FindClass(const ClassName: string): TPersistentClass;

説明

FindClass 関数は登録済みのオブジェクト型リストを検索し，ClassName に一致する名前またはエリアスを持つ登録済みの型へのオブジェクト型参照を返します。ClassName に一致する登録済みの型がない場合，FindClass は EClassNotFound 例外を生成します。

GetClass 関数も同じように検索しますが，指定した名前に一致する登録済みの型がない場合 nil を返します。


参照
参照15007

GetClass 関数

RegisterClasses 手続き


FindMethod メソッド
FindMethod メソッド15008

参照

適用

TReader

宣言

function FindMethod(Root: TComponent; const MethodName: string): Pointer; virtual;

説明

FindMethod メソッドは Root で指定したコンポーネント内にあり MethodName で指定した名前を持つメソッドへのポインタを返し，OnFindMethod イベントにアタッチされたイベントハンドラがあればそれを呼び出します。FindMethod が指定のメソッドを見つけられず OnFindMethod ハンドラがエラーフラグをクリアしない場合，FindMethod は EReadError 例外を生成します。

リーダーオブジェクトはメソッドポインタ (通常の場合イベント) であるプロパティを読み出すときに FindMethod を呼び出します。リーダーオブジェクトは割り当てられたメソッド (イベントハンドラ) の名前を読み出した後，FindMethod を呼び出してルートオブジェクト (フォーム) 内のメソッドのアドレスを取り出します。

リーダーオブジェクトから読み出したメソッドポインタの処理方法をカスタマイズするには作成したハンドラを OnFindMethod イベントにアタッチします。


参照
参照15009

OnFindMethod イベント


FixupReferences メソッド
FixupReferences メソッド15010

参照	例

適用

TReader

宣言

procedure FixupReferences;

説明

FixupReferences メソッドは，すべてのオブジェクトが読み出された後にリーダーオブジェクトのストリームから読み出される，さまざまな相互依存コンポーネント間の参照を解決します。FixupReferences メソッドは，必ず try..finally ブロック内の BeginReferences と EndReferences の呼び出しの間で使います。


参照
参照15011

BeginReferences メソッド

EndReferences メソッド


FlushBuffer メソッド
FlushBuffer メソッド15012

参照

適用

TFiler，TReader，TWriter

宣言

procedure FlushBuffer; virtual; abstract;

説明

FlushBuffer メソッドは，関連付けられたストリームとファイラオブジェクトのバッファとを，リーダーオブジェクトについてはバッファを再読み出しすることで同期させ，ライターオブジェクトについては現在のバッファを書き込むことで同期させます。

TFiler は，抽象メソッドとして FlushBuffer を宣言します。TReader と TWriter は，現実的な実装のために FlushBuffer をオーバーライドします。


参照
参照15013

Create メソッド


FreeNotification メソッド
FreeNotification メソッド15014

参照

適用

TComponent (すべてのコンポーネント)

宣言

procedure FreeNotification(AComponent: TComponent);

説明

FreeNotification メソッドは，コンポーネントの破棄が AComponent に通知されることを保証します。破棄されるコンポーネントと同一のフォーム内のコンポーネントについては Notification メソッドが自動的に呼び出されますが，破棄されるコンポーネントへの参照があるほかのフォーム内のコンポーネントの場合は FreeNotification を呼び出さなければなりません。


参照
参照15015

Notification メソッド


GetChildOwner メソッド
GetChildOwner メソッド15016

参照

適用

TComponent (すべてのコンポーネント)

宣言

function GetChildOwner: TComponent; dynamic;

説明

GetChildOwner メソッドは，ストリームから読み出している子コンポーネントのオーナーを返します。GetChildOwner が nil を返す場合は，現在読み出している (通常はフォームである) ルートコンポーネントがオーナーであると想定されます。


参照
参照15017

Owner プロパティ


GetChildParent メソッド
GetChildParent メソッド15018

参照

適用

TComponent (すべてのコンポーネント)

宣言

function GetChildParent: TComponent; dynamic;

説明

GetChildParent メソッドは，ストリームから読み出している子コンポーネントの親を返します。GetChildParent が nil を返す場合は，現在読み出している (通常はフォームである) ルートコンポーネントが親であると想定されます。


参照
参照15019

Parent プロパティ


GetChildren メソッド
GetChildren メソッド15020

参照	例

適用

TComponent

宣言

procedure GetChildren(Proc: TGetChildProc); dynamic;

説明

GetChildren メソッドは，コンポーネントの「子」コンポーネント (「子」コンポーネントの GetParentComponent メソッドの値は自分を指します) を返します。

TComponent の GetChildren は子を返しません。TWinControl は GetChildren の定義をオーバーライドし，自分を親とするすべてのコントロールを返します。たとえば，パネルコンポーネントは，そのコンポーネント内のすべてのコントロールを返し，メニュー項目は，そのメニューのすべての下位項目を返します。

子項目に対して，作成順，つまりフォームファイルに保存されている順番で Proc に渡されたメソッドが呼び出されます。

メモ:	GetChildren は，Delphi 1.0 の WriteComponents メソッドに置き換わるメソッドです。GetChildren は，フォームの継承をサポートしています。


例
例15021

TWinControl の GetChildren メソッドを次に示します。コントロールのリストを反復処理して，各コントロールを Proc ルーチンに渡していることに注意してください。

procedure TWinControl.GetChildren(Proc: TGetChildProc);

var

  I: Integer;

  Control: TControl;

  Form: TForm;

begin

  Form := GetParentForm(Self);	{ どのフォーム内にいるかを見つける }

  for I := 0 to ControlCount - 1 do	{ 子コントロールを反復処理する }

  begin

    Control := Controls[I];	{ 各コントロールを取得し...}

    if Control.Owner = Form then	{ ...それがこのフォーム内にあれば... }

      Proc(Control);	{ ...Proc に渡す }

  end;

end;


参照
参照15022

GetParent プロパティ


GetClass 関数
GetClass 関数15023

参照

ユニット

Classes

宣言

function GetClass(const ClassName: string): TPersistentClass;

説明

GetClass 関数は登録済みのオブジェクト型のリストを検索し，ClassName に一致する名前またはエリアスを持つ登録済みの型へのオブジェクト型参照を返します。ClassName に一致する登録済みの型がない場合，GetClass は nil を返します。

FindClass 関数も同じように検索しますが，指定した名前に一致する登録済みの型がないと例外を生成します。


参照
参照15024

FindClass 関数

RegisterClasses 手続き


GetFixupRoots 手続き
GetFixupRoots 手続き15025

Unit

Classes

Declaration

procedure GetFixupRoots(Names: TStrings; Root: TComponent);

Description

The GetFixupRoots procedure fills the Names string list with the names of any root components (that is, in general, forms) that still need to be loaded to resolve pointers in the already-loaded component, Root. Such pointers are a result of form linking.

If Root is nil, GetFixupRoots fills Names with the names of all pending root components.


GetParentComponent メソッド
GetParentComponent メソッド15026

参照

適用

TComponent

宣言

function GetParentComponent: TComponent; dynamic;

説明

GetParentComponent メソッドは，コンポーネントの親を返します。コントロールとメニュー項目は，それらの Parent プロパティの値を返します。項目コンポーネントは，関連付けられたデータセットを返します。実際の「親」がないコンポーネントは，nil を返します。


参照
参照15027

Parent プロパティ


Grow メソッド
Grow メソッド15028

参照	例

適用

TList，TStringList

宣言

procedure Grow; virtual;

説明

Grow メソッドは，リストオブジェクトの容量を拡大します。デフォルトでは，次の表に示すように，リストの現在のサイズに応じて異なる量ずつ容量が拡大されます。

現在の容量	増分

0..4	4

5..8	8

9 以上	16

項目の追加または挿入によってリストの現在の容量がいっぱいになると，リストオブジェクトが Grow を呼び出します。Grow をオーバーライドすることで，容量の増分サイズを変えたり，リストのサイズを制限できます。


例
例15029

次のコードは，常に 42 項目ずつリストの容量を拡大するように Grow メソッドをオーバーライドしています。

procedure TMyList.Grow;

begin

  Capacity := Capacity + 42;

end;


参照
参照15030

Capacity プロパティ


Handle プロパティ
Handle プロパティ15031

参照

適用

THandleStream

宣言

property Handle: Integer;

説明

Handle プロパティを使うと，ハンドルストリームの Create コンストラクタで指定するファイルハンドルに読み出し専用のアクセスができます。このハンドルはファイルハンドラを使うファイル管理ルーチンに渡せます。


参照
参照15032

Create メソッド


HasParent メソッド
HasParent メソッド15033

参照

適用

TComponent, TControl, TMenuItem

宣言

function HasParent: Boolean; dynamic;

説明

HasParent 関数はオブジェクトの書き込みに責任を負う親が存在するかどうか示します。デフォルトの場合，TComponent の HasParent メソッドは False を返します。TControl と TMenuItem はどちらも HasParent をオーバーライドして必ず True を返します。

True はストリームへのオブジェクトの書き込みは別のオブジェクトがその WriteComponents メソッドで実行することを示します。ほとんどの場合，別のオブジェクトとはコントロールを持つフォームまたはパネルコンポーネントです。

メモ:	HasParent から True を返す子は，GetParentComponent メソッドと SetParentComponent メソッドも実装しなければなりません。

HasParent をオーバーライドする必要はほとんどありません。


参照
参照15034

Parent プロパティ

GetParentComponent メソッド

SetParentComponent メソッド


IgnoreChildren プロパティ
IgnoreChildren プロパティ15035

参照

適用

TFiler

宣言

property IgnoreChildren: Boolean;

説明

IgnoreChildren プロパティにより，ライターオブジェクトはコンポーネントが所有している子のコンポーネントを保存しないで親コンポーネントだけを保存できます。IgnoreChildren が True の場合，ライターオブジェクトは，コンポーネントを書き込み，そのコンポーネントが所有している子コンポーネントの方は書き込みません。それ以外の場合，ライターオブジェクトは，所有しているすべてのオブジェクトをストリームに書き込みます。


参照
参照15036

WriteComponent メソッド


InitComponentRes 関数
InitComponentRes 関数15037

参照

ユニット

Classes

宣言

function InitComponentRes(const ResName: string; Instance: TComponent): Boolean;

説明

InitComponentRes 関数は，以下の 2 点を除いて ReadComponentRes 関数と同じです。

Instance は nil 以外でなければならない

ResName が見つからない場合，False を返し，例外を生成しない


参照
参照15038

ReadComponentRes 関数


LineStart 関数
LineStart 関数15039

ユニット

Classes

宣言

function LineStart(Buffer, BufPos: PChar): PChar;

説明

LineStart 関数は Buffer で指定したテキストバッファの次のテキスト行の最初の文字へのポインタを返します。BufPos パラメータは検索の現在位置または開始位置を示します。LineStart は BufPos が示す文字でバッファの検索を開始し，改行 (#10) の次の文字へのポインタを返します。

LineStart は (Memo コンポーネントが使うような) 大きなテキストバッファで複数行を検索するのに使うユーティリティ関数です。


Loaded メソッド
Loaded メソッド15040

参照	例

適用

TComponent

宣言

procedure Loaded; virtual;

説明

Loaded メソッドはストリームからコンポーネントのすべての部分をロードした後でコンポーネントそのものを初期化するのに使います。たとえば Delphi アプリケーションがフォームファイルからフォームをロードする場合，最初にフォームコンポーネントの Create コンストラクタを呼び出してフォームを作成してから，フォームファイルつまりストリームからプロパティ値を読み出します。すべてのコンポーネントのすべてのプロパティ値を読み出した後，Delphi はコンポーネントを作成した順に各コンポーネントの Loaded メソッドを呼び出します。Loaded メソッドでは他のコンポーネントまたは自コンポーネントの他の部分の値に従って初期化する内容を変えられます。


例
例15041

関連付けられたメディアファイルの AutoOpen プロパティが True ならば，Media Player コンポーネントは Loaded をオーバーライドしてそのファイルを自動的に開きます。Create コンストラクタではなく Loaded メソッドでファイルを開くと，メディアプレーヤを開く前にそのすべてのプロパティを正しく確実に初期化できます。

procedure TMediaPlayer.Loaded;

begin

  inherited Loaded;	{ 継承した Loaded を必ず先に呼び出してください }

  if (not (csDesigning in ComponentState)) and FAutoOpen then
    Open;

end;


参照
参照15042

Create メソッド


LoadFromFile メソッド
LoadFromFile メソッド15043

参照

適用

TMemoryStream

宣言

procedure LoadFromFile(const FileName: string);

説明

LoadFromFile メソッドは FileName で指定するファイルの全内容をメモリストリームに読み出し，既存の内容を更新します。読み出したメモリストリームはファイルのメモリ内コピーになります。


参照
参照15044

LoadFromStream メソッド

SaveToFile メソッド


LoadFromStream メソッド
LoadFromStream メソッド15045

参照

適用

TMemoryStream

宣言

procedure LoadFromStream(Stream: TStream);

説明

LoadFromStream メソッドは Stream で指定するストリームの全内容をメモリストリームに読み出し，既存の内容を更新します。メモリストリームはソースストリームのコピーになります。


参照
参照15046

SaveToStream メソッド

LoadFromFile メソッド


MaxListSize 定数
MaxListSize 定数15047

参照

ユニット

Classes

宣言

const
  MaxListSize = MaxInt div 16;

説明

MaxListSize 定数はリストオブジェクトに入る項目の最大数を表します。


参照
参照15048

Count プロパティ


Memory プロパティ
Memory プロパティ15049

参照

適用

TCustomMemoryStream

宣言

property Memory: Pointer;

説明

Memory プロパティはメモリストリームに割り当てたメモリプールに直接アクセスできるようにします。

メモ:	Memory は読み出し専用プロパティなので注意してください。割り当て済みのメモリを変更しなければならない場合，メモリの割り当て後に SetPointer メソッドを呼び出して再割り当てしたメモリを Memory プロパティに設定しなければなりません。


参照
参照15050

Clear メソッド

SetPointer メソッド


NextValue メソッド
NextValue メソッド15051

参照

適用

TReader

宣言

function NextValue: TValueType;

説明

NextValue メソッドは，リーダーオブジェクトのストリーム内の次の項目の型を返します。値型インジケータの前であってもストリーム位置を使って返します。


参照
参照15052

ReadValue メソッド


Notification メソッド
Notification メソッド15053

参照	例

適用

TComponent

宣言

procedure Notification(AComponent: TComponent; Operation: TOperation); virtual;

説明

Notification メソッドは AComponent で指定するコンポーネントにそのコンポーネントを Operation で指定するとおりに挿入または削除することを通知します。デフォルトの場合，コンポーネントに所有コンポーネントがあればその所有コンポーネントにも通知します。

コンポーネントはコンポーネントの挿入か削除のどちらの通知かに基づいて動作を変えられます。特にコンポーネントに他のコンポーネントへの参照を含むオブジェクトフィールドまたはプロパティがある場合，コンポーネントを削除する通知かどうか確認し，削除であれば必要に応じて参照を無効にできます。


例
例15054

Batch Move コンポーネントは Notification をオーバーライドします。Operation が opRemove の場合，バッチ移動コンポーネントは AComponent をその Source プロパティと Destination プロパティと比較します。どちらかが削除するコンポーネントであると，バッチ移動コンポーネントは対応するプロパティを nil に設定します。


参照
参照15055

InsertComponent メソッド

RemoveComponent メソッド

TOperation 型


ObjectBinaryToText 手続き
ObjectBinaryToText 手続き15056

参照

ユニット

Classes

宣言

procedure ObjectBinaryToText(Input, Output: TStream);

説明

ObjectBinaryToText 手続きはバイナリストリームに格納され Input で指定するコンポーネント (WriteRootComponent メソッドで作成されたコンポーネントなど) をテキスト形式に変換して Output で指定するストリームに出力します。通常のテキストファイルを編集するように，テキストバージョンはテキストエディタを使ってグローバルに検索置換などの処理ができます。ObjectTextToBinary を呼び出せばテキストファイルをバイナリ形式に再変換できます。


参照
参照15057

ObjectTextToBinary 手続き


ObjectResourceToText 手続き
ObjectResourceToText 手続き15058

参照

ユニット

Classes

宣言

procedure ObjectResourceToText(Input, Output: TStream);

説明

ObjectResourceToText 手続きは Windows リソースファイル形式 (Delphi フォームファイルなど) で格納され Input で指定するコンポーネントをテキスト形式に変換して Output で指定するストリームに出力します。通常のテキストファイルを編集するように，テキストバージョンはテキストエディタを使ってグローバルに検索置換などの処理ができます。ObjectTextToResource を呼び出せばテキストファイルをバイナリ形式に再変換できます。

ObjectResourceToText は ReadResHeader メソッドを呼び出して Input からリソースファイルヘッダーを読み出し，次に ObjectBinaryToText を呼び出してリソースファイルに含まれているバイナリデータを変換します。


参照
参照15059

ObjectTextToResource 手続き


ObjectTextToBinary 手続き
ObjectTextToBinary 手続き15060

参照

ユニット

Classes

宣言

procedure ObjectTextToBinary(Input, Output: TStream);

説明

ObjectTextToBinary 手続きは Input で指定されたテキスト形式で保存されているコンポーネントをバイナリ形式 (WriteRootComponent メソッドで書き込んだものと同じ) に変換して Output で指定するストリームに出力します。

ObjectTextToBinary は ObjectBinaryToText 手続きが生成したテキストファイルを再変換するのにたいへん便利なだけでなく，別のアプリケーションが作成するテキストもバイナリファイルに変換できます。


参照
参照15061

ObjectBinaryToText 手続き

ObjectTextToResource 手続き


ObjectTextToResource 手続き
ObjectTextToResource 手続き15062

参照

ユニット

Classes

宣言

procedure ObjectTextToResource(Input, Output: TStream);

説明

ObjectTextToResource 手続きは Input で指定するテキスト形式のストアドコンポーネント (Delphi コードエディタからテキストとして保存したフォームファイルなど) を Windows バイナリリソースファイル形式に変換して Output で指定するストリームに出力します。

ObjectTextToResource はフォームファイルの変換したテキストバージョンからフォームファイルを作成するのにたいへん便利なだけでなく，別のアプリケーションまたは ObjectResourceToText 手続きが作成した互換テキストファイルも変換できます。

ObjectTextToResource は ObjectTextToBinary 手続きを呼び出してテキストファイルをバイナリ形式に変換してから，リソースファイルヘッダーを作成し，バイナリデータをリソースファイルに格納します。


参照
参照15063

ObjectResourceToText 手続き

ObjectTextToBinary 手続き


OnError イベント
OnError イベント15064

参照

適用

TReader

宣言

property OnError: TReaderError;

説明

OnError イベントはリーダーオブジェクトがデータの読み出しエラー (非宣言プロパティの名前または不正な値の読み出しなど) を検出すると発生します。OnError イベントを使うと，エラーを処理することも無視することもできます。

OnError イベントハンドラに渡す最後のパラメータは Handled という var パラメータです。デフォルトの場合，Error メソッドは Handled を False にしますが，エラーを修正するかエラーを無視するハンドラは Handled に True を設定し，エラーをそれ以降処理しないようにします。イベントハンドラから制御が戻ったときに Handled が False に設定されていると，リーダーオブジェクトは EReadError 例外を生成します。


参照
参照15065

リーダーオブジェクトのError メソッド


OnFindMethod イベント
OnFindMethod イベント15066

参照

適用

TReader

宣言

property OnFindMethod: TFindMethodEvent;

説明

OnFindMethod イベントはリーダーオブジェクトがオブジェクトのメソッドポインタプロパティを呼び出すたびに発生します。メソッドポインタプロパティは非常によく呼ばれます。

OnFindMethod イベントはほとんどの場合，失敗したメソッドを処理する方法をユーザーに尋ねるのに使います。FindMethod メソッドはメソッドポインタに割り当てたメソッドを探せないと，OnFindMethod ハンドラの Error パラメータを True に設定します。Error は var パラメータなので，ハンドラは Error を False に設定できます。False に設定すると，ハンドラが制御を返したとき FindMethod は例外を生成しません。


参照
参照15067

FindMethod メソッド


OnSetName イベント
OnSetName イベント15068

参照	例

適用

TReader

宣言

property OnSetName: TSetNameEvent;

説明

OnSetName イベントはリーダーオブジェクトがストリームから読み出すコンポーネントの Name プロパティを設定する直前に発生します。OnSetName イベントハンドラの Name パラメータは var パラメータなので，リーダーオブジェクトが Name パラメータをコンポーネントに割り当てる前にハンドラは名前を変更できます。フォーム内のすべてのコンポーネント名にフィルタをかけて文字列に追加したり一部を変更したりする場合に便利です。


例
例15069

OnSetName イベント用の次のハンドラは名前に Button を含んでいるすべてのコンポーネントの名前を変更して PushButton を含むようにします。

procedure TForm1.ReaderSetName(Reader: TReader; Component: TComponent;
  var Name: string);

var
  ButtonPos: Integer;

begin

  ButtonPos := Pos('Button', Name);

  if ButtonPos <> 0 then

    Name := Copy(Name, 1, ButtonPos - 1) + 'PushButton' +
      Copy(Name, ButtonPos + 6, Length(Name));

end;


参照
参照15070

リーダーオブジェクトの SetName メソッド


Owner プロパティ
Owner プロパティ15071

参照

適用

TReader

宣言

property Owner: TComponent;

説明

リーダーオブジェクトの Owner プロパティはリーダーオブジェクトのストリームから読み出したすべてのコンポーネントの Owner プロパティとして割り当てるコンポーネントを格納します。


参照
参照15072

コンポーネントの Owner プロパティ

Parent プロパティ


Parent プロパティ
Parent プロパティ15073

参照

適用

TReader

宣言

property Parent: TComponent;

説明

リーダーオブジェクトの Parent プロパティはリーダーオブジェクトのストリームから読み出したすべてのコントロールの Parent プロパティとして割り当てるコンポーネントを格納します。


参照
参照15074

コントロールの Parent プロパティ

Owner プロパティ


Position プロパティ
Position プロパティ15075

適用

TStream，TReader，TWriter

説明

Delphi のストリーミングおよびファイリングシステムには，関連する Position プロパティが 2 つあります。1 つはストリームの現在位置で，もう 1 つは，リーダーオブジェクトまたはライターオブジェクトのバッファ内での，現在の読み出し位置または書き込み位置です。

ストリームオブジェクトの Position プロパティ

リーダーオブジェクトとライターオブジェクトの Position プロパティ


Position プロパティ
Position プロパティ15076

参照

ユニット

Classes

適用

TStream

宣言

property Position: Longint;

説明

Position プロパティは読み書き用ストリームのカレントオフセットを示します。


参照
参照15077

Seek メソッド

Size プロパティ


Position プロパティ
Position プロパティ15078

参照

適用

TReader，TWriter

宣言

property Position: Longint;

説明

ファイラオブジェクトの Position プロパティは，関連付けられたストリーム内での現在の読み出し位置または書き込み位置を表します。一般に Position の値は，もっとも新しく読み込まれたバッファブロック内か書き込まれる次のブロック内にあります。したがって，通常 Position は，ライターオブジェクトの場合はストリームの Position 未満であり，リーダーオブジェクトの場合はストリームの Position より大きくなります。

Position を現在のバッファの外側の位置に設定すると，FlushBuffer が呼び出されます。


参照
参照15079

ストリームの Position プロパティ

FlushBuffer メソッド


Read メソッド
Read メソッド15080

参照

適用

TStream

宣言

function Read(var Buffer; Count: Longint): Longint; virtual; abstract;

説明

Read メソッドはストリームから Count で指定するバイト数を Buffer に読み出し，ストリームの現在位置を Count で指定するバイト数だけ進めてから，実際に読み出したバイト数を返します。戻り値が Count 値より少ない場合，指定したバイト数を読み出す前にストリームの最後まで読み出したことを意味しています。

TStream.Read は抽象メソッドです。下位ストリーム型はそれぞれ特定の記憶媒体 (メモリまたはディスクファイルなど) からデータを読み出す Read メソッドを定義します。それ以外のストリームデータ読み出しメソッド (ReadBuffer, ReadComponent) は実際に読み出すために Read を呼び出します。


参照
参照15081

ストリームオブジェクトのWrite メソッド


ReadBoolean メソッド
ReadBoolean メソッド15082

参照

適用

TReader

宣言

function ReadBoolean: Boolean;

説明

ReadBoolean メソッドはリーダーオブジェクトから論理値を読み出しその値を返します。


参照
参照15083

Read メソッド

WriteBoolean メソッド


ReadBuffer メソッド
ReadBuffer メソッド15084

参照

適用

TStream

宣言

procedure ReadBuffer(var Buffer; Count: Longint);

説明

ReadBuffer メソッドはストリームから Count で指定するバイト数を Buffer に読み出し，ストリームの現在位置を Count で指定するバイト数だけ進めます。ストリームの最後まで読み出してもまだ読み出そうとすると，ReadBuffer は EReadError 例外を生成します。


参照
参照15085

Read メソッド

WriteBuffer メソッド


ReadChar メソッド
ReadChar メソッド15086

参照

適用

TReader

宣言

function ReadChar: Char;

説明

ReadChar メソッドはリーダーオブジェクトのストリームから文字を読み出し，文字の値を返します。


参照
参照15087

Read メソッド

WriteChar メソッド


ReadComponent メソッド
ReadComponent メソッド15088

参照

適用

TStream

宣言

function ReadComponent(Instance: TComponent): TComponent;

説明

ReadComponent メソッドはストリームから Instance で指定するコンポーネントを読み出し，そのコンポーネントを返します。ReadComponent はリーダーオブジェクトを作成し，その ReadRootComponent メソッドを呼び出して Instance と Instance が所有するすべてのオブジェクトを読み出します。

Instance が nil ならば，ReadComponent はストリームの型情報に基づいてコンポーネントを作成し，新しく作成したコンポーネントを返します。


参照
参照15089

ReadRootComponent メソッド

ストリームオブジェクトの WriteComponent メソッド


ReadComponentRes メソッド
ReadComponentRes メソッド15090

参照

適用

TStream

宣言

function ReadComponentRes(Instance: TComponent): TComponent;

説明

ReadComponentRes メソッドはストリームから Instance で指定するコンポーネントを読み出します。ストリームの現在位置は WriteComponentRes メソッドを使って作成したコンポーネントを指していなくてはなりません。

ReadComponentRes は最初に ReadResHeader を呼び出してストリームのリソースヘッダーを読み出してから，ReadComponent を呼び出して Instance を読み出します。ストリームの現在位置にリソースヘッダーがないと，ReadResHeader は EInvalidImage 例外を生成します。

メモ:	Classes ユニットには ReadComponentRes という関数もあり，ほぼ同じ処理をしますが，アプリケーションのリソースに基づいて独自のストリームを作成します。


参照
参照15091

WriteComponentRes メソッド

ReadResHeader メソッド

ReadComponent メソッド

ReadComponentRes 関数


ReadComponentRes 関数
ReadComponentRes 関数15092

参照

ユニット

Classes

宣言

function ReadComponentRes(const ResName: string; Instance: TComponent): TComponent;

説明

ReadComponentRes 関数は AccessResource API 関数を呼び出して ResName で指定するリソースを探し，その結果見つけたハンドルを使ってハンドルストリームオブジェクトを開きます。ReadComponentRes は次にストリームの ReadComponent メソッドを呼び出してリソースの Instance を読み出し，ReadComponent が返す値を返します。

ReadComponentRes はストリームオブジェクトを手動で作成したり破棄せずにリソースになっているコンポーネントを読み出せるので便利です。


参照
参照15093

ReadComponent メソッド

ReadComponentResFile 関数

ReadComponentRes メソッド

InitComponentRes 関数


ReadComponentResFile 関数
ReadComponentResFile 関数15094

参照

ユニット

Classes

宣言

function ReadComponentResFile(const FileName: string; Instance: TComponent): TComponent;

説明

ReadComponentResFile 関数は FileName で指定するファイルからコンポーネントを読み出し，読み出したコンポーネントがあればそれを返します。Delphi は ReadComponentResFile を使ってフォームファイルからフォームとそのコンポーネントを読み出します。Delphi フォームファイルを読み出し，コンポーネントを変更して，その結果をフォームファイルに書き込むユーティリティを作成できます。

ReadComponentResFile は FileName に関連付けられたファイルストリームオブジェクトを作成し，ストリームの ReadComponentRes メソッドを呼び出して Instance をロードします。


参照
参照15095

WriteComponentResFile 手続き

ReadComponentRes メソッド


ReadComponents メソッド
ReadComponents メソッド15096

参照

適用

TReader

宣言

procedure ReadComponents(AOwner, AParent: TComponent; Proc: TReadComponentsProc);

説明

ReadComponents メソッドはリーダーオブジェクトの関連ストリームからコンポーネントリストを読み出します。

ReadComponents は最初にリーダーオブジェクトのプロパティ Root と Owner を AOwner パラメータで指定するコンポーネントに設定してから，その Parent プロパティを AParent に設定します。次に ReadComponent メソッドを呼び出してコンポーネントを読み出し，返される各コンポーネントを Proc で指定するメソッドに渡します。

すべてのコンポーネントをリストにロードした後，ReadComponents はロードした各コンポーネントの Loaded メソッドを読み出した順に呼び出します。


参照
参照15097

ReadComponent メソッド

WriteComponents メソッド


ReadFloat メソッド
ReadFloat メソッド15098

参照

適用

TReader

宣言

function ReadFloat: Extended;

説明

ReadFloat メソッドはリーダーオブジェクトのストリームから浮動小数点数を読み出し，その値を返します。


参照
参照15099

Read メソッド

WriteFloat メソッド


ReadIdent メソッド
ReadIdent メソッド15100

参照

適用

TReader

宣言

function ReadIdent: string;

説明

ReadIdent メソッドはリーダーオブジェクトのストリームから識別子を読み出し，その識別子を返します。


参照
参照15101

Read メソッド

WriteIdent メソッド


ReadInteger メソッド
ReadInteger メソッド15102

参照

適用

TReader

宣言

function ReadInteger: Longint;

説明

ReadInteger メソッドはリーダーオブジェクトのストリームから整数型数を読み出し，その値を返します。


参照
参照15103

Read メソッド

WriteInteger メソッド


ReadListBegin メソッド
ReadListBegin メソッド15104

参照	例

適用

TReader

宣言

procedure ReadListBegin;

説明

ReadListBegin メソッドはリーダーオブジェクトの関連ストリームからリストの開始マーカーを読み出します。ストリームの次の項目が WriteListBegin メソッドが作成した開始マーカーでないと，ReadListBegin は EReadError 例外を生成します。

ReadListBegin を呼び出した後は通常の場合読み出しループを実行します。このループでは EndOfList メソッドが True を返すと終了し，ストリームには次にリストの終了を表すマーカーがあり，そこで ReadListEnd を呼び出さなくてはならないことを示します。


例
例15105

TStrings オブジェクトはリーダーオブジェクトから文字列リストを読み出すときに ReadListBegin と ReadListEnd を使います。次の ReadData メソッドは TStrings がその DefineProperties メソッドで文字列データを読み出すために登録するメソッドです。

procedure TStrings.ReadData(Reader: TReader);

begin

  Reader.ReadListBegin;	{ リストの開始マーカーを読み出します }

  Clear;	{ 既存のすべての文字列をクリアします }

  while not Reader.EndOfList do	{ データがある限り... }
    Add(Reader.ReadString);	{ ...文字列を読み出しそれをリストに追加します }

  Reader.ReadListEnd;	{ リストの終了マーカーを確認します }

end;


参照
参照15106

Read メソッド

ReadListEnd メソッド

WriteListBegin メソッド


ReadListEnd メソッド
ReadListEnd メソッド15107

参照	例

適用

TReader

宣言

procedure ReadListEnd;

説明

ReadListEnd メソッドはリーダーオブジェクトの関連ストリームからリストの終了マーカーを読み出します。読み出した項目が終了マーカーでないと，ReadListEnd は EReadError 例外を生成します。ReadListEnd を呼び出すには，先に ReadListBegin を呼び出していなくてはなりません。


参照
参照15108

Read メソッド

EndOfList メソッド

ReadListBegin メソッド

WriteListEnd メソッド


ReadPrefix メソッド
ReadPrefix メソッド15109

参照

適用

TReader

宣言

procedure ReadPrefix(var Flags: TFilerFlags; var AChildPos: Integer);

説明

ReadPrefix メソッドは，リーダーオブジェクトのストリームからコンポーネントのプレフィクスを読み出します。ライターオブジェクトはそのストリームにコンポーネントを書き込む場合，コンポーネント自体の前に 2 つの値を付けます。1 番目は，コンポーネントが上位フォームから継承されているかどうかと，フォーム内での位置が重要かどうかを表すフラグです。2 番目は，上位フォームの作成順での位置を表します。

ReadComponent メソッドは ReadPrefix を自動的に呼び出しますが，コンポーネントのプレフィクスを個別に読み出さなければならない場合は，ReadPrefix を直接呼び出すこともできます。


参照
参照15110

ReadComponent メソッド


ReadResHeader メソッド
ReadResHeader メソッド15111

参照

適用

TStream

宣言

procedure ReadResHeader;

説明

ReadResHeader メソッドはストリームから Windows リソースファイルヘッダーを読み出しストリームの現在位置をそのヘッダーより 1 つ先に移動します。ストリームに有効なリソースファイルヘッダーがないと，ReadResHeader は EInvalidImage 例外を生成します。

ReadComponentRes メソッドはリソースファイルからコンポーネントを読み出す前に自動的に ReadResHeader を呼び出します。通常の場合ユーザーが呼び出す必要はありません。


参照
参照15112

ReadComponentRes メソッド


ReadRootComponent メソッド
ReadRootComponent メソッド15113

参照

適用

TReader

宣言

function ReadRootComponent(Root: TComponent): TComponent;

説明

ReadRootComponent メソッドはリーダーオブジェクトのストリームからコンポーネントとそのすべての所有コンポーネントを読み出します。ReadRootComponent は最初に ReadSignature メソッドを呼び出して適切なコンポーネントを読み出すようにしてから，コンポーネントのプロパティと所有オブジェクトを読み出します。Root で指定するコンポーネントがリーダーオブジェクトの Root プロパティの値になります。この値は読み出した各所有オブジェクトのオーナーとなります。


参照
参照15114

Root プロパティ

ReadComponents メソッド

WriteRootComponent メソッド


ReadSignature メソッド
ReadSignature メソッド15115

参照

適用

TReader

宣言

procedure ReadSignature;

説明

ReadSignature メソッドはリーダーオブジェクトの関連ストリームから Delphi ファイラ ID を読み出します。ReadRootComponent メソッドはストリームからコンポーネントを呼び出す前に ReadSignature を呼び出します。オブジェクトをロードする前に署名を確認すると，リーダーオブジェクトで無効なまたは崩壊したデータを読み出さないように保護できます。

ファイラ署名は 4 文字です。このバージョンの Delphi では，TPF0 です。


参照
参照15116

ReadRootComponent メソッド

WriteSignature メソッド


ReadState メソッド
ReadState メソッド15117

参照

適用

TComponent, TControl, TWinControl

宣言

procedure ReadState(Reader: TReader); virtual;

説明

ReadState メソッドは Reader で指定するリーダーオブジェクトからコンポーネントのパブリッシュプロパティ，ストアドデータ，所有コンポーネントの値を読み出します。


参照
参照15118

WriteState メソッド


ReadStr メソッド
ReadStr メソッド15119

参照

適用

TReader

宣言

function ReadStr: string;

説明

ReadStr メソッドはリーダーオブジェクトのストリームから文字列を読み出し，その内容を返します。ReadStr は Delphi の一部の標準コンポーネントがその内部で使うものであり，ユーザーのコンポーネントから使ってはなりません。

注意:	ストリームでのコンポーネント文字列の読み出しと書き込みには必ず ReadString と WriteString を使います。同じような名前の ReadStr メソッドと WriteStr メソッドは特定の VCL コンポーネントがその内部で使うものなので，これを使うとデータが破損する可能性があります。


参照
参照15120

Read メソッド

ReadString メソッド

WriteStr メソッド


ReadString メソッド
ReadString メソッド15121

参照

適用

TReader

宣言

function ReadString: string;

説明

ReadString メソッドは WriteString が作成した文字列をリーダーオブジェクトのストリームから読み出し，その内容を返します。

注意:	ストリームでのコンポーネント文字列の読み出しと書き込みには必ず ReadString と WriteString を使います。同じような名前の ReadStr メソッドと WriteStr メソッドは特定の VCL コンポーネントがその内部で使うものなので，これを使うとデータが破損する可能性があります。


参照
参照15122

Read メソッド

WriteString メソッド


ReadValue メソッド
ReadValue メソッド15123

参照

適用

TReader

宣言

function ReadValue: TValueType;

説明

ReadValue メソッドは，リーダーオブジェクトのストリーム上の次の項目の型を返します。


参照
参照15124

NextValue メソッド


Realloc メソッド
Realloc メソッド15125

参照

適用

TMemoryStream

宣言

function Realloc(var NewCapacity: Longint): Pointer; virtual;

説明

Realloc メソッドは，指定した容量のメモリを 8K 単位で切り上げて再割り当てして，そのメモリへのポインタを返します。


参照
参照15126

Memory プロパティ

SetPointer メソッド


RegisterClass 手続き
RegisterClass 手続き15127

参照	例

ユニット

Classes

宣言

procedure RegisterClass(AClass: TPersistentClass);

説明

RegisterClass 手続きは AClass パラメータで指定するオブジェクト型を Delphi ストリーミングシステムを使って登録します。

オブジェクトをストリームに格納し読み出せるようにするには，オブジェクトの型を登録しなくてはなりません。RegisterClass ではなく RegisterClassAlias を呼び出せば，オブジェクト型は代替名つまりエリアスでも登録できます。


例
例15128

次の 2 つの手続き呼び出しはそれぞれオブジェクト型を登録します。

RegisterClass(TAnObject);

RegisterClass(TAnotherObject);


参照
参照15129

RegisterClassAlias 手続き

RegisterClasses 手続き

UnRegisterClass 手続き


RegisterClassAlias 手続き
RegisterClassAlias 手続き15130

参照	例

ユニット

Classes

宣言

procedure RegisterClassAlias(AClass: TPersistentClass; const Alias: string);

説明

RegisterClassAlias 手続きは AClass パラメータで指定するオブジェクト型を Delphi ストリーミングシステムを使って登録し，Alias で指定する名前を登録した型の代替名として追加します。

オブジェクトをストリームに格納しそれを読み出せるようにするには，オブジェクトの型を登録しなくてはなりません。


例
例15131

次の手続き呼び出しはオブジェクト型を登録し，その型の代替名も指定します。

RegisterClassAlias(TAnObject, 'TAnAliasForTAnObject');


参照
参照15132

RegisterClass 手続き

GetClass 関数

FindClass 関数


RegisterClasses 手続き
RegisterClasses 手続き15133

参照	例

ユニット

Classes

宣言

procedure RegisterClasses(AClasses: array of TPersistentClass);

説明

RegisterClasses 手続きは AClasses 配列パラメータで指定する各オブジェクト型をその配列内の要素ごとに RegisterClass 手続きを呼び出して，Delphi ストリーミングシステムを使って登録します。RegisterClasses を使うと複数のオブジェクト型を簡単に登録できます。

オブジェクトをストリームに格納しそれを読み出せるようにするには，オブジェクトの型を登録しなくてはなりません。


例
例15134

次の手続き呼び出しは 2 つのオブジェクト型を 1 回の呼び出しで登録します。

RegisterClasses([TAnObject, TAnotherObject]);


参照
参照15135

RegisterClass 手続き

RegisterClassAlias 手続き

UnRegisterClasses 手続き


RegisterComponents 手続き
RegisterComponents 手続き15136

参照	例

ユニット

Classes

宣言

procedure RegisterComponents(const Page: string; ComponentClasses: array of TComponentClass);

説明

RegisterComponents は Delphi コンポーネントライブラリを使ってコンポーネントを登録し，コンポーネントパレットに表示します。Page パラメータは ComponentClasses で指定するコンポーネント型を表示するコンポーネントパレットのページの名前を指定します。指定したページがコンポーネントパレットに存在しない場合，Delphi はそれを作成します。

RegisterComponents 呼び出しは必ずコンポーネントの宣言部と実現部を含んでいるユニット内の Register 手続きで使います。コンポーネントユニットをコンポーネントライブラリにインストールする場合，Delphi はそのユニットの Register 手続きを探します (見つからないとエラーを報告します)。RegisterComponents を使うと 1 回の呼び出しで 1 ページに 1 つまたは複数のコンポーネントを登録できます。


例
例15137

次のコードは 3 つの新しいコンポーネント型 TFirst, TSecond, TThird を宣言するユニットの一般的な Register 手続きです。

procedure Register;

begin

  RegisterComponents('Miscellaneous', [TFirst, TSecond]);	{ このページに 2 個登録します }

  RegisterComponents('Assorted', [TThird]);	{ 別のページに 1 個登録します }

end;


参照
参照15138

Delphi でのコンポーネントの登録


RegisterIntegerConsts 手続き
RegisterIntegerConsts 手続き15139

参照

ユニット

Classes

宣言

procedure RegisterIntegerConsts(IntegerType: Pointer; IdentToInt: TIdentToInt;
  IntToIdent: TIntToIdent);

説明

RegisterIntegerConsts 手続きはストリーミングシステムが使う等価な定数識別子と値を登録します。登録した型は数値ではなく識別子を格納できます。たとえばフォームは数値でなく clXXX 定数を使ってカラー値をフォームファイルに書き込めるので，フォームファイルを簡単に変更できます。

Delphi は 3 つの標準型の定数 (TColor, TCursor, TShortCut) を登録し，フォームファイルを使いやすくしています。これ以外の型を登録するとファイリング処理速度は遅くなるので，新しく登録する場合は慎重にしてください。

RegisterIntegerConstants は型の定数を登録するほか，パラメータとして 2 つの関数を持っており，識別子と整数の間の変換方法を指定します。たとえば TCursor は IdentToCursor と CursorToIdent の 2 つの関数を使います。


参照
参照15140

TIdentToInt 型

TIntToIdent 型


RegisterNoIcon 手続き
RegisterNoIcon 手続き15141

ユニット

Classes

宣言

procedure RegisterNoIcon(ComponentClasses: array of TComponentClass);

説明

RegisterNoIcon 手続きは ComponentClasses 配列パラメータで指定したコンポーネント型を，設計時にはアイコンが表示されない非ビジュアルコンポーネントリストに追加します。このようなコンポーネントを作成すると対応するフィールドもフォームの型宣言に追加されますが，個々のコンポーネントはフォーム上には表示されません。

他のコンポーネントに関連付けられ常に下位コンポーネントである場合，アイコンがない非ビジュアルコンポーネントとして定義すると便利です。Delphi はこのようなコンポーネントとしてメニュー項目コンポーネントとファイルコンポーネントを定義しています。メニュー項目コンポーネントは常にメインメニューかポップアップメニューのどちらかに関連付けられ，ファイルコンポーネントは常に Table コンポーネントに関連付けられています。


Root プロパティ
Root プロパティ15142

参照

適用

TFiler

宣言

property Root: TComponent;

説明

Root プロパティはファイラオブジェクトにファイラが読み出したまたは書き込んだオブジェクトのルートつまり最終オーナーはどのオブジェクトか示します。メソッド ReadRootComponent と WriteRootComponent はコンポーネントと所有コンポーネントを読み書きする前に Root を設定します。


参照
参照15143

ReadRootComponent メソッド

WriteRootComponent メソッド


RootAncestor プロパティ
RootAncestor プロパティ15144

参照

適用

TWriter

宣言

property RootAncestor: TComponent;

説明

RootAncestor プロパティは，Root プロパティの上位コンポーネントを表します。Root が継承フォームの場合，ライターオブジェクトは，フォームの所有するすべてのコンポーネントを上位フォーム内で対応するコンポーネントと比較し，上位コンポーネントと差異のあるものだけを書き込みます。Ancestor プロパティは各コンポーネントを上位フォーム (常に RootAncestor) に記録します。


参照
参照15145

Ancestor プロパティ

Root プロパティ


SaveToFile メソッド
SaveToFile メソッド15146

参照

適用

TCustomMemoryStream

宣言

procedure SaveToFile(const FileName: string);

説明

SaveToFile メソッドはメモリストリームの全内容を FileName で指定するファイルに書き込みます。指定したファイルがすでに存在する場合，SaveToFile は既存ファイルに上書きします。ファイルはメモリストリームの内容のバイナリコピーになります。


参照
参照15147

LoadFromFile メソッド

SaveToStream メソッド


SaveToStream メソッド
SaveToStream メソッド15148

参照

適用

TCustomMemoryStream

宣言

procedure SaveToStream(Stream: TStream);

説明

SaveToStream メソッドはメモリストリームの全内容を Stream で指定するストリームに書き込みます。


参照15149

LoadFromStream method

SaveToFile method


Seek メソッド
Seek メソッド15150

参照

適用

TStream

宣言

function Seek(Offset: Longint; Origin: Word): Longint; virtual; abstract;

説明

Seek メソッドはストリームの現在位置を Origin で指定する原点から Offset で指定するバイト数だけ移動します。Offset が負の数ならば，指定した原点から後方にシークします。次の表に Origin の値とその位置を示します。

定数	値	シークの原点

soFromBeginning	 0	ストリームの始め

soFromCurrent	 1	現在位置

soFromEnd	 2	ストリームの終わり


参照
参照15151

ストリームオブジェクトのPosition プロパティ


SetAncestor メソッド
SetAncestor メソッド15152

参照

適用

TComponent (すべてのコンポーネント)

宣言

procedure SetAncestor(Value: Boolean);

説明

SetAncestor メソッドは，コンポーネントの ComponentState プロパティおよびそのコンポーネントが所有するすべてのコンポーネントの csAncestor フラグを設定またはクリアします。


参照
参照15153

ComponentState プロパティ


SetChildOrder メソッド
SetChildOrder メソッド15154

参照

適用

TComponent (すべてのコンポーネント)

宣言

procedure SetChildOrder(Child: TComponent; Order: Integer); dynamic;

説明

SetChildOrder メソッドは，GetChildren で返される子コンポーネントが Child に現れる順序を変更します。子は，リストオブジェクト内の項目のように移動します。以前に子の古い位置で下にあった項目が上へ移動し，新しい位置で下になる項目が下へ移動します。


参照
参照15155

GetChildren メソッド


SetDesigning メソッド
SetDesigning メソッド15156

参照

適用

TComponent (すべてのコンポーネント)

宣言

procedure SetDesigning(Value: Boolean);

説明

SetDesigning メソッドは Value が True の場合 ComponentState プロパティに csDesigning オプションを設定します。False の場合は csDesigning を削除します。SetDesigning は次に所有コンポーネントの SetDesigning メソッドを呼び出して Value を渡し，所有コンポーネントの ComponentState プロパティがオーナーのプロパティと同期するようにします。

メソッド InsertComponent と RemoveComponent は挿入または削除するコンポーネントの SetDesigning を呼び出し，設計モードフラグが正しく設定されるようにします。


参照
参照15157

ComponentState プロパティ

InsertComponent メソッド

RemoveComponent メソッド


SetName メソッド
SetName メソッド15158

適用

TReader オブジェクト, TComponent (すべてのコンポーネント)

説明

SetName には 2 種類のメソッドがあります。1 つはリーダーオブジェクト用で，これを使えばストリームからコンポーネントを読み出すときにコンポーネント名を変更できます。もう 1 つはすべてのコンポーネントの Name プロパティのプロテクトメソッドです。

リーダーオブジェクトの SetName メソッド

すべてのコンポーネントの SetName メソッド


リーダーオブジェクトの SetName メソッド
SetName メソッド15159

参照

適用

TReader

宣言

procedure SetName(Component: TComponent; var Name: string); virtual;

説明

SetName メソッドはリーダーオブジェクトが，関連付けられたストリームから読み出すコンポーネントの名前をそのコンポーネントの Name プロパティを割り当てる前にコンポーネント名を変更できるようにします。ReadComponent メソッドはコンポーネントのプロパティ値や他のデータを読み出す前にコンポーネントの型と名前を読み出します。ReadComponent はコンポーネント名を読み出した後，そのストリームから読み出した名前を Name パラメータを使って SetName に渡します。Name は var パラメータなので，SetName は制御を返す前に文字列を変更できます。

SetName は OnSetName イベントにアタッチされたイベントハンドラも呼び出します。var パラメータで名前文字列を渡すので，アタッチしたハンドラから文字列を変更することもできます。


参照
参照15160

OnSetName イベント


コンポーネント, コントロール, フォームの SetName メソッド
SetName メソッド15161

参照

適用

TComponent (すべてのコンポーネント)

宣言

procedure SetName(const NewName: TComponentName); virtual;

説明

SetName メソッドは Name プロパティの値を設定するためのプロパティアクセスメソッドです。


参照
参照15162

Name プロパティ


SetParentComponent メソッド
SetParentComponent メソッド15163

参照

適用

TComponent (すべてのコンポーネント)

宣言

procedure SetParentComponent(Value: TComponent); dynamic;

説明

SetParentComponent メソッドは，GetParentComponent が返す値を変更して Value に一致させます。値はほとんどの場合 Parent プロパティですが，それ以外の場合もあります。


参照
参照15164

GetParentComponent メソッド

Parent プロパティ


SetPointer メソッド
SetPointer メソッド15165

参照

適用

TCustomMemoryStream

宣言

procedure SetPointer(Ptr: Pointer; Size: Longint);

説明

SetPointer メソッドは，Ptr に渡したポインタを Memory プロパティの内部記憶域に割り当て，ストリームの Size プロパティを Size に指定された値に設定します。

ストリームの記憶域用にメモリプールを割り当てた場合や再割り当てした場合，メモリストリーム内で SetPointer を呼び出してください。


参照
参照15166

Memory プロパティ

Size プロパティ


SetSize メソッド
SetSize メソッド15167

参照

適用

TMemoryStream

宣言

procedure SetSize(Size: Longint);

説明

SetSize メソッドはメモリストリームの内容をクリアし，メモリストリーム用のメモリプールのサイズを Size バイトに設定します。Size が 0 ならば，SetSize は既存のメモリプールを破棄して Memory プロパティを nil に設定します。0 以外の場合，SetSize はメモリプールのサイズを Size で指定するサイズに変更します。


参照
参照15168

Size プロパティ


Size プロパティ
Size プロパティ15169

参照

適用

TStream

宣言

property Size: Longint;

説明

Size プロパティはストリームのバイト数でサイズを表します。Size は読み出し専用のプロパティです。


参照
参照15170

ストリームオブジェクトのPosition プロパティ


TComponent コンポーネント
TComponent コンポーネント15171

参照	プロパティ	メソッド	コンポーネント

ユニット

Classes

説明

TComponent コンポーネントはすべてのコンポーネントの最も基本的で抽象的な開始点です。フォームデザイナで操作できる項目はどれも TComponent の下位コンポーネントです。すべてのコンポーネントは TComponent のいくつかの基本動作を継承します。

TComponent はその上位コンポーネント TPersistent から継承する以外に，すべてのコンポーネントに共通なプロパティとメソッドをいくつか宣言します。そのほとんどはパブリックかパブリッシュです。詳細はすべてのコンポーネントの VCL リファレンスを参照してください。

TComponent は下位コンポーネントがオーバーライドして動作をカスタマイズできるプロテクトメソッドもいくつか宣言します。プロテクトメソッドは次の 3 つのカテゴリに分かれています。

Name プロパティを管理するメソッド

SetName メソッドは Name プロパティの書き込み部として使う仮想メソッドである。実際に名前を変更する ChangeName メソッドを呼び出す

ストリーミングとファイリング用メソッド

メソッド ReadState と WriteState はそれぞれコンポーネントプロパティ値をファイラオブジェクトに読み出し，書き込む。HasParent メソッドはコンポーネントがそのファイリングを処理する親を持っているかどうか示す。Loaded メソッドはファイラオブジェクトからロード後に初期化する。TComponent は DefineProperties メソッドもオーバーライドして「偽の」Left プロパティと Right プロパティを定義する

所有コンポーネントの管理用メソッド

ValidateRename メソッドは所有コンポーネントの名前の変更によって名前が重複しないようにする。WriteComponents メソッドは所有コンポーネントをファイラオブジェクトに書き込む。Notification メソッドはすべての所有コンポーネントに通知メッセージを送る。SetDesigning メソッドは設計時に挿入したコンポーネントに設計モードフラグを設定する


プロパティ
プロパティ15172

ComponentCount	ComponentState	Name

ComponentIndex	ComponentStyle	Owner

Components	DesignInfo	Tag


メソッド
メソッド15173

ChangeName	GetChildParent	SetAncestor

Create	GetChildren	SetChildOrder

DefineProperties	GetParentComponent	SetDesigning

Destroy	HasParent	SetName

DestroyComponents	InsertComponent	SetParentComponent

Destroying	Loaded	Updated

FindComponent	Notification	Updating

FreeNotification	ReadState	ValidateRename

GetChildOwner	RemoveComponent	WriteState


参照
参照15174

TComponentClass 型


TComponentClass 型
TComponentClass 型15175

参照

ユニット

Classes

宣言

type
  TComponentClass = class of TComponent;

説明

TComponentClass 型はすべてのコンポーネントのクラスリファレンス型です。


参照
参照15176

TComponent コンポーネント


TComponentState 型
TComponentState 型15177

参照

ユニット

Classes

宣言

type
  TComponentState = set of (csLoading, csReading, csWriting, csDestroying, csDesigning,
 csAncestor, csUpdating, csFixups);

説明

TComponentState 型は ComponentState プロパティの状態フラグセットを定義します。次の表に各フラグが表す状態を示します。

フラグ	コンポーネントの状態

csAncestor	コンポーネントを上位フォームに導入した場合に設定される。csDesigning も設定されている場合だけ設定される

csDesigning	設計モード。フォーム内でフォームデザイナが処理中である

csDestroying	コンポーネントを廃棄しようとしている

csLoading	ファイラオブジェクトからロード中である

csReading	ストリームからプロパティ値を読み出し中である

csUpdating	上位フォームの変更を反映するためにコンポーネントが更新されている。csAncestor も設定されている場合だけ設定される

csWriting	プロパティ値をストリームに書き込み中である


参照
参照15178

ComponentState プロパティ


TComponentStyle 型
TComponentStyle 型15179

参照

ユニット

Classes

宣言

type
  TComponentStyle = set of (csInheritable, csCheckPropAvail);

説明

TComponentStyle 型は，ComponentStyle プロパティの一連の値を定義します。ComponentStyle によって，コンポーネント (およびそのコンポーネントを含むフォーム) が継承可能かどうかが決まり，読み出し可能性についてコンポーネントのプロパティをチェックしなければならないかどうかが決まります。


参照
参照15180

ComponentStyle プロパティ


TCustomMemoryStream オブジェクト
TCustomMemoryStream オブジェクト15181

参照	プロパティ	メソッド	オブジェクト

ユニット

Classes

説明

TCustomMemoryStream オブジェクトは，TMemoryStream や TResourceStream といった便利なメモリストリームの共通の上位オブジェクトとして使われる抽象基本クラスです。

TStream から継承する項目のほかに，ストリームの内部記憶域へのポインタを提供する Memory プロパティが定義されており，オーバーライドした Read メソッドと Seek メソッドでそのメモリ内のアクセスを実現しています。また，メモリをファイルとストリームに保存するメソッドが追加されています。


プロパティ
プロパティ15182

Memory


メソッド
メソッド15183

Read	SaveToStream	SetPointer

SaveToFile	Seek


参照
参照15184

TStream オブジェクト

TMemoryStream オブジェクト


TFiler オブジェクト
TFiler オブジェクト15185

参照	プロパティ	メソッド	オブジェクト

ユニット

Classes

説明

TFiler オブジェクトは Delphi がフォームやコンポーネントをフォームファイルに保存するために使うリーダーオブジェクトとライターオブジェクトの元となる抽象オブジェクトです。中でもファイラオブジェクトは読み書き処理速度を上げるためデータをバッファリングします。

どのファイラオブジェクトも関連付けられたストリームオブジェクトを持ち，パラメータとしてその Create メソッドに渡されます。読み出すかまたは書き込むルートオブジェクトを指定する Root プロパティも定義します。

ファイラにはプロパティを定義する 2 つのメソッド DefineProperty と DefineBinaryProperty もあります。このプロパティを使うとオブジェクトは非表示データまたは複雑なデータをオブジェクトの実際のプロパティであるかのように内部表現と異なる形式で格納できます。


プロパティ
プロパティ15186

Ancestor	IgnoreChildren	Root


メソッド
メソッド15187

Create	DefineProperty	FlushBuffer

DefineBinaryProperty	Destroy


参照
参照15188

TStream オブジェクト

TReader オブジェクト

TWriter オブジェクト


TFilerFlags 型
TFilerFlags 型15189

参照

ユニット

Classes

宣言

type
  TFilerFlag = (ffInherited, ffChildPos);
  TFilerFlags = set of TFilerFlag;

説明

ffInherited は，ファイラオブジェクトのストリーム内のコンポーネントが継承フォーム内のコンポーネントである場合に，ffChildPos はそのコンポーネントの作成順がフォームにとって重要である場合に設定されます。ReadPrefix メソッドは TFilerFlags 型のパラメータを取得します。


参照
参照15190

ReadPrefix メソッド


TFileStream オブジェクト
TFileStream オブジェクト15191

参照	メソッド	オブジェクト

ユニット

Classes

説明

TFileStream オブジェクトはディスクファイルにデータを格納するストリームオブジェクトです。ファイルストリームは基本のストリーム型 TStream から継承する 2 つのメソッドだけをオーバーライドします。Create コンストラクタには 2 つのパラメータがあります。1 つはストリームに関連付けられたファイルの名前を指定し，もう 1 つはファイルモードを指定します。オーバーライドされるもう 1 つのメソッドは Destroy デストラクタで，ストリームオブジェクトを破棄する前に関連付けられたファイルを閉じます。


メソッド
メソッド15192

Create	Destroy


参照
参照15193

TStream オブジェクト

THandleStream オブジェクト


TFindMethodEvent 型
TFindMethodEvent 型15194

参照

ユニット

Classes

宣言

type
  TFindMethodEvent = procedure(Reader: TReader; const MethodName: string;
    var Address: Pointer; var Error: Boolean) of object;

説明

TFindMethodEvent 型は OnFindMethod イベントの型として使うメソッドポインタ型です。


参照
参照15195

OnFindMethod イベント

FindMethod メソッド


TGetChildProc 型
TGetChildProc 型15196

参照

ユニット

Classes

宣言

type
  TGetChildProc = procedure (Child: TComponent) of object;

説明

TGetChildProc 型は，GetChildren メソッドにパラメータとして渡されるメソッドのメソッドポインタ型を定義します。


参照
参照15197

GetChildren メソッド


TGetStrProc 型
TGetStrProc 型15198

参照	例

ユニット

Classes

宣言

type
  TGetStrProc = procedure(const S: string) of object;

説明

TGetStrProc 型は実行時に文字列リストを生成する各種の手続きのパラメータ型として使うメソッドポインタ型です。通常の場合，手続き宣言には TGetStrProc 型の Proc パラメータが 1 つ含まれます。手続きは対話式に Proc を呼び出して，リストに追加する各文字列を渡します。


例
例15199

Controls ユニットの GetCursorValues 手続きは TGetStrProc 型のパラメータを 1 つとり，渡されたメソッドを呼び出して各カーソルの名前をアプリケーションで使えるカーソルのリストに追加します。

GetCursorValues は次のように宣言します。

procedure GetCursorValues(Proc: TGetStrProc);

var
  I: Integer;

begin
  for I := Low(Cursors) to High(Cursors) do Proc(StrPas(Cursors[I].Name));
end;

Proc のメソッドはプロパティエディタまたはその他のコードによって割り当てられます。追加する文字列ごとにメソッドを呼び出すだけです。

TGetStrProc パラメータのもう 1 つの例はプロパティエディタオブジェクトの GetValues メソッドです。オブジェクトインスペクタに論理値として要素を表示するように設定すると，値は TSetElementProperty によって定義されます。GetValues の値は True と False の文字列です。

procedure TSetElementProperty.GetValues(Proc: TGetStrProc);

begin
  Proc('False');

  Proc('True');
end;


参照
参照15200

GetValues メソッド

GetCursorValues 手続き

GetColorValues 手続き


THandleStream オブジェクト
THandleStream オブジェクト15201

参照	プロパティ	メソッド	オブジェクト

ユニット

Classes

説明

THandleStream オブジェクトはファイルストリームオブジェクトのように動作するストリームオブジェクトですが，ストリームデータを格納するのに使うファイルの名前を指定するのではなく，すでに割り当て済みのファイルのファイルハンドルを指定します。

ハンドルストリームオブジェクトはファイルハンドルに読み出し専用でアクセス可能にする Handle プロパティを定義します。このプロパティはハンドルに基づいてファイルを処理する RTL 関数にパラメータとして渡せます。ハンドルストリームは Create コンストラクタをオーバーライドしてハンドルをパラメータとし，ハンドルストリームオブジェクトに関連付けるファイルを指定できます。


プロパティ
プロパティ15202

Handle


メソッド
メソッド15203

Create	Seek	Write

Read


参照
参照15204

TStream オブジェクト

TFileStream オブジェクト


TIdentToInt 型
TIdentToInt 型15205

参照

ユニット

Classes

宣言

type
  TIdentToInt = function (const Ident: string; var Int: Longint): Boolean;

説明

TIdentToInt 型はストリーミングシステムを使って整数定数とその値を登録する関数型を定義します。


参照
参照15206

TIntToIdent 型

IdentToColor 関数

IdentToCursor 関数


TIntToIdent 型
TIntToIdent 型15207

参照

ユニット

Classes

宣言

type
  TIntToIdent = function (Int: Longint; var Ident: string): Boolean;

説明

TIntToIdent 型はストリーミングシステムを使って整数定数とその値を登録する関数型を定義します。


参照
参照15208

TIdentToInt 型

ColorToIdent 関数

CursorToIdent 関数


TList オブジェクト (プロテクト)
TList オブジェクト (プロテクト)15209

参照	オブジェクト

ユニット

Classes

説明

TList オブジェクトはポインタのリストです。リストオブジェクトの使い方についての VCL リファレンスの項目以外に，コンポーネント開発者に関係するメソッドがいくつかあります。

開発者は，標準リストの動作を変更する，自分用の特別なリストオブジェクトを派生して作成できます。TList にはプロテクトメソッドがあり，それらのメソッドを自分の下位リストオブジェクト内で呼び出したりオーバーライドできます。


メソッド
メソッド15210

Error	Grow


TMemoryStream オブジェクト
TMemoryStream オブジェクト15211

参照	メソッド	オブジェクト

ユニット

Classes

説明

TMemoryStream オブジェクトは，データを動的メモリに格納するストリームオブジェクトです。TCustomMemoryStream から継承する項目のほかに，メモリストリームには，ディスクファイルまたは別のストリームオブジェクトの内容をロードまたは置換できるメソッドがあります。メモリに書き込んだり，メモリをクリアするメソッドや，動的メモリプールを管理するメソッドもあります。


メソッド
メソッド15212

Capacity	LoadFromFile	SetSize

Clear	LoadFromStream	Write

Destroy	Realloc


参照
参照15213

TStream オブジェクト

TCustomMemoryStreamオブジェクト


TOperation 型
TOperation 型15214

参照

ユニット

Classes

宣言

type
  TOperation = (opInsert, opRemove);

説明

TOperation 型は Notification メソッドがフラグを立てた 2 種類のコンポーネント処理つまり挿入と削除を定義します。Notification は別のパラメータで指定したコンポーネントを挿入するのか削除するのか示す TOperation 型のパラメータをとります。


参照
参照15215

Notification メソッド


TPersistent オブジェクト
TPersistent オブジェクト15216

参照	メソッド	オブジェクト

ユニット

Classes

宣言

TPersistent オブジェクトは Delphi ストリームオブジェクトに格納しロードされるすべてのオブジェクトの基本的な抽象オブジェクトです。TPersistent は上位オブジェクト TObject から継承するメソッドのほかに，3 つの新しいメソッド AssignTo, DefineProperties (プロテクトメソッド)，Assign (パブリックメソッド) を定義します。


メソッド
メソッド15217

Assign	AssignTo	DefineProperties


参照
参照15218

TPersistentClass 型

TStream オブジェクト


TPersistentClass 型
TPersistentClass 型15219

参照

ユニット

Classes

宣言

type
  TPersistentClass = class of TPersistent;

説明

TPersistentClass 型は持続的オブジェクトのクラスリファレンス型です。


参照
参照15220

TPersistent オブジェクト


TReadComponentsProc 型
TReadComponentsProc 型15221

参照

ユニット

Classes

宣言

type
  TReadComponentsProc = procedure(Component: TComponent) of object;

説明

TReadComponentsProc 型はリーダーオブジェクトの ReadComponents メソッドの Proc パラメータに使うメソッドポインタ型です。


参照
参照15222

ReadComponents メソッド


TReader オブジェクト
TReader オブジェクト15223

参照	プロパティ	メソッド	イベント	オブジェクト

ユニット

Classes

説明

TReader オブジェクトは関連付けられたストリームからデータを読み出す特殊なファイラオブジェクトです。TReader は TFiler から継承する項目のほかに，独自のプロパティ，メソッド，イベントを宣言します。

プロパティ Owner と Parent はリーダーオブジェクトのストリームから読み出したコンポーネントのそれぞれオーナーと親として機能します。イベント OnError, OnFindMethod, OnSetName では項目を読み出したときに特定のイベントが発生した場合の応答をカスタマイズできます。

TReader は TFiler から継承したいくつかのメソッドをオーバーライドするほか，関連付けられたストリームから異種の項目を読み出す各種のメソッドと，リーダーオブジェクトのイベントの生成のためのメソッドを定義します。


プロパティ
プロパティ15224

Owner	Parent	Position


メソッド
メソッド15225

BeginReferences	FlushBuffer	ReadListBegin

DefineBinaryProperty	NextValue	ReadListEnd

DefineProperty	Read	ReadPrefix

Destroy	ReadBoolean	ReadRootComponent

EndOfList	ReadChar	ReadSignature

EndReferences	ReadComponents	ReadStr

Error	ReadFloat	ReadString

FindMethod	ReadIdent	ReadValue

FixupReferences	ReadInteger	SetName


イベント
イベント15226

OnError	OnFindMethod	OnSetName


参照
参照15227

TFiler オブジェクト

TWriter オブジェクト


TReaderError 型
TReaderError 型15228

参照

ユニット

Classes

宣言

type
  TReaderError = procedure(Reader: TReader; const Message: string;
    var Handled: Boolean) of object;

説明

TReaderError 型はリーダーオブジェクトの OnError イベントのメソッドポインタ型です。


参照
参照15229

OnError イベント

TReader オブジェクト


TReaderProc 型
TReaderProc 型15230

参照

ユニット

Classes

宣言

TReaderProc = procedure(Reader: TReader) of object;

説明

TReaderProc 型は DefineProperty メソッドの ReadData パラメータに使うメソッドポインタ型です。TReaderProc は Reader パラメータで指定するリーダーオブジェクトからプロパティ値を読み出すメソッドを定義します。


参照
参照15231

DefineProperty メソッド

TReader オブジェクト

TWriterProc 型


TResourceStream オブジェクト
TResourceStream オブジェクト15232

参照	メソッド	オブジェクト

ユニット

Classes

説明

TResourceStream オブジェクトは，Windows アプリケーションのリソースへのアクセスを提供するメモリストリームです。TCustomMemoryStream から継承する項目のほかに，リソースファイルに書き込む Write メソッドをオーバーライドします。また，特定モジュールまたはリソース ID のリソースとストリームとを関連付けるコンストラクタが定義されています。


メソッド
メソッド15233

Create	Destroy	Write

CreateFromID


参照
参照15234

TCustomMemoryStream オブジェクト


TSetNameEvent 型
TSetNameEvent 型15235

参照

ユニット

Classes

宣言

type
  TSetNameEvent = procedure(Reader: TReader; Component: TComponent;
    var Name: string) of object;

説明

TSetNameEvent 型はリーダーオブジェクトの OnSetName イベントに使うメソッドポインタ型です。


参照
参照15236

OnSetName イベント

リーダーオブジェクトの SetName メソッド


TStream オブジェクト
TStream オブジェクト15237

参照	プロパティ	メソッド	オブジェクト

ユニット

Classes

説明

TStream オブジェクトはバイナリデータを格納できる媒体を表す抽象オブジェクト型です。TStream にはメモリ，ディスクファイルなどにデータを格納する便利な下位オブジェクトがいくつかあります。

TStream は 2 つのプロパティ Size と Position を定義します。それぞれストリームのサイズ (バイト数) と現在位置を表します。TStream が定義するメソッドを使うとストリームでバイトの読み出し，書き込み，コピーができます。


プロパティ
プロパティ15238

Position	Size


メソッド
メソッド15239

CopyFrom	ReadResHeader	WriteComponent

Read	Seek	WriteComponentRes

ReadBuffer	Write	WriteDescendant

ReadComponent	WriteBuffer	WriteDescendantRes

ReadComponentRes


参照
参照15240

TFileStream オブジェクト

THandleStream オブジェクト

TMemoryStream オブジェクト


TStreamProc 型
TStreamProc 型15241

参照

ユニット

Classes

宣言

TStreamProc = procedure(Stream: TStream) of object;

説明

TStreamProc 型はリーダーオブジェクトの DefineBinaryProperty メソッドのパラメータ ReadData と WriteData に使うメソッドポインタ型です。TStreamProc は Stream パラメータで指定するストリームでバイナリ形式のプロパティ値を読み書きするメソッドを定義します。


参照
参照15242

DefineBinaryProperty メソッド

TReader オブジェクト


TValueType 型
TValueType 型15243

参照

ユニット

Classes

宣言

type
  TValueType = (vaNull, vaList, vaInt8, vaInt16, vaInt32, vaExtended, vaString, vaIdent,
 vaFalse, vaTrue, vaBinary, vaSet, vaLString, vaNil, vaCollection);

説明

TValueType 型は，ファイラオブジェクトに書き込まれる値とファイラオブジェクトから読み出される値の種類を定義します。Delphi のファイラではタグ付きの値が使われ，ストリーム上のそれぞれの値に型を表すプレフィクスが付きます。これらのプレフィクスが TValueType 型です。


参照
参照15244

NextValue メソッド

ReadValue メソッド


TWriter オブジェクト
TWriter オブジェクト15245

参照	プロパティ	メソッド	オブジェクト

ユニット

Classes

説明

TWriter オブジェクトはその関連付けられたストリームにデータを書き込む特殊なファイラオブジェクトです。

TWriter は TFiler から継承したメソッドのいくつかをオーバーライドするほか，関連付けられたストリームに各種の項目を書き込むメソッドをいくつも定義します。


プロパティ
プロパティ15246

Position	RootAncestor


メソッド
メソッド15247

DefineBinaryProperty	WriteComponent	WriteListEnd

DefineProperty	WriteChar	WriteRootComponent

Destroy	WriteFloat	WriteSignature

Write	WriteIdent	WriteStr

WriteBoolean	WriteInteger	WriteString

WriteCollection	WriteListBegin


参照
参照15248

TFiler オブジェクト

TReader オブジェクト


TWriterProc 型
TWriterProc 型15249

参照

ユニット

Classes

宣言

type
  TWriterProc = procedure(Writer: TWriter) of object;

説明

TWriterProc 型は DefineProperty メソッドの WriteData パラメータに使うメソッドポインタ型です。TWriterProc は Writer パラメータで指定するライターオブジェクトにプロパティ値を書き込むメソッドを定義します。


参照
参照15250

DefineProperty メソッド

TWriter オブジェクト

TReaderProc 型


UnRegisterClass 手続き
UnRegisterClass 手続き15251

参照

ユニット

Classes

宣言

procedure UnRegisterClass(AClass: TPersistentClass);

説明

UnRegisterClass 手続きは Delphi ストリーミングシステムを使って登録したオブジェクト型リストから AClass パラメータで指定するオブジェクト型を削除します。


参照
参照15252

RegisterClass 手続き

UnRegisterClasses 手続き


UnRegisterClasses 手続き
UnRegisterClasses 手続き15253

参照

ユニット

Classes

宣言

procedure UnRegisterClasses(AClasses: array of TPersistentClass);

説明

UnRegisterClasses 手続きは Delphi ストリーミングシステムを使って登録したオブジェクト型リストから AClasses 配列パラメータで指定するオブジェクト型を削除します。UnRegisterClasses は配列内の各要素ごとに UnRegisterClass を呼び出します。


参照
参照15254

RegisterClasses 手続き

UnRegisterClass 手続き


Updated メソッド
Updated メソッド15255

参照

適用

TComponent (すべてのコンポーネント)

宣言

procedure Updated; dynamic;

説明

Updated メソッドは，コンポーネントの更新が終わったことを表すために，コンポーネントの ComponentState プロパティの csUpdating の状態をクリアします。Updated を呼び出すのは，フラグを設定する Updating を呼び出した後です。


参照
参照15256

ComponentState プロパティ

Updating メソッド


Updating メソッド
Updating メソッド15257

参照

適用

TComponent (すべてのコンポーネント)

宣言

procedure Updating; dynamic;

説明

Updating メソッドは，コンポーネントが更新されようとしていることを表すために，コンポーネントの ComponentState プロパティの csUpdating の状態を設定します。Updating を呼び出した後には，フラグをクリアする Updated を必ず呼び出すようにしなければなりません。


参照
参照15258

ComponentState プロパティ

Updated メソッド


ValidateRename メソッド
ValidateRename メソッド15259

参照	例

適用

TComponent

宣言

procedure ValidateRename(AComponent: TComponent; const CurName, NewName: string); virtual;

説明

ValidateRename メソッドは AComponent で指定する所有コンポーネントを現在の名前 (CurName) から NewName で指定する文字列に変更できるかどうか調べます。AComponent が nil の場合と NewName の名前が Components リストのコンポーネントの名前としてすでに存在する場合，ValidateRename は EComponentError 例外を生成します。


例
例15260

TComponent の InsertComponent メソッドは ValidateRename を使って特定の名前のコンポーネントを挿入できるかどうか調べます。コンポーネントがすでに所有しているコンポーネントと同じ名前のコンポーネントを挿入しようとすると，ValidateRename は例外を生成します。

procedure TComponent.InsertComponent(AComponent: TComponent);

begin
  ValidateRename(AComponent, '', AComponent.FName^);	{ 新しい名前を確認します }

  Insert(AComponent);	{ 名前がすでに使われていると実行されません }

  ...
end;


参照
参照15261

Name プロパティ

FindComponent メソッド


Write メソッド
Write メソッド15262

適用

TStream, TWriter

説明

Write メソッドは似たような機能を持つものが 2 つあります。1 つはストリームオブジェクトがストリームにデータを書き込むためのメソッドです。もう 1 つはライターオブジェクトがライターオブジェクトの関連付けられたストリームにデータを渡すためのメソッドです。

Stream オブジェクトの Write メソッド

Writer オブジェクトの Write メソッド


Stream オブジェクトの Write メソッド
Write メソッド15263

参照

適用

TStream

宣言

function Write(const Buffer; Count: Longint): Longint; virtual; abstract;

説明

Write メソッドは Buffer から Count で指定するバイト数をストリームに書き込み，ストリームの現在位置を Count で指定するバイト数だけ進め，書き込んだバイト数を返します。

TStream.Write は抽象メソッドです。各下位ストリーム型は特定の記憶媒体 (メモリ，ディスクファイルなど) にデータを書き込む Write メソッドを定義します。それ以外のストリームのデータ書き込みメソッド (WriteBuffer, WriteComponent) は実際に書き込むため Write を呼び出します。


参照
参照15264

Read メソッド


Writer オブジェクトの Write メソッド
Write メソッド15265

参照

適用

TWriter

宣言

procedure Write(const Buf; Count: Longint);

説明

Write メソッドは Buf から Count で指定するバイト数をライターオブジェクトの関連付けられたストリームに書き込みます。


参照
参照15266

Read メソッド


WriteBoolean メソッド
WriteBoolean メソッド15267

参照

適用

TWriter

宣言

procedure WriteBoolean(Value: Boolean);

説明

WriteBoolean メソッドは Value で指定する論理値をライターオブジェクトのストリームに書き込みます。


参照
参照15268

ストリームオブジェクトのWrite メソッド

ReadBoolean メソッド


WriteBuffer メソッド
WriteBuffer メソッド15269

参照

適用

TStream

宣言

procedure WriteBuffer(const Buffer; Count: Longint);

説明

WriteBuffer メソッドは Buffer から Count で指定するバイト数をストリームに書き込みストリームの現在位置を Count で指定するバイト数だけ進めます。指定されたすべてのバイトはストリームが書き込めないと，WriteBuffer は EWriteError 例外を生成します。


参照
参照15270

ストリームオブジェクトのWrite メソッド

ReadBuffer メソッド


WriteChar メソッド
WriteChar メソッド15271

参照

適用

TWriter

宣言

procedure WriteChar(Value: Char);

説明

WriteChar メソッドは Value で指定する文字をライターオブジェクトのストリームに書き込みます。


参照
参照15272

ストリームオブジェクトのWrite メソッド

ReadChar メソッド


WriteCollection メソッド
WriteCollection メソッド15273

参照

適用

TWriter

宣言

procedure WriteCollection(Value: TCollection);

説明

WriteCollection メソッドは，Value に渡したオブジェクトのコレクションを，ライターオブジェクトのストリームに書き込みます。


参照
参照15274

ライターオブジェクトの Write メソッド


WriteComponent メソッド
WriteComponent メソッド15275

適用

TStream, TWriter

WriteComponent には 2 つのメソッドがあります。ストリームオブジェクト用の WriteComponent は指定したコンポーネントと所有コンポーネントをストリームに書き込みます。ライターオブジェクト用の WriteComponent は指定したコンポーネントに，各プロパティの値をライターオブジェクトへ書き込ませます。

Stream オブジェクトの WriteComponent メソッド

Writer オブジェクトの WriteComponent メソッド


Stream オブジェクトの WriteComponent メソッド
WriteComponent メソッド15276

参照

適用

TStream

宣言

procedure WriteComponent(Instance: TComponent);

説明

WriteComponent メソッドは Instance で指定するコンポーネントと Instance が所有するオブジェクトをストリームに書き込みます。WriteComponent はライターオブジェクトを作成しその WriteRootComponent メソッドを呼び出して Instance とその所有オブジェクトを書き込みます。


参照
参照15277

WriteRootComponent メソッド

ReadComponent メソッド


Writer オブジェクトの WriteComponent メソッド
WriteComponent メソッド15278

参照

適用

TWriter

宣言

procedure WriteComponent(Component: TComponent);

説明

WriteComponent メソッドは Component で指定するコンポーネントの WriteState メソッドを呼び出し，それを Writer パラメータとして渡します。つまり Component.WriteState(Self) を呼び出します。WriteComponent は Component の ComponentState プロパティに csWriting 状態を設定して WriteState を呼び出し，WriteState から制御が返ると csWriting 状態をクリアします。


参照
参照15279

WriteState メソッド

ReadComponent メソッド


WriteComponentRes メソッド
WriteComponentRes メソッド15280

参照

適用

TStream

宣言

procedure WriteComponentRes(const ResName: string; Instance: TComponent);

説明

WriteComponentRes メソッドは標準の Windows リソースファイルヘッダーに Instance で指定するコンポーネントを後ろに付けてストリームに書き込みます。WriteComponentRes を使って書き込んだコンポーネントを読み出すには，ReadComponentRes メソッドを呼び出します。

WriteComponentRes は ResName で指定した文字列をリソースファイルヘッダーのリソース名として使います。WriteComponent メソッドを呼び出してコンポーネントとその所有コンポーネントを書き込みます。


参照
参照15281

ストリームオブジェクトの WriteComponent メソッド

ReadComponentRes メソッド


WriteComponentResFile 手続き
WriteComponentResFile 手続き15282

参照

ユニット

Classes

宣言

procedure WriteComponentResFile(const FileName: string; Instance: TComponent);

説明

WriteComponentResFile 手続きは Instance で指定するコンポーネントとそのコンポーネントが所有するコンポーネントを FileName で指定するファイルに Windows リソースファイル形式で書き込みます。Delphi は WriteComponentResFile を使ってフォームとそのコンポーネントをフォームファイルに書き込みます。フォームコンポーネントとそのコンポーネントを作成し，WriteComponentResFile を使ってそれをフォームファイルに書き込めば，アプリケーションは Delphi が読み出し可能なフォームファイルを生成できます。

WriteComponentResFile は FileName で指定する名前を持つファイルストリームオブジェクトを作成し，ストリームの WriteComponentRes メソッドを呼び出して Instansce をファイルに書き込みます。


参照
参照15283

ReadComponentResFile 関数

WriteComponentRes メソッド


WriteComponents メソッド
WriteComponents メソッド15284

参照

説明

Delphi 1.0 のコンポーネントで使っていた WriteComponents メソッドは，フォームの継承をサポートする GetChildren メソッドに置き換わりました。

WriteComponents を使っていたコンポーネントは，現在は GetChildren と SetChildOrder を実装しなければなりません。HasParent から True を返す子は，現在は GetParentComponent と SetParentComponent を実装しなければなりません。


参照
参照15285

GetChildren メソッド

SetChildOrder メソッド

HasParent メソッド

GetParentComponent メソッド

SetParentComponent メソッド


WriteDescendant メソッド
WriteDescendant メソッド15286

適用

TStream，TWriter

WriteDescendent というメソッドは 2 つあります。ストリームオブジェクトの WriteDescendent は，指定されたコンポーネントとそのコンポーネントが所有するコンポーネントをストリームに書き込みます。ライターオブジェクトの WriteDescendent では，指定されたコンポーネントが，そのコンポーネントの各プロパティの値をライターオブジェクトのストリームに書き込みます。

ストリームオブジェクトの WriteDescendent メソッド

ライターオブジェクトの WriteDescendent メソッド


Stream オブジェクトの WriteDescendant メソッド
WriteDescendant メソッド15287

参照

適用

TStream

宣言

procedure WriteDescendent(Instance, Ancestor: TComponent);

説明

ストリームオブジェクトの WriteDescendent メソッドは，Instance に渡されたコンポーネントをストリームに書き込むために，ライターオブジェクトを作成し，その WriteDescendent メソッドを呼び出します。Instance は，Ancestor から継承した継承フォームか，または上位フォームの Ancestor コンポーネントに対応する継承フォーム内のコンポーネントのどちらかです。


参照
参照15288

WriteDescendentRes メソッド

ライターオブジェクトの WriteDescendent メソッド


Writer オブジェクトの WriteDescendant メソッド
WriteDescendant メソッド15289

参照

適用

TWriter

宣言

procedure WriteDescendent(Root: TComponent; AAncestor: TComponent);

説明

ライターオブジェクトの WriteDescendent メソッドは，AAncestor に渡された値をライターオブジェクトの Ancestor プロパティと RootAncestor プロパティに書き込み，Root プロパティを Root に渡された値に設定してから，Root および Root が所有するコンポーネントをライターオブジェクトのストリームに書き込むために WriteSignature と WriteComponent を呼び出します。

WriteDescendent は，Root の型で定義されるプロパティ値ではなく，Ancestor を設定することによって Ancestor プロパティの値をデフォルトとして使う点が WriteComponent と異なります。


参照
参照15290

ライターオブジェクトの WriteComponent メソッド

WriteSignature メソッド

Ancestor プロパティ

Root プロパティ

RootAncestor プロパティ


WriteDescendantRes メソッド
WriteDescendantRes メソッド15291

参照

適用

TStream

宣言

procedure WriteDescendentRes(const ResName: string; Instance, Ancestor: TComponent);

説明

ストリームオブジェクトの WriteDescendentRes メソッドは，ResName をリソースの名前とし，Windows リソースヘッダーをストリームに書き込みます。その後，Instance を Ancestor の下位としてストリームに書き込むために WriteDescendent を呼び出します。


参照
参照15292

ストリームオブジェクトの WriteDescendent メソッド


WriteFloat メソッド
WriteFloat メソッド15293

参照

適用

TWriter

宣言

procedure WriteFloat(Value: Extended);

説明

WriteFloat メソッドは Value で指定する浮動小数点値をライターオブジェクトのストリームに書き込みます。


参照
参照15294

ストリームオブジェクトのWrite メソッド

ReadFloat メソッド


WriteIdent メソッド
WriteIdent メソッド15295

参照

適用

TWriter

宣言

procedure WriteIdent(const Ident: string);

説明

WriteIdent メソッドは Ident で指定する識別子をライターオブジェクトのストリームに書き込みます。


参照
参照15296

ストリームオブジェクトのWrite メソッド

ReadIdent メソッド


WriteInteger メソッド
WriteInteger メソッド15297

参照

適用

TWriter

宣言

procedure WriteInteger(Value: Longint);

説明

WriteInteger メソッドは Value で指定する整数値をライターオブジェクトのストリームに書き込みます。


参照
参照15298

ストリームオブジェクトのWrite メソッド

ReadInteger メソッド


WriteListBegin メソッド
WriteListBegin メソッド15299

参照	例

適用

TWriter

宣言

procedure WriteListBegin;

説明

WriteListBegin メソッドはリストの開始マーカーをライターオブジェクトの関連付けられたストリームに書き込みます。WriteListBegin を呼び出した場合，必ず対応する WriteListEnd を呼び出さなくてはなりません。


例
例15300

TStrings オブジェクトは WriteListBegin と WriteListEnd を使ってその文字列を格納します。次の WriteData は DefineProperties メソッドで文字列を格納するため TStrings が登録するメソッドです。

procedure TStrings.WriteData(Writer: TWriter);

var
  I: Integer;

begin

  Writer.WriteListBegin;	{ リストの開始マーカーを書き込みます }

  for I := 0 to Count - 1 do	{ 文字列ごとに反復します }
    Writer.WriteString(Get(I));	{ それぞれストリームに書き込みます }

  Writer.WriteListEnd;	{ リストの終わりを示すマーカーを書き込みます }

end;


参照
参照15301

ストリームオブジェクトのWrite メソッド

ReadListBegin メソッド

WriteListEnd メソッド


WriteListEnd メソッド
WriteListEnd メソッド15302

参照	例

適用

TWriter

宣言

procedure WriteListEnd;

説明

WriteListEnd メソッドはリストの終わりを示すマーカーをライターオブジェクトの関連付けられたストリームに書き込みます。WriteListEnd を呼び出すには，先に対応する WriteListBegin を呼び出していなくてはなりません。


参照
参照15303

ストリームオブジェクトのWrite メソッド

ReadListEnd メソッド

WriteListBegin メソッド


WriteRootComponent メソッド
WriteRootComponent メソッド15304

参照

適用

TWriter

宣言

procedure WriteRootComponent(Root: TComponent);

説明

WriteRootComponent メソッドは Root で指定するコンポーネントにライターオブジェクトの Root プロパティを設定し，WriteSignature を呼び出して Delphi ファイラ ID をストリームに書き込み，最後にライターオブジェクトの WriteComponent メソッドを呼び出して Root をストリームに格納します。


参照
参照15305

Root プロパティ

WriteSignature メソッド

ReadRootComponent メソッド


WriteSignature メソッド
WriteSignature メソッド15306

参照

適用

TWriter

宣言

procedure WriteSignature;

説明

WriteSignature メソッドは Delphi ファイラ ID をライターオブジェクトの関連付けられたストリームに書き込みます。WriteRootComponent メソッドは WriteSignature を呼び出してからコンポーネントをストリームに書き込みます。オブジェクトをロードする前に署名を確認するので，リーダーオブジェクトは無効なまたは壊れたデータを読み出さないで済みます。

ファイラの署名は 4 文字です。このバージョンの Delphi では TPF0 です。


参照
参照15307

ストリームオブジェクトのWrite メソッド

ReadSignature メソッド


WriteState メソッド
WriteState メソッド15308

参照

適用

TComponent

宣言

procedure WriteState(Writer: TWriter); virtual;

説明

WriteState メソッドはすべてのコンポーネントのパブリッシュプロパティの値，その他のストアドデータ，所有コンポーネントを Writer で指定するライターオブジェクトに書き込みます。


参照
参照15309

ReadState メソッド


WriteStr メソッド
WriteStr メソッド15310

参照

適用

TWriter

宣言

procedure WriteStr(const Value: string);

説明

WriteStr メソッドは Value で指定する文字列をライターオブジェクトのストリームに書き込みます。

注意:	ストリームでのコンポーネント文字列の読み出しと書き込みには必ず ReadString と WriteString を使います。同じような名前の ReadStr メソッドと WriteStr メソッドは特定の VCL コンポーネントがその内部で使うものなので，これを使うとデータが破損する可能性があります。


参照
参照15311

ストリームオブジェクトのWrite メソッド

ReadStr メソッド

WriteString メソッド


WriteString メソッド
WriteString メソッド15312

参照

適用

TWriter

宣言

procedure WriteString(const Value: string);

説明

WriteString メソッドは Value で指定する文字列をライターオブジェクトのストリームに書き込みます。

注意:	ストリームでのコンポーネント文字列の読み出しと書き込みには必ず ReadString と WriteString を使います。同じような名前の ReadStr メソッドと WriteStr メソッドは特定の VCL コンポーネントがその内部で使うものなので，これを使うとデータが破損する可能性があります。


参照
参照15313

ストリームオブジェクトのWrite メソッド

ReadString メソッド

WriteStr メソッド


メッセージレコード型
メッセージレコード型15314

参照

ユニット

Messages

Delphi は，すべての標準 Windows メッセージのメッセージレコード型を備えています。

TMessage	TWMHScrollClipboard	TWMNCRButtonUp

TWMActivate	TWMIconEraseBkgnd	TWMNextDlgCtl

TWMActivateApp	TWMInitDialog	TWMNoParams

TWMAskCBFormatName	TWMInitMenu	TWMPaint

TWMCancelMode	TWMInitMenuPopup	TWMPaintClipboard

TWMChangeCBChain	TWMKey	TWMPaintIcon

TWMChar	TWMKeyDown	TWMPaletteChanged

TWMCharToItem	TWMKeyUp	TWMPaletteIsChanging

TWMChildActivate	TWMKillFocus	TWMParentNotify

TWMChooseFont_GetLogFont	TWMLButtonDblClk	TWMPaste

TWMClear	TWMLButtonDown	TWMPower

TWMClose	TWMLButtonUp	TWMQueryDragIcon

TWMCommand	TWMMButtonDblClk	TWMQueryEndSession

TWMCommNotify	TWMMButtonDown	TWMQueryNewPalette

TWMCompacting	TWMMButtonUp	TWMQueryOpen

TWMCompareItem	TWMMDIActivate	TWMQueueSync

TWMCopy	TWMMDICascade	TWMQuit

TWMCreate	TWMMDICreate	TWMRButtonDblClk

TWMCtlColor	TWMMDIDestroy	TWMRButtonDown

TWMCut	TWMMDIGetActive	TWMRButtonUp

TWMDDE_Ack	TWMMDIIconArrange	TWMRenderAllFormats

TWMDDE_Advise	TWMMDIMaximize	TWMRenderFormat

TWMDDE_Data	TWMMDINext	TWMScroll

TWMDDE_Execute	TWMMDIRestore	TWMSetCursor

TWMDDE_Initiate	TWMMDISetMenu	TWMSetFocus

TWMDDE_Poke	TWMMDITile	TWMSetFont

TWMDDE_Request	TWMMeasureItem	TWMSetRedraw

TWMDDE_Terminate	TWMMenuChar	TWMSetText

TWMDDE_Unadvise	TWMMenuSelect	TWMShowWindow

TWMDeadChar	TWMMouse	TWMSize

TWMDeleteItem	TWMMouseActivate	TWMSizeClipboard

TWMDestroy	TWMMouseMove	TWMSpoolerStatus

TWMDestroyClipboard	TWMMove	TWMSysChar

TWMDevModeChange	TWMNCActivate	TWMSysColorChange

TWMDrawClipboard	TWMNCCalcSize	TWMSysCommand

TWMDrawItem	TWMNCCreate	TWMSysDeadChar

TWMDropFiles	TWMNCDestroy	TWMSysKeyDown

TWMEnable	TWMNCHitTest	TWMSysKeyUp

TWMEndSession	TWMNCHitMessage	TWMSystemError

TWMEnterIdle	TWMNCLButtonDblClk	TWMTimeChange

TWMEraseBkgnd	TWMNCLButtonDown	TWMTimer

TWMFontChange	TWMNCLButtonUp	TWMUndo

TWMGetDlgCode	TWMNCMButtonDblClk	TWMVKeyToItem

TWMGetFont	TWMNCMButtonDown	TWMVScroll

TWMGetMinMaxInfo	TWMNCMButtonUp	TWMVScrollClipboard

TWMGetText	TWMNCMouseMove	TWMWindowPosChanged

TWMGetTextLength	TWMNCPaint	TWMWindowPosChanging

TWMHelp	TWMNCRButtonDblClk	TWMWindowPosMsg

TWMHScroll	TWMNCRButtonDown	TWMWinIniChange


参照
参照15315

Windows メッセージとは


TMessage 型
TMessage 型15316

参照

ユニット

Messages

宣言

TMessage = record
  Msg: Word;
  case Integer of
    0: (
      WParam: Word;
      LParam: Longint;
      Result: Longint);
    1: (
      WParamLo: Byte;
      WParamHi: Byte;
      LParamLo: Word;
      LParamHi: Word;
      ResultLo: Word;
      ResultHi: Word);
end;

説明

TMessage 型は，共通メッセージレコード 型です。すべての標準 Windows メッセージと Delphi で定義されたメッセージにあるのは，名前付きパラメータで指定されたメッセージレコード型です。Tmessage 型内のメッセージレコードはでれでも割り当てることができ，選択するときはメッセージのパラメータに関連する名前の共通パラメータを使用します。


参照
参照15317

メッセージレコード型


TWMActivate 型
TWMActivate 型15318

参照

ユニット

Messages

宣言

type
  TWMActivate = record
    Msg: Cardinal;
    Active: WORD;	{ WA_INACTIVE, WA_ACTIVE, WA_CLICKACTIVE }
    ActiveWindow: HWND;
    Minimized: BOOL;
    Result: Longint;
  end;

説明

TWMActivate 型は WM_ACTIVATE メッセージのメッセージレコードです。


TWMActivateApp 型
TWMActivateApp 型15319

参照

ユニット

Messages

宣言

type
  TWMActivateApp = record
    Msg: Cardinal;
    Active: BOOL;
    Task: THANDLE;
    Unused: Word;
    Result: Longint;
  end;

説明

TWMActivateApp 型は WM_ACTIVATEAPP メッセージのメッセージレコードです。


TWMAskCBFormatName 型
TWMAskCBFormatName 型15320

参照

ユニット

Messages

宣言

type
  TWMAskCBFormatName = record
    Msg: Cardinal;
    NameLen: Word;
    FormatName: PChar;
    Result: Longint;
  end;

説明

TWMAskCBFormatName 型は WM_ASKCBFORMATNAME メッセージのメッセージレコードです。


TWMCancelMode 型
TWMCancelMode 型15321

参照

ユニット

Messages

宣言

type
  TWMCancelMode = TWMNoParams;

説明

TWMCancelMode 型は WM_CANCELMODE メッセージのメッセージレコードです。


TWMChangeCBChain 型
TWMChangeCBChain 型15322

参照

ユニット

Messages

宣言

type

TWMChangeCBChain = record

  Msg: Cardinal;

  Remove: HWND;

  Next: HWND;

  Unused: Word;

  Result: Longint;

end;

説明

TWMChangeCBChain 型は WM_CHANGECBCHAIN メッセージのメッセージレコードです。


TWMChar 型
TWMChar 型15323

参照

ユニット

Messages

宣言

type
  TWMChar = TWMKey;

説明

TWMChar 型は WM_CHAR メッセージのメッセージレコードです。


TWMCharToItem 型
TWMCharToItem 型15324

参照

ユニット

Messages

宣言

type
  TWMCharToItem = record
    Msg: Cardinal;
    Key: Word;
    ListBox: HWND;
    CaretPos: Word;
    Result: Longint;
  end;

説明

TWMCharToItem 型は WM_CHARTOITEM メッセージのメッセージレコードです。


TWMChildActivate 型
TWMChildActivate 型15325

参照

ユニット

Messages

宣言

type
  TWMChildActivate = TWMNoParams;

説明

TWMChildActivate 型は WM_CHILDACTIVATE メッセージのメッセージレコードです。


TWMChooseFont_GetLogFont 型
TWMChooseFont_GetLogFont 型15326

参照

ユニット

Messages

宣言

type
  TWMChooseFont_GetLogFont = record
    Msg: Cardinal;
    Unused: Word;
    LogFont: PLogFont;
    Result: Longint;
  end;

説明

TWMChooseFont_GetLogFont 型は WM_CHOOSEFONT_GETLOGFONT メッセージのメッセージレコードです。


TWMClear 型
TWMClear 型15327

参照

ユニット

Messages

宣言

type
  TWMClear = TWMNoParams;

説明

TWMClear 型は WM_CLEAR メッセージのメッセージレコードです。


TWMClose 型
TWMClose 型15328

参照

ユニット

Messages

宣言

type
  TWMClose = TWMNoParams;

説明

TWMClose 型は WM_CLOSE メッセージのメッセージレコードです。


TWMCommand 型
TWMCommand 型15329

参照

ユニット

Messages

宣言

type
  TWMCommand = record
    Msg: Cardinal;
    ItemID: Word;
    Ctl: HWND;
    NotifyCode: Word;
    Result: Longint;
  end;

説明

TWMCommand 型は WM_COMMAND メッセージのメッセージレコードです。


TWMCommNotify 型
TWMCommNotify 型15330

参照

ユニット

Messages

宣言

type
TWMCommNotify = record
  Msg: Cardinal;
  Device: Word;
  NotifyStatus: Word;
  Unused: Word;
  Result: Longint;
end;

説明

TWMCompacting 型は WM_COMMNOTIFY メッセージのメッセージレコードです。


TWMCompacting 型
TWMCompacting 型15331

参照

ユニット

Messages

宣言

type
  TWMCompacting = record
    Msg: Cardinal;
    CompactRatio: Word;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMCompacting 型は WM_COMPACTING メッセージのメッセージレコードです。


TWMCompareItem 型
TWMCompareItem 型15332

参照

ユニット

Messages

宣言

type
  TWMCompareItem = record
    Msg: Cardinal;
    Ctl: Word;
    CompareItemStruct: PCompareItemStruct;
    Result: Longint;
  end;

説明

TWMCompareItem 型は WM_COMPAREITEM メッセージのメッセージレコードです。


TWMCopy 型
TWMCopy 型15333

参照

ユニット

Messages

宣言

type
  TWMCopy = TWMNoParams;

説明

TWMCopy 型は WM_COPY メッセージのメッセージレコードです。


TWMCreate 型
TWMCreate 型15334

参照

ユニット

Messages

宣言

type
  TWMCreate = record
    Msg: Cardinal;
    Unused: Integer;
    CreateStruct: PCreateStruct;
    Result: Longint;
  end;

説明

TWMCreate 型は WM_CREATE メッセージのメッセージレコードです。


TWMCtlColor 型
TWMCtlColor 型15335

参照

ユニット

Messages

宣言

type
  TWMCtlColor = record
    Msg: Cardinal;
    ChildDC: HDC;
    ChildWnd: HWND;
    CtlType: Integer;
    Result: Longint;
  end;

説明

TWMCtlColor 型は WM_CTLCOLOR メッセージのメッセージレコードです。


TWMCut 型
TWMCut 型15336

参照

ユニット

Messages

宣言

type
  TWMCut = TWMNoParams;

説明

TWMCut 型は WM_CUT メッセージのメッセージレコードです。


TWMDDE_Ack 型
TWMDDE_Ack 型15337

参照

ユニット

Messages

宣言

type
  TWMDDE_Ack = record
    Msg: Cardinal;
    PostingApp: HWND;
    case Word of
      WM_DDE_INITIATE: (
        App: Word;
        Topic: Word;
        Result: Longint);
      WM_DDE_EXECUTE {and all others }: (
        Status: Word;
        case Word of
          WM_DDE_EXECUTE: (
            Commands: THANDLE);
          0 { all others }: (
            Item: Word));
  end;

説明

TWMDDE_Ack 型は WM_DDE_ACK メッセージのメッセージレコードです。


TWMDDE_Advise 型
TWMDDE_Advise 型15338

参照

ユニット

Messages

宣言

type
  TWMDDE_Advise = record
    Msg: Cardinal;
    PostingApp: HWND;
    Options: THANDLE;
    Item: Word;
    Result: Longint;
  end;

説明

TWMDDE_Advise 型は WM_DDE_ADVISE メッセージのメッセージレコードです。


TWMDDE_Data 型
TWMDDE_Data 型15339

参照

ユニット

Messages

宣言

type
  TWMDDE_Data = record
    Msg: Cardinal;
    PostingApp: HWND;
    Data: THANDLE;
    Item: Word;
    Result: Longint;
  end;

説明

TWMDDE_Data 型は WM_DDE_DATA メッセージのメッセージレコードです。


TWMDDE_Execute 型
TWMDDE_Execute 型15340

参照

ユニット

Messages

宣言

type
  TWMDDE_Execute = record
    Msg: Cardinal;
    PostingApp: HWND;
    Commands: THANDLE;
    Unused: Word;
    Result: Longint;
  end;

説明

TWMDDE_Execute 型は WM_DDE_EXECUTE メッセージのメッセージレコードです。


TWMDDE_Initiate 型
TWMDDE_Initiate 型15341

参照

ユニット

Messages

宣言

type
  TWMDDE_Initiate = record
    Msg: Cardinal;
    PostingApp: HWND;
    App: Word;
    Topic: Word;
    Result: Longint;
  end;

説明

TWMDDE_Initiate 型は WM_DDE_INITIATE メッセージのメッセージレコードです。


TWMDDE_Poke 型
TWMDDE_Poke 型15342

参照

ユニット

Messages

宣言

type
  TWMDDE_Poke = record
    Msg: Cardinal;
    PostingApp: HWND;
    Data: THANDLE;
    Item: Word;
    Result: Longint;
  end;

説明

TWMDDE_Poke 型は WM_DDE_POKE メッセージのメッセージレコードです。


TWMDDE_Request 型
TWMDDE_Request 型15343

参照

ユニット

Messages

宣言

type
  TWMDDE_Request = record
    Msg: Cardinal;
    PostingApp: HWND;
    Format: Word;
    Item: Word;
    Result: Longint;
  end;

説明

TWMDDE_Request 型は WM_DDE_REQUEST メッセージのメッセージレコードです。


TWMDDE_Terminate 型
TWMDDE_Terminate 型15344

参照

ユニット

Messages

宣言

type
  TWMDDE_Terminate = record
    Msg: Cardinal;
    PostingApp: HWND;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMDDETerminate 型は WM_DDE_TERMINATE メッセージのメッセージレコードです。


TWMDDE_Unadvise 型
TWMDDE_Unadvise 型15345

参照

ユニット

Messages

宣言

type
  TWMDDE_Unadvise = TWMDDE_Advise;

説明

TWMDDE_Unadvise 型は WM_DDE_UNADVISE メッセージのメッセージレコードです。


TWMDeadChar 型
TWMDeadChar 型15346

参照

ユニット

Messages

宣言

type
  TWMDeadChar = TWMChar;

説明

TWMDeadChar 型は WM_DEADCHAR メッセージのメッセージレコードです。


TWMDeleteItem 型
TWMDeleteItem 型15347

参照

ユニット

Messages

宣言

type
  TWMDeleteItem = record
    Msg: Cardinal;
    Ctl: HWND;
    DeleteItemStruct: PDeleteItemStruct;
    Result: Longint;
  end;

説明

TWMDeleteItem 型は WM_DELETEITEM メッセージのメッセージレコードです。


TWMDestroy 型
TWMDestroy 型15348

参照

ユニット

Messages

宣言

type
  TWMestroy = TWMNoParams;

説明

TWMDestroy 型は WM_DESTROY メッセージのメッセージレコードです。


TWMDestroyClipboard 型
TWMDestroyClipboard 型15349

参照

ユニット

Messages

宣言

type
  TWMDestroyClipboard = TWMNoParams;

説明

TWMDestroyClipboard 型は WM_DESTROYCLIPBOARD メッセージのメッセージレコードです。


TWMDevModeChanged 型
TWMDevModeChanged 型15350

参照

ユニット

Messages

宣言

type
  TWMDevModeChange = record
    Msg: Cardinal;
    Unused: Integer;
    Device: PChar;
    Result: Longint;
  end;

説明

TWMDevModeChanged 型は WM_DEVMODECHANGE メッセージのメッセージレコードです。


TWMDrawClipboard 型
TWMDrawClipboard 型15351

参照

ユニット

Messages

宣言

type
  TWMDrawClipboard = TWMNoParams;

説明

TWMDrawClipboard 型は WM_DRAWCLIPBOARD メッセージのメッセージレコードです。


TWMDrawItem 型
TWMDrawItem 型15352

参照

ユニット

Messages

宣言

type
  TWMDrawItem = record
    Msg: Cardinal;
    Ctl: HWND;
    DrawItemStruct: PDrawItemStruct;
    Result: Longint;
  end;

説明

TWMDrawItem 型は WM_DRAWITEM メッセージのメッセージレコードです。


TWMDropFiles 型
TWMDropFiles 型15353

参照

ユニット

Messages

宣言

type
  TWMDropFiles = record
    Msg: Cardinal;
    Drop: THANDLE;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMDropFiles 型は WM_DROPFILES メッセージのメッセージレコードです。


TWMEnable 型
TWMEnable 型15354

参照

ユニット

Messages

宣言

type
  TWMEnable = record
    Msg: Cardinal;
    Enabled: BOOL;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMEnable 型は WM_ENABLE メッセージのメッセージレコードです。


TWMEndSession 型
TWMEndSession 型15355

参照

ユニット

Messages

宣言

type
  TWMEndSession = record
    Msg: Cardinal;
    EndSession: BOOL;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMEndSession 型は WM_ENDSESSION メッセージのメッセージレコードです。


TWMEnterIdle 型
TWMEnterIdle 型15356

参照

ユニット

Messages

宣言

type
  TWMEnterIdle = record
    Msg: Cardinal;
    Source: Word;
    IdleWnd: HWND;
    Unused: Word;
    Result: Longint;
  end;

説明

TWMEnterIdle 型は WM_ENTERIDLE メッセージのメッセージレコードです。


TWMEraseBkgnd 型
TWMEraseBkgnd 型15357

参照

ユニット

Messages

宣言

type
  TWMEraseBkgnd = record
    Msg: Cardinal;
    DC: HDC;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMEraseBkgnd 型は WM_ERASEBKGND メッセージのメッセージレコードです。


TWMFontChange 型
TWMFontChange 型15358

参照

ユニット

Messages

宣言

type
  TWMFontChange = TWMNoParams;

説明

TWMFontChange 型は WM_FONTCHANGE メッセージのメッセージレコードです。


TWMGetDlgCode 型
TWMGetDlgCode 型15359

参照

ユニット

Messages

宣言

type
  TWMGetDlgCode = TWMNoParams;

説明

TWMGetDlgCode 型は WM_GETDLGCODE メッセージのメッセージレコードです。


TWMGetFont 型
TWMGetFont 型15360

参照

ユニット

Messages

宣言

type
  TWMGetFont = TWMNoParams;

説明

TWMGetFont 型は WM_GETFONT メッセージのメッセージレコードです。


TWMGetMinMaxInfo 型
TWMGetMinMaxInfo 型15361

参照

ユニット

Messages

宣言

type
  TWMGetMinMaxInfo = record
    Msg: Cardinal;
    Unused: Integer;
    MinMaxInfo: PMinMaxInfo;
    Result: Longint;
  end;

説明

TWMGetMinMaxInfo 型は WM_GETMINMAXINFO メッセージのメッセージレコードです。


TWMGetText 型
TWMGetText 型15362

参照

ユニット

Messages

宣言

type
  TWMGetText = record
    Msg: Cardinal;
    TextMax: Integer;
    Text: PChar;
    Result: Longint;
  end;

説明

TWMGetText 型は WM_GETTEXT メッセージのメッセージレコードです。


TWMGetTextLength 型
TWMGetTextLength 型15363

参照

ユニット

Messages

宣言

type
  TWMGetTextLength = TWMNoParams;

説明

TWMGetTextLength 型は WM_GETTEXTLENGTH メッセージのメッセージレコードです。


TWMHelp 型
TWMHelp 型15364

参照

ユニット

Messages

宣言

type
  TWMHelp = record
    Msg: Cardinal;
    Unused: Integer;
    HelpInfo: PHelpInfo;
    Result: Longint;
  end;

説明

TWMHelp 型は WM_HELP メッセージのメッセージレコードです。


TWMHScroll 型
TWMHScroll 型15365

参照

ユニット

Messages

宣言

type
  TWMHScroll = TWMScroll;

説明

TWMHScroll 型は WM_HSCROLL メッセージのメッセージレコードです。


TWMHScrollClipboard 型
TWMHScrollClipboard 型15366

参照

ユニット

Messages

宣言

type
  TWMHScrollClipboard = record
    Msg: Cardinal;
    Viewer: HWND;
    ScrollCode: Word;
    Pos: Word;
    Result: Longint;
  end;

説明

TWMHScrollClipboard 型は WM_HSCROLLCLIPBOARD メッセージのメッセージレコードです。


TWMIconEraseBkgnd 型
TWMIconEraseBkgnd 型15367

参照

ユニット

Messages

宣言

type
  TWMIconEraseBkgnd = TWMEraseBkgnd;

説明

TWMIconEraseBkgnd 型は WM_ICONERASEBKGND メッセージのメッセージレコードです。


TWMInitDialog 型
TWMInitDialog 型15368

参照

ユニット

Messages

宣言

type
  TWMInitDialog = record
    Msg: Cardinal;
    Focus: HWND;
    InitParam: Longint;
    Result: Longint;
  end;

説明

TWMInitDialog 型は WM_INITDIALOG メッセージのメッセージレコードです。


TWMInitMenu 型
TWMInitMenu 型15369

参照

ユニット

Messages

宣言

type
  TWMInitMenu = record
    Msg: Cardinal;
    Menu: HMENU;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMInitMenu 型は WM_INITMENU メッセージのメッセージレコードです。


TWMInitMenuPopup 型
TWMInitMenuPopup 型15370

参照

ユニット

Messages

宣言

type
  TWMInitMenuPopup = record
    Msg: Cardinal;
    MenuPopup: HMENU;
    Pos: SmallInt;
    SystemMenu: BOOL;
    Result: Longint;
  end;

説明

TWMInitMenuPopup 型は WM_INITMENUPOPUP メッセージのメッセージレコードです。


TWMKey 型
TWMKey 型15371

参照

ユニット

Messages

宣言

type
  TWMKey = record
    Msg: Cardinal;
    CharCode: Word;
    KeyData: Longint;
    Result: Longint;
  end;

説明

TWMKey 型は，すべての Windows キーボードメッセージのメッセージレコードです。TWMKeyDown と TWMKeyUp は，TWMKey の宣言とまったく同じです。


TWMKeyDown 型
TWMKeyDown 型15372

参照

ユニット

Messages

宣言

type
  TWMKeyDown = TWMKey;

説明

TWMKeyDown 型は WM_KEYDOWN メッセージのメッセージレコードです。


TWMKeyUp 型
TWMKeyUp 型15373

参照

ユニット

Messages

宣言

type
  TWMKeyUp = TWMKey;

説明

TWMKeyUp 型は WM_KEYUP メッセージのメッセージレコードです。


TWMKillFocus 型
TWMKillFocus 型15374

参照

ユニット

Messages

宣言

type
  TWMKillFocus = record
    Msg: Cardinal;
    FocusedWnd: HWND;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMKillFocus 型は WM_KILLFOCUS メッセージのメッセージレコードです。


TWMLButtonDblClk 型
TWMLButtonDblClk 型15375

参照

ユニット

Messages

宣言

type
  TWMLButtonDblClk = TWMMouse;

説明

TWMLButtonDblClk 型は WM_LBUTTONDBLCLK メッセージのメッセージレコードです。


TWMLButtonDown 型
TWMLButtonDown 型15376

参照

ユニット

Messages

宣言

type
  TWMLButtonDown = TWMMouse;

説明

TWMLButtonDown 型は WM_LBUTTONDOWN メッセージのメッセージレコードです。


TWMLButtonUp 型
TWMLButtonUp 型15377

参照

ユニット

Messages

宣言

type
  TWMLButtonUp = TWMMouse;

説明

TWMLButtonUp 型は WM_LBUTTONUP メッセージのメッセージレコードです。


TWMMButtonDblClk 型
TWMMButtonDblClk 型15378

参照

ユニット

Messages

宣言

type
  TWMMButtonDblClk = TWMMouse;

説明

TWMMButtonDblClk 型は WM_MBUTTONDBLCLK メッセージのメッセージレコードです。


TWMMButtonDown 型
TWMMButtonDown 型15379

参照

ユニット

Messages

宣言

type
  TWMMButtonDown = TWMMouse;

説明

TWMMButtonDown 型は WM_MBUTTONDOWN メッセージのメッセージレコードです。


TWMMButtonUp 型
TWMMButtonUp 型15380

参照

ユニット

Messages

宣言

type
  TWMMButtonUp = TWMMouse;

説明

TWMMButtonUp 型は WM_MBUTTONUP メッセージのメッセージレコードです。


TWMMDIActivate 型
TWMMDIActivate 型15381

参照

ユニット

Messages

宣言

type
  TWMMDIActivate = record
    Msg: Cardinal;
    Activate: BOOL;
    ActiveWnd: HWND;
    DeactiveWnd: HWND;
    Result: Longint;
  end;

説明

TWMMDIActivate 型は WM_MDIACTIVATE メッセージのメッセージレコードです。


TWMMDICascade 型
TWMMDICascade 型15382

参照

ユニット

Messages

宣言

type
  TWMMDICascade = record
    Msg: Cardinal;
    Cascade: Word;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMMDICascade 型は WM_MDICASCADE メッセージのメッセージレコードです。


TWMMDICreate 型
TWMMDICreate 型15383

参照

ユニット

Messages

宣言

type
  TWMMDICreate = record
    Msg: Cardinal;
    Unused: Integer;
    MDICreateStruct: PMDICreateStruct;
    Result: Longint;
  end;

説明

TWMMDICreate 型は WM_MDICREATE メッセージのメッセージレコードです。


TWMMDIDestroy 型
TWMMDIDestroy 型15384

参照

ユニット

Messages

宣言

type
  TWMMDIDestroy = record
    Msg: Cardinal;
    Child: HWND;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMMDIDestroy 型は WM_MDIDESTROY メッセージのメッセージレコードです。


TWMMDIGetActive 型
TWMMDIGetActive 型15385

参照

ユニット

Messages

宣言

type
  TWMMDIGetActive = TWMNoParams;

説明

TWMMDIGetActive 型は WM_MDIGETACTIVE メッセージのメッセージレコードです。


TWMMDIIconArrange 型
TWMMDIIconArrange 型15386

参照

ユニット

Messages

宣言

type
  TWMMDIIconArrange = TWMNoParams;

説明

TWMMDIIconArrange 型は WM_MDIICONARRANGE メッセージのメッセージレコードです。


TWMMDIMaximize 型
TWMMDIMaximize 型15387

参照

ユニット

Messages

宣言

type
  TWMMDIMaximize = record
    Msg: Cardinal;
    Maximize: HWND;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMMDIMaximize 型は WM_MDIMAXIMIZE メッセージのメッセージレコードです。


TWMMDINext 型
TWMMDINext 型15388

参照

ユニット

Messages

宣言

type
  TWMMDINext = record
    Msg: Cardinal;
    Child: HWND;
    Next: Longint;
    Result: Longint;
  end;

説明

TWMMDINext 型は WM_MDINEXT メッセージのメッセージレコードです。


TWMMDIRestore 型
TWMMDIRestore 型15389

参照

ユニット

Messages

宣言

type
  TWMMDIRestore = record
    Msg: Cardinal;
    IDChild: HWND;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMMDIRestore 型は WM_MDIRESTORE メッセージのメッセージレコードです。


TWMMDISetMenu 型
TWMMDISetMenu 型15390

参照

ユニット

Messages

宣言

type
  TWMMDISetMenu = record
    Msg: Cardinal;
    MenuFrame: HMENU;
    MenuWindow: HMENU;
    Result: Longint;
  end;

説明

TWMMDISetMenu 型は WM_MDISETMENU メッセージのメッセージレコードです。


TWMMDITile 型
TWMMDITile 型15391

参照

ユニット

Messages

宣言

type
  TWMMDITile = record
    Msg: Cardinal;
    Tile: Word;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMMDITile 型は WM_MDITILE メッセージのメッセージレコードです。


TWMMeasureItem 型
TWMMeasureItem 型15392

参照

ユニット

Messages

宣言

type
  TWMMeasureItem = record
    Msg: Cardinal;
    IDCtl: Word;
    MeasureItemStruct: PMeasureItemStruct;
    Result: Longint;
  end;

説明

TWMMeasureItem 型は WM_MEASUREITEM メッセージのメッセージレコードです。


TWMMenuChar 型
TWMMenuChar 型15393

参照

ユニット

Messages

宣言

type
  TWMMenuChar = record
    Msg: Cardinal;
    User: Char;
    Unused: Byte;
    MenuFlag: Word;
    Menu: HMENU;
    Result: Longint;
  end;

説明

TWMMenuChar 型は WM_MENUCHAR メッセージのメッセージレコードです。


TWMMenuSelect 型
TWMMenuSelect 型15394

参照

ユニット

Messages

宣言

type
  TWMMenuSelect = record
    Msg: Cardinal;
    IDItem: Word;
    MenuFlag: Word;
    Menu: HMENU;
    Result: Longint;
  end;

説明

TWMMenuSelect 型は WM_MENUSELECT メッセージのメッセージレコードです。


TWMMouse 型
TWMMouse 型15395

参照

ユニット

Messages

宣言

type
  TWMMouse = record
    Msg: Cardinal;
    Keys: Word;
    case Integer of
      0: (
        XPos: Integer;
        YPos: Integer);
      1: (
        Pos: TPoint;
        Result: Longint);
  end;

説明

TWMMouse 型はすべてのマウスメッセージのメッセージレコードです。


TWMMouseActivate 型
TWMMouseActivate 型15396

参照

ユニット

Messages

宣言

type
  TWMMouseActivate = record
    Msg: Cardinal;
    TopLevel: HWND;
    HitTestCode: Word;
    MouseMsg: Word;
    Result: Longint;
  end;

説明

TWMMouseActivate 型は WM_MOUSEACTIVATE メッセージのメッセージレコードです。


TWMMouseMove 型
TWMMouseMove 型15397

参照

ユニット

Messages

宣言

type
  TWMMouseMove = TWMMouse;

説明

TWMMouseMove 型は WM_MOUSEMOVE メッセージのメッセージレコードです。


TWMMove 型
TWMMove 型15398

参照

ユニット

Messages

宣言

type
  TWMMove = record
    Msg: Cardinal;
    Unused: Integer;
    case Integer of
      0: (
        XPos: SmallInt;
        YPos: SmallInt);
      1: (
        Pos: TPoint;
        Result: Longint);
  end;

説明

TWMMove 型は WM_MOVE メッセージのメッセージレコードです。


TWMNCActivate 型
TWMNCActivate 型15399

参照

ユニット

Messages

宣言

type
  TWMNCActivate = record
    Msg: Cardinal;
    Active: BOOL;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMNCActivate 型は WM_NCACTIVATE メッセージのメッセージレコードです。


TWMNCCalcSize 型
TWMNCCalcSize 型15400

参照

ユニット

Messages

宣言

type
  TWMNCCalcSize = record
    Msg: Cardinal;
    CalcValidRects: BOOL;
    CalcSize_Params: PNCCalcSize_Params;
    Result: Longint;
  end;

説明

TWMNCCALCSIZE 型は WM_NCCALCSIZE メッセージのメッセージレコードです。


TWMNCCreate 型
TWMNCCreate 型15401

参照

ユニット

Messages

宣言

type
  TWMNCCreate = record
    Msg: Cardinal;
    Unused: Integer;
    CreateStruct: PCreateStruct;
    Result: Longint;
  end;

説明

TWMNCCreate 型は WM_NCCREATE メッセージのメッセージレコードです。


TWMNCDestroy 型
TWMNCDestroy 型15402

参照

ユニット

Messages

宣言

type
  TWMNCDestroy = TWMNoParams;

説明

TWMNCDestroy 型は WM_NCDESTROY メッセージのメッセージレコードです。


TWMNCHitTest 型
TWMNCHitTest 型15403

参照

ユニット

Messages

宣言

type
  TWMNCHitTest = record
    Msg: Cardinal;
    Unused: Cardinal;
    case Integer of
      0: (
        XPos: SmallInt;
        YPos: SmallInt);
      1: (
        Pos: TSmallPoint;
        Result: Longint);
  end;

説明

TWMNCHitTest 型は WM_NCHITTEST メッセージのメッセージレコードです。


TWMNCHitMessage 型
TWMNCHitMessage 型15404

参照

ユニット

Messages

宣言

type
  TWMNCHitMessage = record
    Msg: Cardinal;
    HitTest: Integer;
    XCursor: SmallInt;
    YCursor: SmallInt;
    Result: Longint;
  end;

説明

TWMNCHitMessage 型は，すべての非クライアント領域マウスメッセージのメッセージレコードです。


TWMNCLButtonDblClk 型
TWMNCLButtonDblClk 型15405

参照

ユニット

Messages

宣言

type
  TWMNCLButtonDblClk  = TWMNCHitMessage;

説明

TWMNCLButtonDblClk 型は WM_NCLBUTTONDBLCLK メッセージのメッセージレコードです。


TWMNCLButtonDown 型
TWMNCLButtonDown 型15406

参照

ユニット

Messages

宣言

type
  TWMNCLButtonDown = TWMNCHitMessage;

説明

TWMNCLButtonDown 型は WM_NCLBUTTONDOWN メッセージのメッセージレコードです。


TWMNCLButtonUp 型
TWMNCLButtonUp 型15407

参照

ユニット

Messages

宣言

type
  TWMNCLButtonUp = TWMNCHitMessage;

説明

TWMNCLButtonUp 型は WM_NCLBUTTONUP メッセージのメッセージレコードです。


TWMNCMButtonDblClk 型
TWMNCMButtonDblClk 型15408

参照

ユニット

Messages

宣言

type
  TWMNCMButtonDblClk = TWMNCHitMessage;

説明

TWMNCMButtonDblClk 型は WM_NCMBUTTONDBLCLK メッセージのメッセージレコードです。


TWMNCMButtonDown 型
TWMNCMButtonDown 型15409

参照

ユニット

Messages

宣言

type
  TWMNCMButtonDown = TWMNCHitMessage;

説明

TWMNCMButtonDown 型は WM_NCMBUTTONDOWN メッセージのメッセージレコードです。


TWMNCMButtonUp 型
TWMNCMButtonUp 型15410

参照

ユニット

Messages

宣言

type
  TWMNCMButtonUp = TWMNCHitMessage;

説明

TWMNCMButtonUp 型は WM_NCMBUTTONUP メッセージのメッセージレコードです。


TWMNCMouseMove 型
TWMNCMouseMove 型15411

参照

ユニット

Messages

宣言

type
  TWMNCMouseMove = TWMNCHitMessage;

説明

TWMNCMouseMove 型は WM_NCMOUSEMOVE メッセージのメッセージレコードです。


TWMNCPaint 型
TWMNCPaint 型15412

参照

ユニット

Messages

宣言

type
  TWMNCPaint = TWMNoParams;

説明

TWMNCPaint 型は WM_NCPaint メッセージのメッセージレコードです。


TWMNCRButtonDblClk 型
TWMNCRButtonDblClk 型15413

参照

ユニット

Messages

宣言

type
  TWMNCRButtonDblClk = TWMNCHitMessage;

説明

TWMNCRButtonDblClk 型は WM_NCRBUTTONDBLCLK メッセージのメッセージレコードです。


TWMNCRButtonDown 型
TWMNCRButtonDown 型15414

参照

ユニット

Messages

宣言

type
  TWMNCRButtonDown = TWMNCHitMessage;

説明

TWMNCRButtonDown 型は WM_NCRBUTTONDOWN メッセージのメッセージレコードです。


TWMNCRButtonUp 型
TWMNCRButtonUp 型15415

参照

ユニット

Messages

宣言

type
  TWMNCRButtonUp = TWMNCHitMessage;

説明

TWMNCRButtonUp 型は WM_NCRBUTTONUP メッセージのメッセージレコードです。


TWMNextDlgCtl 型
TWMNextDlgCtl 型15416

参照

ユニット

Messages

宣言

type
  TWMNextDlgCtl = record
    Msg: Cardinal;
    CtlFocus: Word;
    Handle: BOOL;
    Unused: Word;
    Result: Longint;
  end;

説明

TWMNextDlgCtl 型は WM_NEXTDLGCTL メッセージのメッセージレコードです。


TWMNoParams 型
TWMNoParams 型15417

参照

ユニット

Messages

宣言

type
  TWMNoParams = record
    Msg: Cardinal;
    Unused: array[0..2] of Word;
    Result: Longint;
  end;

説明

TWMNoParams 型は，パラメータにひとつも使われていないすべてのメッセージのメッセージレコードです。


TWMPaint 型
TWMPaint 型15418

参照

ユニット

Messages

宣言

type
  TWMPaint = record
    Msg: Cardinal;
    DC: HDC;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMPaint 型は WM_PAINT メッセージのメッセージレコードです。


TWMPaintClipboard 型
TWMPaintClipboard 型15419

参照

ユニット

Messages

宣言

type
  TWMPaintClipboard = record
    Msg: Cardinal;
    Viewer: HWND;
    PaintStruct: THANDLE;
    Unused: Word;
    Result: Longint;
  end;

説明

TWMPaintClipboard 型は WM_PAINTCLIPBOARD メッセージのメッセージレコードです。


TWMPaintIcon 型
TWMPaintIcon 型15420

参照

ユニット

Messages

宣言

type
  TWMPaintIcon = TWMNoParams;

説明

TWMPaintIcon 型は WM_PAINTICON メッセージのメッセージレコードです。


TWMPaletteChanged 型
TWMPaletteChanged 型15421

参照

ユニット

Messages

宣言

type
  TWMPaletteChanged = record
    Msg: Cardinal;
    PalChg: HWND;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMPaletteChanged 型は WM_PALETTECHANGED メッセージのメッセージレコードです。


TWMPaletteIsChanging 型
TWMPaletteIsChanging 型15422

参照

ユニット

Messages

宣言

type
  TWMPaletteIsChanging = record
    Msg: Cardinal;
    Realize: HWND;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMPaletteIsChanging 型は WM_PALETTEISCHANGING メッセージのメッセージレコードです。


TWMParentNotify 型
TWMParentNotify 型15423

参照

ユニット

Messages

宣言

type
  TWMParentNotify = record
    Msg: Cardinal;
    case Event: Word of
      WM_CREATE, WM_DESTROY: (
        ChildWnd: HWND;
        ChildID: Word);
      WM_LBUTTONDOWN, WM_MBUTTONDOWN, WM_RBUTTONDOWN: (
        XPos: Integer;
        YPos: Integer);
      0 { Name is MS DOC }: (
        Value1: Word;
        Value2: Word;
        Result: Longint);
  end;

説明

TWMParentNotify 型は WM_PARENTNOTIFY メッセージのメッセージレコードです。


TWMPaste 型
TWMPaste 型15424

参照

ユニット

Messages

宣言

type
  TWMPaste = TWMNoParams;

説明

TWMPaste 型は WM_PASTE メッセージのメッセージレコードです。


TWMPower 型
TWMPower 型15425

参照

ユニット

Messages

宣言

type
  TWMPower = record
    Msg: Cardinal;
    PowerEvt: Word;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMPower 型は WM_POWER メッセージのメッセージレコードです。


TWMQueryDragIcon 型
TWMQueryDragIcon 型15426

参照

ユニット

Messages

宣言

type
  TWMQueryDragIcon = TWMNoParams;

説明

TWMQueryDragIcon 型は WM_QUERYDRAGICON メッセージのメッセージレコードです。


TWMQueryEndSession 型
TWMQueryEndSession 型15427

参照

ユニット

Messages

宣言

type
  TWMQueryEndSession = TWMNoParams;

説明

TWMQueryEndSession 型は WM_QUERYENDSESSION メッセージのメッセージレコードです。


TWMQueryNewPalette 型
TWMQueryNewPalette 型15428

参照

ユニット

Messages

宣言

type
  TWMQueryNewPalette = TWMNoParams;

説明

TWMQueryNewPalette 型は WM_QUERYNEWPALETTE メッセージのメッセージレコードです。


TWMQueryOpen 型
TWMQueryOpen 型15429

参照

ユニット

Messages

宣言

type
  TWMQueryOpen = TWMNoParams;

説明

TWMQueryOpen 型は WM_QUERYOPEN メッセージのメッセージレコードです。


TWMQueueSync 型
TWMQueueSync 型15430

参照

ユニット

Messages

宣言

type
  TWMQueueSync = TWMNoParams;

説明

TWMQueueSync 型は WM_QUEUESYNC メッセージのメッセージレコードです。


TWMQuit 型
TWMQuit 型15431

参照

ユニット

Messages

宣言

type
  TWMQuit = record
    Msg: Cardinal;
    ExitCode: Word;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMQuit 型は WM_QUIT メッセージのメッセージレコードです。


TWMRButtonDblClk 型
TWMRButtonDblClk 型15432

参照

ユニット

Messages

宣言

type
  TWMRButtonDblClk = TWMMouse;

説明

TWMRButtonDblClk 型は WM_RBUTTONDBLCLK メッセージのメッセージレコードです。


TWMRButtonDown 型
TWMRButtonDown 型15433

参照

ユニット

Messages

宣言

type
  TWMRButtonDown = TWMMouse;

説明

TWMRButtonDown 型は WM_RBUTTONDOWN メッセージのメッセージレコードです。


TWMRButtonUp 型
TWMRButtonUp 型15434

参照

ユニット

Messages

宣言

type
  TWMMRButtonUp = TWMMouse;

説明

TWMRButtonUp 型は WM_RBUTTONUP メッセージのメッセージレコードです。


TWMRenderAllFormats 型
TWMRenderAllFormats 型15435

参照

ユニット

Messages

宣言

type
  TWMRenderAllFormats = TWMNoParams;

説明

TWMRenderAllFormats 型は WM_RENDERALLFORMATS メッセージのメッセージレコードです。


TWMRenderFormat 型
TWMRenderFormat 型15436

参照

ユニット

Messages

宣言

type
  TWMRenderFormat = record
    Msg: Cardinal;
    Format: Word;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMRenderFormat 型は WM_RENDERFORMAT メッセージのメッセージレコードです。


TWMScroll 型
TWMScroll 型15437

参照

ユニット

Messages

宣言

type
  TWMScroll = record
    Msg: Cardinal;
    ScrollCode: SmallInt;
    Pos: SmallInt;
    ScrollBar: HWND;
    Result: Longint;
  end;

説明

TWMScroll 型は，すべてのスクロールメッセージのメッセージレコードです。


TWMSetCursor 型
TWMSetCursor 型15438

参照

ユニット

Messages

宣言

type
  TWMSetCursor = record
    Msg: Cardinal;
    CursorWnd: HWND;
    HitTest: Word;
    MouseMsg: Word;
    Result: Longint;
  end;

説明

TWMSetCursor 型は WM_SETCURSOR メッセージのメッセージレコードです。


TWMSetFocus 型
TWMSetFocus 型15439

参照

ユニット

Messages

宣言

type
  TWMSetFocus = record
    Msg: Cardinal;
    FocusedWnd: HWND;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMSetFocus 型は WM_SETFOCUS メッセージのメッセージレコードです。


TWMSetFont 型
TWMSetFont 型15440

参照

ユニット

Messages

宣言

type
  TWMSetFont = record
    Msg: Cardinal;
    Font: HFONT;
    Redraw: BOOL;
    Unused: Word;
    Result: Longint;
  end;

説明

TWMSetFont 型は WM_SETFONT メッセージのメッセージレコードです。


TWMSetRedraw 型
TWMSetRedraw 型15441

参照

ユニット

Messages

宣言

type
  TWMSetRedraw = record
    Msg: Cardinal;
    Redraw: Word;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMSetRedraw 型は WM_SETREDRAW メッセージのメッセージレコードです。


TWMSetText 型
TWMSetText 型15442

参照

ユニット

Messages

宣言

type
  TWMSetText = record
    Msg: Cardinal;
    Unused: Integer;
    Text: PChar;
    Result: Longint;
  end;

説明

TWMSetText 型は WM_SETTEXT メッセージのメッセージレコードです。


TWMShowWindow 型
TWMShowWindow 型15443

参照

ユニット

Messages

宣言

type
  TWMShowWindow = record
    Msg: Cardinal;
    Show: BOOL;
    Status: Word;
    Unused: Word;
    Result: Longint;
  end;

説明

TWMShowWindow 型は WM_SHOWWINDOW メッセージのメッセージレコードです。


TWMSize 型
TWMSize 型15444

参照

ユニット

Messages

宣言

type
  TWMSize = record
    Msg: Cardinal;
    SizeType: Word;
    Width: Word;
    Height: Word;
    Result: Longint;
  end;

説明

TWMSize 型は WM_SIZE メッセージのメッセージレコードです。


TWMSizeClipboard 型
TWMSizeClipboard 型15445

参照

ユニット

Messages

宣言

type
  TWMSizeClipboard = record
    Msg: Cardinal;
    Viewer: HWND;
    RC: THandle;
    Unused: Word;
    Result: Longint;
  end;

説明

TWMSizeClipboard 型は WM_SIZECLIPBOARD メッセージのメッセージレコードです。


TWMSpoolerStatus 型
TWMSpoolerStatus 型15446

参照

ユニット

Messages

宣言

type
  TWMSpoolerStatus = record
    Msg: Cardinal;
    JobStatus: Word;
    JobsLeft: Word;
    Unused: Word;
    Result: Longint;
  end;

説明

TWMSpoolerStatus 型は WM_SPOOLERSTATUS メッセージのメッセージレコードです。


TWMSysChar 型
TWMSysChar 型15447

参照

ユニット

Messages

宣言

type
  TWMSysChar = TWMKey;

説明

TWMSysChar 型は WM_SYSCHAR メッセージのメッセージレコードです。


TWMSysColorChange 型
TWMSysColorChange 型15448

参照

ユニット

Messages

宣言

type
  TWMSysColorChange = TWMNoParams;

説明

TWMSysColorChange 型は WM_SYSCOLORCHANGE メッセージのメッセージレコードです。


TWMSysCommand 型
TWMSysCommand 型15449

参照

ユニット

Messages

宣言

type
  TWMSysCommand = record
    Msg: Cardinal;
    case CmdType: Word of
      SC_HOTKEY: (
        ActivateWnd: HWND;
        Unused1: Word);
      SC_KEYMENU: (
        Key: Word;
        Unused2: Word);
      SC_CLOSE, SC_HSCROLL, SC_MAXIMIZE, SC_MINIMIZE, SC_MOUSEMENU, SC_MOVE,
      SC_NEXTWINDOW, SC_PREVWINDOW, SC_RESTORE, SC_SCREENSAVE, SC_SIZE,
      SC_TASKLIST, SC_VSCROLL: (
        XPos: SmallInt;
        YPos: SmallInt;
        Result: Longint);
  end;

説明

TWMSysCommand 型は WM_SYSCOMMAND メッセージのメッセージレコードです。


TWMSysDeadChar 型
TWMSysDeadChar 型15450

参照

ユニット

Messages

宣言

type
  TWMSysDeadChar = record
    Msg: Cardinal;
    DeadKey: Char;
    Unused: Byte;
    RepeatCount: Integer;
    AutoRepeat: Word;
    Result: Longint;
  end;

説明

TWMSysDeadChar 型は WM_SYSDEADCHAR メッセージのメッセージレコードです。


TWMSysKeyDown 型
TWMSysKeyDown 型15451

参照

ユニット

Messages

宣言

type
  TWMSysKeyDown = TWMKey;

説明

TWMSysKeyDown 型は WM_SYSKEYDOWN メッセージのメッセージレコードです。


TWMSysKeyUp 型
TWMSysKeyUp 型15452

参照

ユニット

Messages

宣言

type
  TWMSysKeyUp = TWMKey;

説明

TWMSysKeyUp 型は WM_SYSKEYUP メッセージのメッセージレコードです。


TWMSystemError 型
TWMSystemError 型15453

参照

ユニット

Messages

宣言

type
  TWMSystemError = record
    Msg: Cardinal;
    ErrSpec: Word;
    Unused: Longint;
    Result: Longint;
  end;

説明

TWMSystemError 型は WM_SYSTEMERROR メッセージのメッセージレコードです。


TWMTimeChange 型
TWMTimeChange 型15454

参照

ユニット

Messages

宣言

type
  TWMTimeChange = TWMNoParams;

説明

TWMTimeChange 型は WM_TIMECHANGE メッセージのメッセージレコードです。


TWMTimer 型
TWMTimer 型15455

参照

ユニット

Messages

宣言

type
  TWMTimer = record
    Msg: Cardinal;
    TimerID: Word;
    TimerProc: TFarProc;
    Result: Longint;
  end;

説明

TWMTimer 型は WM_TIMER メッセージのメッセージレコードです。


TWMUndo 型
TWMUndo 型15456

参照

ユニット

Messages

宣言

type
  TWMUndo = TWMNoParams;

説明

TWMUndo 型は WM_UNDO メッセージのメッセージレコードです。


TWMVKeyToItem 型
TWMVKeyToItem 型15457

参照

ユニット

Messages

宣言

type
  TWMVKeyToItem = TWMCharToItem;

説明

TWMVKeyToItem 型は WM_VKEYTOITEM メッセージのメッセージレコードです。


TWMVScroll 型
TWMVScroll 型15458

参照

ユニット

Messages

宣言

type
  TWMVScroll = TWMScroll;

説明

TWMVScroll 型は WM_VSCROLL メッセージのメッセージレコードです。


TWMVScrollClipboard 型
TWMVScrollClipboard 型15459

参照

ユニット

Messages

宣言

type
  TWMVScrollClipboard = record
    Msg: Cardinal;
    Viewer: HWND;
    ScollCode: Word;
    ThumbPos: Word;
    Result: Longint;
  end;

説明

TWMVScrollClipboard 型は WM_CSCROLLCLIPBOARD メッセージのメッセージレコードです。


TWMWindowPosMsg 型
TWMWindowPosMsg 型15460

参照

ユニット

Messages

宣言

type
  TWMWindowPosMsg = record
    Msg: Cardinal;
    Unused: Integer;
    WindowPos: PWindowPos;
    Result: Longint;
  end;

説明

TWMWindowPosMsg 型はウィンドウ位置メッセージのメッセージレコードです。 TWMWindowPosChanged と TWMWindowPosChanging は，TWMWindowPosMsg 型の宣言にあるものと同じです。


TWMWindowPosChanged 型
TWMWindowPosChanged 型15461

参照

ユニット

Messages

宣言

type
  TWMWindowPosChanged = TWMWindowPosMsg;

説明

TWMWindowPosChanged 型は WM_WINDOWPOSCHANGED メッセージのメッセージレコードです。


TWMWindowPosChanging 型
TWMWindowPosChanging 型15462

参照

ユニット

Messages

宣言

type
  TWMWindowPosChanging = TWMWindowPosMsg;

説明

TWMWindowPosChanging 型は WM_WINDOWPOSCHANGING メッセージのメッセージレコードです。


TWMWinIniChange 型
TWMWinIniChange 型15463

参照

ユニット

Messages

宣言

type
  TWMWinIniChange = record
    Msg: Cardinal;
    Unused: Integer;
    Section: PChar;
    Result: Longint;
  end;

説明

TWMWinIniChange 型は WM_WININICHANGE メッセージのメッセージレコードです。


BoxRect メソッド
BoxRect メソッド15464

適用

TCustomGrid

宣言

function BoxRect(ALeft, ATop, ARight, ABottom: Longint): TRect;

説明

BoxRect メソッドはグリッドセル群の四角形を画面のピクセルで返します。ALeft と ATop の各パラメータには四角形の左上隅の列と行の番号を指定します。ARight と ABottom の各パラメータには四角形の右下隅の列と行の番号を指定します。

指定した四角形がグリッド内で一部しか表示されない場合，四角形の表示部分のピクセル値だけが返されます。指定した四角形がまったく表示されない場合，空の四角形が返されます。


CanEditAcceptKey メソッド
CanEditAcceptKey メソッド15465

参照

適用

TCustomGrid

宣言

function CanEditAcceptKey(Key: Char): Boolean; dynamic;

説明

CanEditAcceptKey メソッドは，編集されているグリッドセルがユーザーの押したキーを受け付けるかを判定します。CanEditAcceptKey は，goEditing が True に設定されたグリッドのセルにフォーカスがあるときにユーザーがキーを押すと呼び出されます。Key パラメータは押されたキーを指定します。

たとえば，グリッドセルに数の入力だけを許す EditMask がある場合，CanEditAcceptKey は 7 が押されたときには True, W が押されたときには False を返します。


参照
参照15466

CanEditModify メソッド


CanEditModify メソッド
CanEditModify メソッド15467

参照

適用

TCustomGrid

宣言

function CanEditModify: Boolean; dynamic;

説明

CanEditModify メソッドはグリッドセルが修正可能であるかを判定します。CanEditModify はグリッドのセルにフォーカスがあるときにユーザーがキーを押すと呼び出されます。CanEditModify はセルの内容が修正可能ならば True，読み出し専用ならば False を返します。

たとえば，ユーザーが goEditing が False に設定されたグリッドのセルを編集しようとすると，CanEditModify は False を返します。


参照
参照15468

CanEditAcceptKey メソッド


CanEditShow メソッド
CanEditShow メソッド15469

参照

適用

TCustomGrid

宣言

function CanEditShow: Boolean; virtual;

説明

CanEditShow メソッドは編集されているセルの TInPlaceEdit コンポーネントが表示されるかを判定します。インプレースエディタが表示される場合，CanEditShow は True を返します。インプレースエディタが表示されない場合，CanEditShow は False を返します。

CanEditShow メソッドを使うと，グリッドセルが通常であればデフォルトで表示されるのを表示されないようにできます。このために CanEditShow を変更するには，まず継承された CanEditShow メソッドを呼び出し，それからアプリケーションの状況によりインプレースエディタを表示しないようにするコードを追加します。


参照
参照15470

HideEditor メソッド

ShowEditor メソッド


ColumnMoved メソッド
ColumnMoved メソッド15471

参照

適用

TCustomGrid

宣言

procedure ColumnMoved(FromIndex, ToIndex: Longint); dynamic;

説明

ColumnMoved メソッドはカスタムグリッドの OnColumnMoved イベントハンドラ用のプロテクトメソッドです。ColumnMoved メソッドは OnColumnMoved イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。ColumnMoved をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。

ColumnMoved メソッドは Options プロパティの goColMoving が設定されたグリッドでユーザーが列を移動すると呼び出されます。FromIndex パラメータは移動前の列のインデックス (Col プロパティに対応) を指定します。ToIndex パラメータは移動先の列のインデックスを指定します。ColumnMoved メソッドは列を移動するときに基になるデータを移動するために使います。


参照
参照15472

RowMoved メソッド


ColWidthsChanged メソッド
ColWidthsChanged メソッド15473

参照

適用

TCustomGrid

宣言

procedure ColWidthsChanged; dynamic;

説明

ColWidthsChanged メソッドは，Options プロパティの goColSizing が設定されたグリッドでユーザーが列の幅を変更すると呼び出されます。ColWidthsChanged は，列の幅によっては列のセルを再描画する必要がある場合に変更します。たとえば，列の幅に合わせて引き伸ばされるビットマップがセルにある場合，ColWidthsChanged メソッドを使って列のセルを再描画します。


参照
参照15474

ColWidths プロパティ

RowHeightsChanged メソッド


CreateEditor メソッド
CreateEditor メソッド15475

適用

TCustomGrid

宣言

function CreateEditor: TInplaceEdit; virtual;

説明

CreateEditor メソッドはグリッドのインプレースエディタを作成します。


DrawCell メソッド
DrawCell メソッド15476

適用

TCustomGrid

宣言

procedure DrawCell(ACol, ARow: Longint; ARect: TRect;
  AState: TGridDrawState); virtual; abstract;

説明

DrawCell メソッドはカスタムグリッドの OnDrawCell イベントハンドラ用のプロテクトメソッドです。DrawCell メソッドは OnDrawCell イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。DrawCell をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。

ACol パラメータと ARow パラメータはセルの列と行の座標をそれぞれ指定します。ARect パラメータは描画する四角形の領域 (ピクセル単位の座標で示される) です。AState パラメータは，セルに関する状態情報 (選択されている，フォーカスがある，固定されている) を指定します。


FGridState フィールド
FGridState フィールド15477

適用

TCustomGrid

宣言

FGridState: TGridState;

説明

FGridState フィールドはグリッドの現在の状態を反映します。FGridState の値を次に示します。

値	意味

gsNormal	グリッドは通常の状態 (移動されていない，サイズを変更されていない，選択されていない) で表示されている

gsColMoving	グリッドの列を移動中

gsColSizing	グリッドの列のサイズを変更中

gsRowMoving	グリッドの行を移動中

gsRowSizing	グリッドの行のサイズを変更中

gsSelecting	グリッドでセルまたはセルのグループが選択されている


FSaveCellExtents フィールド
FSaveCellExtents フィールド15478

適用

TCustomGrid

宣言

FSaveCellExtents: Boolean;

説明

FSaveCellExtents フィールドはグリッドのセル範囲情報が .DFM ファイルに格納されるかを決めます。セル範囲情報を .DFM ファイルに保存するには FSaveCellExtents を True に，その他の場所に保存するには False に設定します。たとえば，TDBGrid のセル範囲情報 は .DFM ファイルのグリッド情報とではなく TField オブジェクト情報と一緒に保存されます。


GetEditLimit メソッド
GetEditLimit メソッド15479

参照

適用

TCustomGrid

宣言

function GetEditLimit: Integer; dynamic;

説明

GetEditLimit メソッドはグリッドのセルのインプレースエディタに表示できる文字の最大数を返します。GetEditLimit メソッドはテキストの文字数の制限を判定するために，セルを表示する直前に呼び出されます。


参照
参照15480

GetEditMask メソッド

GetEditText メソッド


GetEditMask メソッド
GetEditMask メソッド15481

参照

適用

TCustomGrid

宣言

function GetEditMask(ACol, ARow: Longint): string; dynamic;

説明

GetEditMask メソッドはグリッドのセルの編集マスクを返します。ACol パラメータと ARow パラメータはセルの列と行をそれぞれ指定します。返される文字列は EditMask プロパティの機能を実行するセルの編集マスクです。GetEditMask メソッドはセルのテキストをどのように表示するかを判定するために，セルを表示する直前に呼び出されます。


参照
参照15482

GetEditLimit メソッド

GetEditText メソッド


GetEditText メソッド
GetEditText メソッド15483

参照

適用

TCustomGrid

宣言

function GetEditText(ACol, ARow: Longint): string; dynamic;

説明

GetEditText メソッドはグリッドのセルの編集マスクを返します。ACol パラメータと ARow パラメータはセルの列と行をそれぞれ指定します。返される文字列はセルに表示されるテキストです。GetEditText メソッドはセルのテキストを判定するために，セルを表示する直前に呼び出されます。


参照
参照15484

GetEditLimit メソッド

GetEditMask メソッド

SetEditText メソッド


HideEditor メソッド
HideEditor メソッド15485

参照

適用

TCustomGrid

宣言

procedure HideEditor;

説明

HideEditor メソッドはセルのインプレースエディタを非表示にします。


参照
参照15486

ShowEditor メソッド

ShowEditorChar メソッド


InvalidateCell メソッド
InvalidateCell メソッド15487

参照

適用

TCustomGrid

宣言

procedure InvalidateCell(ACol, ARow: Longint);

説明

InvalidateCell メソッドはグリッドセルの表示部分を再描画します。セルが画面上に表示されていないと再描画されません。ACol パラメータと ARow パラメータはセルの列と行をそれぞれ指定します。


参照
参照15488

InvalidateRow メソッド


InvalidateRow メソッド
InvalidateRow メソッド15489

参照

適用

TCustomGrid

宣言

procedure InvalidateRow(ARow: Longint);

説明

InvalidateRow メソッドはグリッドセルの行の表示部分を再描画します。行が画面上に表示されていないと再描画されません。ARow パラメータは行を指定します。


参照
参照15490

InvalidateCell メソッド


MaxCustomExtents 定数
MaxCustomExtents 定数15491

参照

宣言

const
  MaxCustomExtents = 65520 div SizeOf(Integer);

説明

MaxCustomExtents 定数は，単一のグリッドに入れることのできる，カスタマイズされた列幅または行幅の最大数を表します。この定数は 64KB のメモリセグメントに入ることのできる整数の数です。グリッドはデフォルトのサイズとは違う行と列のサイズを格納することができます。


参照
参照15492

ColWidths プロパティ

RowHeights プロパティ


MouseCoord メソッド
MouseCoord メソッド15493

適用

TCustomGrid

宣言

function MouseCoord(X, Y: Integer): TGridCoord;

説明

MouseCoord メソッドは，マウスの座標位置にあるセルのグリッド座標を返します。X パラメータと Y パラメータは垂直と水平のピクセル座標をそれぞれ指定します。


MoveColRow メソッド
MoveColRow メソッド15494

適用

TCustomGrid

宣言

procedure MoveColRow(ACol, ARow: Longint; MoveAnchor, Show: Boolean);

説明

MoveColRow メソッドは Col と Row の各プロパティの指定に従ってグリッドの列と行を変更します。ACol パラメータと ARow パラメータは新しくカレントにする列と行をそれぞれ指定します。

MoveAnchor パラメータはアンカーを新しい位置に移動するか，現在の位置に置いておくかを指定します。アンカーは，セルの選択範囲を拡張するセルです。グリッドで複数のセルが選択されている場合，選択範囲はフォーカスのあるセルからアンカーまでです。選択されているセルが 1 つだけである場合，フォーカスのあるセルとアンカーは同じセルです。アンカーを移動するには MoveAnchor に True を指定し，アンカーを現在の位置に置いておくには (そして選択範囲を拡張するには) False を指定します。

Show パラメータは，新しいカレントセルがグリッドの表示されない部分にある場合にグリッドをスクロールしてそのセルを表示するかを指定します。グリッドをスクロールするには Show に True を指定し，グリッドをスクロールしない場合は False を指定します。


RowHeightsChanged メソッド
RowHeightsChanged メソッド15495

参照

適用

TCustomGrid

宣言

procedure RowHeightsChanged; dynamic;

説明

RowHeightsChanged メソッドは，Options プロパティの goRowSizing が設定されたグリッドでユーザーが行幅を変更すると呼び出されます。RowHeightsChanged は，行幅によっては行のセルを再描画する必要がある場合に変更します。たとえば，行幅に合わせて引き伸ばされるビットマップがセルにある場合，RowHeightsChanged メソッドを使って行のセルを再描画します。


参照
参照15496

RowHeights プロパティ

ColWidthsChanged メソッド


RowMoved メソッド
RowMoved メソッド15497

参照

適用

TCustomGrid

宣言

procedure RowMoved(FromIndex, ToIndex: Longint); dynamic;

説明

RowMoved メソッドはカスタムグリッドの OnRowMoved イベントハンドラ用のプロテクトメソッドです。RowMoved メソッドは OnRowMoved イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。RowMoved をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。

RowMoved メソッドは Options プロパティの goRowMoving が設定されたグリッドでユーザーが行を移動すると呼び出されます。FromIndex パラメータは移動前の行のインデックス (Row プロパティに対応) を指定します。ToIndex パラメータは移動先の行のインデックスを指定します。RowMoved メソッドは行を移動するときに基になるデータを移動するために使います。


参照
参照15498

ColumnMoved メソッド


ScrollData メソッド
ScrollData メソッド15499

適用

TCustomGrid

宣言

procedure ScrollData(DX, DY: Integer);

説明

ScrollData メソッドはグリッドのデータ部分をスクロールします。DX パラメータは水平にスクロールする列の数を指定します。右の列を表示するには正の数を，左の列を表示するには負の数を指定します。DY パラメータは垂直にスクロールする列の数を指定します。下の列を表示するには正の数を，上の列を表示するには負の数を指定します。


SelectCell メソッド
SelectCell メソッド15500

適用

TCustomGrid

宣言

function SelectCell(ACol, ARow: Longint): Boolean; virtual;

説明

SelectCell メソッドはユーザーがグリッドのセルを選択できる場合に True を返します。ACol パラメータと ARow パラメータはセルの列と行をそれぞれ指定します。SelectCell メソッドはユーザーがセルを選択しようとすると呼び出されます。

SelectCell はグリッドの選択可能な領域を限定するために使います。たとえば，アプリケーションで 3×3 (9 つのセル) のグリッドを表示するときに 8 つのセルにしかデータがない場合，SelectCell を変更してデータの入っていないセルの選択ができないようにできます。


SetEditText メソッド
SetEditText メソッド15501

参照

適用

TCustomGrid

宣言

procedure SetEditText(ACol, ARow: Longint; const Value: string); dynamic;

説明

SetEditText メソッドはグリッドのセルのテキスト値を指定します。ACol パラメータと ARow パラメータはセルの列と行をそれぞれ指定します。Value パラメータはセルに割り当てるテキスト値を指定します。


参照
参照15502

GetEditText メソッド


ShowEditor メソッド
ShowEditor メソッド15503

参照

適用

TCustomGrid

宣言

procedure ShowEditor;

説明

ShowEditor メソッドはセルのインプレースエディタを表示します。


参照
参照15504

HideEditor メソッド


ShowEditorChar メソッド
ShowEditorChar メソッド15505

参照

適用

TCustomGrid

宣言

procedure ShowEditorChar(Ch: Char);

説明

ShowEditorChar メソッドはセルのインプレースエディタを表示し，Ch パラメータで指定した文字がユーザーによってインプレースエディタに入力されたかのようにエディタをアクティブにします。

たとえば，ShowEditorChar は goEditing が True に設定されたグリッドの選択はされているがフォーカスはないセルでユーザーが文字を入力するときに呼び出されます。この場合インプレースエディタは表示され，ユーザーが入力した文字はエディタに入力される必要があります。ShowEditorChar は，goEditing が True に設定されたグリッドのセルにフォーカスがあるときにユーザーが文字を入力しても呼び出されません。エディタはすでに表示されており，入力された文字を自動的に受け入れるからです。


参照
参照15506

HideEditor メソッド

ShowEditor メソッド


SizeChanged メソッド
SizeChanged メソッド15507

適用

TCustomGrid

宣言

procedure SizeChanged(OldColCount, OldRowCount: Longint); dynamic;

説明

SizeChanged メソッドはグリッドの列または行の数が変更されると呼び出されます。OldColCount パラメータと OldRowCount パラメータはグリッドの変更前の列と行の数をそれぞれ指定します。変更後の列と行の数は ColCount プロパティと RowCount プロパティでそれぞれ指定します。


CustomGrid の Sizing メソッド
Sizing メソッド15508

適用

TCustomGrid

宣言

function Sizing(X, Y: Integer): Boolean;

説明

Sizing メソッドは指定されたピクセル座標で行または列のサイズ変更が許されていると True を返します。X パラメータと Y パラメータは水平方向のピクセル座標をそれぞれ指定します。

X と Y が，goRowSizing または goColSizing が True に設定されたグリッドの行または列のタイトルの間の境界上のマウスポインタの位置を指定する場合，Sizing は True を返します。Sizing が True を返す場合，マウスポインタは crHSplit または crVSplit Cursor に変更する必要があります。


TCustomGrid コンポーネント
TCustomGrid コンポーネント15509

参照	フィールド	メソッド	コンポーネント

ユニット

Grids

説明

TCustomGrid コンポーネントは，TDrawGrid, TStringGrid, TDBGrid，ユーザー定義のグリッドコンポーネントを含むすべてのグリッドの抽象基本型です。

TCustomControl から継承するすべてのもののほかに，TCustomGrid は文字列グリッドなどのグリッドコンポーネントの VCL リファレンスに説明されているプロパティを提供します。またいくつかの継承したプロテクトメソッドをオーバーライドし，そのほかに新しいメソッドも提供します。


フィールド
フィールド15510

FGridState	FSaveCellExtents


メソッド
メソッド15511

BoxRect	GetEditMask	Paint

CanEditAcceptKey	GetEditText	RowHeightsChanged

CanEditModify	HideEditor	RowMoved

CanEditShow	InvalidateCell	ScrollData

ColumnMoved	InvalidateRow	SelectCell

ColWidthsChanged	KeyDown	SetEditText

CreateEditor	KeyPress	ShowEditor

CreateParams	MouseCoord	ShowEditorChar

DblClick	MouseDown	SizeChanged

DefineProperties	MouseMove	Sizing

DrawCell	MouseUp	TimedScroll

GetEditLimit	MoveColRow	TopLeftChanged


参照
参照15512

TCustomControl コンポーネント


TGridCoord 型
TGridCoord 型15513

参照

ユニット

Grids

宣言

type
  TGridCoord = record
    X: Longint;
    Y: Longint;
  end;

説明

TGridCoord 型はグリッドのセルを指定します。X フィールドはグリッドの列を指定し，Y フィールドはグリッドの行を指定します。


参照
参照15514

TPoint 型


TGridScrollDirection 型
TGridScrollDirection 型15515

ユニット

Grids

宣言

type
   TGridScrollDirection = set of (sdLeft, sdRight, sdUp, sdDown);

説明

TGridScrollDirection 型は，TimedScroll メソッドが呼び出されたときにグリッドがスクロールできる方向を定義します。


TGridState 型
TGridState 型15516

ユニット

Grids

宣言

type
  TGridState = (gsNormal, gsSelecting, gsRowSizing, gsColSizing, gsRowMoving, gsColMoving);

説明

TGridState 型は FGridState フィールドの値を定義します。


TimedScroll メソッド
TimedScroll メソッド15517

適用

TCustomGrid

宣言

procedure TimedScroll(Direction: TGridScrollDirection); dynamic;

説明

TimedScroll メソッドは，ユーザーがグリッドの選択範囲を拡張しているときにマウスポインタがグリッドの外にあると定期的に呼び出されます。Direction パラメータはグリッドをスクロールする方向を指定します。デフォルトでは，グリッドは TopRow プロパティまたは LeftCol プロパティを変更することでスクロールされます。

グリッドはマウスポインタの方向にスクロールされます。たとえば，マウスポインタがグリッドの上にある場合には Direction には sdUp が入ります。マウスポインタがグリッドの右下にある場合には Direction には sdDown と sdRight が入ります。


TInplaceEdit コンポーネント
TInplaceEdit コンポーネント15518

参照	コンポーネント

ユニット

Grids

説明

TInPlaceEdit コンポーネントは，インプレース編集ができるグリッドコンポーネントで内部的に使われるクラスです。グリッドの Options プロパティのセットに goEditing が含まれる場合，グリッドのセルはインプレース編集できます。セルがインプレース編集されるときには TInPlaceEdit オブジェクトが使われます。


参照
参照15519

CreateEditor メソッド


TopLeftChanged メソッド
TopLeftChanged メソッド15520

適用

TCustomGrid

宣言

procedure TopLeftChanged; dynamic;

説明

TopLeftChanged メソッドはグリッドのデータがスクロールされると呼び出されます。TopLeftChanged は TopRow プロパティまたは LeftCol プロパティが変更されると呼び出されます。


Changed メソッド
Changed メソッド15521

適用

TCanvas, TGraphic, TPicture

説明

Changed メソッドには 2 つあります。1 つは TCanvas オブジェクトで使われ，もう 1 つは TGraphic オブジェクトと TPicture オブジェクトに使われます。

Canvas オブジェクトの Changed メソッド

Graphic と Picture オブジェクトの Changed メソッド


Canvas オブジェクトの Changed メソッド
Changed メソッド15522

参照

適用

TCanvas

宣言

procedure Changed; virtual;

説明

Changed メソッドはキャンバスの OnChange イベントハンドラ用のプロテクトメソッドです。Changed メソッドは OnChange イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。Changed をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。


参照
参照15523

Changing メソッド


Graphic と Picture オブジェクトの Changed メソッド
Changed メソッド15524

適用

TGraphic, TPicture

宣言

procedure Changed(Sender: TObject);

説明

Changed メソッドはグラフィックまたは画像の OnChange イベントハンドラ用のプロテクトメソッドです。Changed メソッドは OnChange イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。Changed をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。

Changed メソッドはグラフィックまたは画像が変更されたときに呼び出します。たとえば，TImage コンポーネントの Picture プロパティによって指定された TBitmap オブジェクトの Changed メソッドは，ビットマップが変更されたときに TImage コンポーネントを再描画します。


Changing メソッド
Changing メソッド15525

参照

適用

TCanvas

宣言

procedure Changing; virtual;

説明

Changing メソッドはキャンバスの OnChanging イベントハンドラ用のプロテクトメソッドです。Changing メソッドは OnChanging イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。Changing をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。


参照
参照15526

Changed メソッド


ColorToIdent 関数
ColorToIdent 関数15527

参照

ユニット

Graphics

宣言

function ColorToIdent(Color: Longint; var Ident: string): Boolean;

説明

ColorToIdent 関数は数値で表された色の値を，登録されていればその色の識別子の文字列に変換します。Color パラメータに渡された数値に対応する識別子があれば，Ident パラメータの文字列はその識別子を指定するように変更され，ColorToIdent は True を返します。数値に対応する識別子がない場合には Ident パラメータの文字列は変更されず，ColorToIdent は False を返します。

メモ:	ColorToIdent は内部で使うためのものです。同じ機能を実行するには ColorToString 関数を使ってください。


参照
参照15528

ColorToString 関数

GetColorValues 手続き

IdentToColor 関数


ColorToString 関数
ColorToString 関数15529

参照

ユニット

Graphics

宣言

function ColorToString(Color: TColor): string;

説明

ColorToString 関数は Color パラメータに渡された色に対応する識別子を指定する文字列を返します。Color パラメータには数値または識別子 (たとえば clBlue) を指定できます。数値に対応する識別子がない場合，ColorToString は Color パラメータの 16 進数での値を文字列にして返します。


参照
参照15530

ColorToIdent 関数

GetColorValues 手続き

IdentToColor 関数


Dormant メソッド
Dormant メソッド15531

参照

適用

TBitmap

宣言

procedure Dormant;

説明

Dormant メソッドはビットマップに割り当てられた HBITMAP (Handle プロパティによってアクセスする) を解放する一方，メモリにビットマップのイメージを作成することでビットマップを保存します。Dormant はアプリケーションで使われる GDI リソースの量を節約するときに使います。


参照
参照15532

FreeImage メソッド


Draw メソッド
Draw メソッド15533

適用

TGraphic

宣言

procedure Draw(ACanvas: TCanvas; const Rect: TRect); virtual; abstract;

説明

Draw メソッドはキャンバスにグラフィックを描画します。キャンバスは ACanvas パラメータで指定し，グラフィックを描画するキャンバスの四角形の領域は Rect パラメータで指定します。Rect の四角形のサイズがグラフィックのサイズと異なる場合，グラフィックは四角形内にぴったりはまるように引き伸ばされます。


FreeImage メソッド
FreeImage メソッド15534

参照

適用

TBitmap

宣言

procedure FreeImage;

説明

FreeImage メソッドはビットマップによってメモリに格納されたキャッシュファイルイメージを解放します。ビットマップがビットマップオブジェクトにロードされると，Delphi はメモリにロードされたビットマップのイメージを作成します。ビットマップが変更されなかった場合，ビットマップを保存するときにはビットマップの色解像度が失われないようにメモリのイメージが使われます。FreeImage はビットマップイメージに割り当てられたメモリを解放します。FreeImage を呼び出すと，アプリケーションで必要なメモリは減りますが，ビットマップの色解像度は失われる可能性がでてきます。


参照
参照15535

Dormant メソッド


GetColorValues 手続き
GetColorValues 手続き15536

参照

ユニット

Graphics

宣言

procedure GetColorValues(Proc: TGetStrProc);

説明

GetColorValues 手続きは登録された色の識別子のリストを反復処理し，各識別子を Proc 手続きに文字列型のパラメータとして渡します。GetColorValues は clBlue や clBtnFace といった色の識別子に対応する文字列の入手に使います。


参照
参照15537

ColorToIdent 関数

ColorToString 関数

IdentToColor 関数


GetDIB 関数
GetDIB 関数15538

参照

ユニット

Graphics

宣言

function GetDIB(Bitmap: HBITMAP; Palette: HPALETTE; var BitmapInfo; var Bits): Boolean;

説明

GetDIB 関数は Bitmap パラメータで指定されるビットマップのビットを取り出し，それらをデバイスに依存しない形式で Bits 構造にコピーします。Palette パラメータはビットマップのパレットを，BitmapInfo パラメータはビットマップの情報ヘッダーを指定します。

メモ:	GetDIB を呼び出す前に，GetDIBSizes 手続きを使って情報ヘッダーとビットマップのサイズを調べ，MemAlloc 関数を使ってメモリを割り当ててください。


参照
参照15539

GetDIBSizes 手続き

MemAlloc 関数


GetDIBSizes 手続き
GetDIBSizes 手続き15540

参照

ユニット

Graphics

宣言

procedure GetDIBSizes(Bitmap: HBITMAP; var InfoHeaderSize: Integer; var ImageSize: Longint);

説明

GetDIBSizes 関数はビットマップの情報ヘッダーとイメージのサイズをバイトで返します。ビットマップは Bitmap パラメータで指定します。InfoHeaderSize パラメータには情報ヘッダーのバイト数が返されます。ImageSize パラメータにはイメージのバイト数が返されます。

情報ヘッダーとビットマップのサイズは，GetDIB 関数を使ってビットマップをデバイスに依存しない形式で取り出す前に，MemAlloc 関数でメモリを割り当てるために取り出します。


参照
参照15541

GetDIB 関数

MemAlloc 関数


GetEmpty メソッド
GetEmpty メソッド15542

適用

TGraphic

宣言

function GetEmpty: Boolean; virtual; abstract;

説明

GetEmpty メソッドはグラフィックにイメージが入っていなければ True，グラフィックにイメージが入っていれば False を返します。GetEmpty メソッドは Empty プロパティを指定するために呼び出されます。


GetHeight メソッド
GetHeight メソッド15543

参照

適用

TGraphic

宣言

function GetHeight: Integer; virtual; abstract;

説明

GetHeight メソッドはグラフィックの高さをピクセルで返します。GetHeight メソッドは Height プロパティを指定するために呼び出されます。


参照
参照15544

GetWidth メソッド

SetHeight メソッド

SetWidth メソッド


GetWidth メソッド
GetWidth メソッド15545

参照

適用

TGraphic

宣言

function GetWidth: Integer; virtual; abstract;

説明

GetWidth メソッドはグラフィックの幅をピクセルで返します。GetWidth メソッドは Width プロパティを指定するために呼び出されます。


参照
参照15546

GetHeight メソッド

SetHeight メソッド

SetWidth メソッド


IdentToColor 関数
IdentToColor 関数15547

参照

ユニット

Graphics

宣言

function IdentToColor(const Ident: string; var Color: Longint): Boolean;

説明

IdentToColor 関数は色の識別子の文字列を，登録されていれば数値で表された色の値に変換します。Ident パラメータに渡された識別子の文字列に対応する数値があれば，Color パラメータはその数値を指定するように変更され，IdentToColor は True を返します。識別子の文字列に対応する数値がない場合には Color の値は変更されず，IdentToColor は False を返します。


参照
参照15548

ColorToIdent 関数

GetColorValues 手続き


InitGraphics 手続き
InitGraphics 手続き15549

ユニット

Graphics

宣言

procedure InitGraphics;

説明

InitGraphics 手続きは Delphi の Graphics ユニットを初期化します。通常，すべてのプロジェクトに含まれる Controls ユニットから InitGraphics が自動的に呼び出されます。

注意:	InitGraphics はコードで呼び出さないでください。呼び出すとエラーが発生します。


LoadFromClipboardFormat メソッド
LoadFromClipboardFormat メソッド15550

参照

適用

TGraphic

宣言

procedure LoadFromClipboardFormat(AFormat: Word; AData: THandle; APalette: HPALETTE); virtual; abstract;

説明

LoadFromClipboardFormat メソッドはクリップボードからグラフィックをロードします。LoadFromClipboardFormat はカレントイメージを AData パラメータが指すデータで置き換えます。グラフィックのパレットは APalette パラメータで指定します。LoadFromClipboardFormat は，TGraphic が RegisterClipboardFormat メソッドを使って TPicture オブジェクトに登録されている場合に呼び出されます。


参照
参照15551

SaveToClipboardFormat メソッド

SupportsClipboardFormat メソッド


MemAlloc 関数
MemAlloc 関数15552

参照

ユニット

Graphics

宣言

function MemAlloc(Size: Longint): Pointer;

説明

MemAlloc 関数は Size パラメータに渡されたバイト数をヒープで割り当てます。


参照
参照15553

GetDIB 関数

GetDIBSizes 手続き


ReadData メソッド
ReadData メソッド15554

参照

適用

TGraphic

宣言

procedure ReadData(Stream: TStream); virtual;

説明

ReadData メソッドは WriteData メソッドを使って書き込まれたストリームからグラフィックイメージを読み出します。ReadData は新しい WriteData メソッドを定義したときだけ新たに定義する必要があります。それ以外の場合は，ReadData は単純に LoadFromStream (WriteData は SaveToStream) を呼び出します。

ReadData メソッドを新しく定義する必要があるのは，グラフィックを .DFM ファイルに格納する方式を変更した場合だけです。つまり，ストリームに単純に書き込んだり読み出したりするのではなく，データを .DFM ファイルに格納する前にグラフィックデータを変更したり圧縮したりするときです。


参照
参照15555

WriteData メソッド


RegisterClipboardFormat メソッド
RegisterClipboardFormat メソッド15556

参照

適用

TPicture

宣言

class procedure RegisterClipboardFormat(AFormat: Word; AGraphicClass: TGraphicClass);

説明

RegisterClipboardFormat メソッドは TGraphic の LoadFromClipboardFormat メソッドと SaveToClipboardFormat メソッドで使う TGraphic クラスを新しく登録します。AFormat パラメータは Windows API 関数呼び出しの RegisterClipboardFormat で Windows に登録されたクリップボード形式を指定します。AGraphicClass パラメータは登録するグラフィッククラスを指定します。

クリップボードからグラフィックデータをロードしたり保存するには，TBitmap, TIcon, TMetafile 以外のグラフィッククラスは新しく登録しなくてはなりません。


参照
参照15557

SupportsClipboardFormat メソッド


RegisterFileFormat メソッド
RegisterFileFormat メソッド15558

参照

適用

TPicture

宣言

class procedure RegisterFileFormat(const AExtension, ADescription: string;
  AGraphicClass: TGraphicClass);

説明

RegisterFileFormat メソッドは，TPicture について［Open］ダイアログボックスまたは［Save］ダイアログボックスで使えるグラフィックファイル形式を登録します。AExtension パラメータはグラフィッククラスと関連付ける DOS の 3 文字のファイル拡張子を指定します (たとえば，BMP は TBitmap と関連付けられます)。ADescription パラメータはダイアログボックスのドロップダウンリストに表示されるグラフィックの説明を指定します (たとえば，TBitmap の説明は Bitmaps です)。AGraphicClass パラメータはファイル形式と関連付ける新しいグラフィッククラスを登録します。


参照
参照15559

RegisterClipboardFormat メソッド


SaveToClipboardFormat メソッド
SaveToClipboardFormat メソッド15560

参照

適用

TGraphic

宣言

procedure SaveToClipboardFormat(var AFormat: Word; var AData: THandle;
  var APalette: HPALETTE); virtual; abstract;

説明

SaveToClipboardFormat メソッドはグラフィックをクリップボード形式で保存します。グラフィックのパレットは APalette パラメータで指定します。TGraphic をクリップボード形式で保存するには，RegisterClipboardFormat メソッドを使って TPicture オブジェクトにその形式を登録する必要があります。


参照
参照15561

LoadFromClipboardFormat メソッド

SupportsClipboardFormat メソッド


SetHeight メソッド
SetHeight メソッド15562

参照

適用

TGraphic

宣言

procedure SetHeight(Value: Integer); virtual; abstract;

説明

SetHeight メソッドはグラフィックの高さを変更します。変更後の高さは Value パラメータにピクセルで指定します。SetHeight メソッドは Height プロパティの値が変更したときに呼び出されます。

デフォルトでは，変更後の高さが変更前のより低い場合にはグラフィックイメージはその分だけ切り落とされます。変更後の高さが変更前より高い場合も引き伸ばしはありません。そのかわり，グラフィックに透過色が使われている場合を除いて，高くしたときに新しく作成された領域がグラフィックの Brush の色を使って塗りつぶされます。透過色が使われている場合は，新しい領域はその色で塗りつぶされます。


参照
参照15563

GetHeight メソッド

GetWidth メソッド

SetWidth メソッド


SetWidth メソッド
SetWidth メソッド15564

参照

適用

TGraphic

宣言

procedure SetWidth(Value: Integer); virtual; abstract;

説明

SetWidth メソッドはグラフィックの幅を変更します。変更後の幅は Value パラメータにピクセルで指定します。SetWidth メソッドは Width プロパティの値が変更したときに呼び出されます。

デフォルトでは，変更後の幅が変更前より狭い場合にはグラフィックイメージはその分だけ切り落とされます。変更後の幅が変更前より広い場合も引き伸ばしはありません。そのかわり，グラフィックに透過色が使われている場合を除いて，広くしたときに新しく作成された領域がグラフィックの Brush の色を使って塗りつぶされます。透過色が使われている場合は，新しい領域はその色で塗りつぶされます。


参照
参照15565

GetHeight メソッド

GetWidth メソッド

SetHeight メソッド


StringToColor 関数
StringToColor 関数15566

参照

ユニット

Graphics

宣言

function StringToColor(S: string): TColor;

説明

StringToColor 関数は S パラメータに渡された識別子の文字列に対応する色を返します。たとえば，clBlue を取り出すには S パラメータに clBlue を指定します。


参照
参照15567

ColorToIdent 関数

ColorToString 関数

GetColorValues 手続き


SupportsClipboardFormat メソッド
SupportsClipboardFormat メソッド15568

参照

適用

TPicture

宣言

class function SupportsClipboardFormat(AFormat: Word): Boolean;

説明

SupportsClipboardFormat メソッドは AFormat パラメータで指定されたクリップボード形式が LoadFromClipboardFormat メソッドでサポートされている場合に True を返します。クリップボード形式がサポートされるには，それが RegisterClipboardFormat メソッドで登録されていなくてはなりません。


参照
参照15569

SaveToClipboardFormat メソッド


TBitmap オブジェクト (プロテクト)
TBitmap オブジェクト (プロテクト)15570

参照	メソッド	オブジェクト

ユニット

Graphics

説明

TBitmap オブジェクトは，Windows のビットマップを処理するためにカスタマイズされた，TGraphic から派生したグラフィックオブジェクトです。TBitmap オブジェクトの VCL リファレンスに説明されたパブリック項目とパブシッシュ項目のほかに，TBitmap は 3 つの継承されたプロテクトメソッドをオーバーライドします。

TBitmap はビットマップイメージの描画には Draw メソッドを，ビットマップデータの読み出しと書き込みには ReadData と WriteData をそれぞれオーバーライドします。


メソッド
メソッド15571

Draw	ReadData	WriteData


参照
参照15572

TGraphic オブジェクト

TBitmap オブジェクト VCL リファレンス


TCanvas オブジェクト (プロテクト)
TCanvas オブジェクト (プロテクト)15573

参照	メソッド	オブジェクト

ユニット

Graphics

説明

TCanvas オブジェクトは Delphi コンポーネント表面に対する描画を処理します。上位オブジェクトの TPersistent からすべて継承するもののほかに，TCanvas では数多くのプロパティ，メソッド，イベントを提供します。そのほとんどはパブリックまたはパブリッシュに設定されており，TCanvas オブジェクトの VCL リファレンスに説明されています。

TCanvas にはプロテクトメソッドも 3 つあります。Changed メソッドと Changing メソッドは OnChange イベントと OnChanging イベントをそれぞれ発生させ，CreateHandle メソッドはキャンバスのデバイスコンテキストハンドルを作成します。


メソッド
メソッド15574

Changed	Changing	CreateHandle


参照
参照15575

TPersistent オブジェクト

TCanvas オブジェクト VCL リファレンス


TGraphic オブジェクト (プロテクト)
TGraphic オブジェクト (プロテクト)15576

参照	プロパティ	メソッド	イベント	オブジェクト

ユニット

Graphics

説明

TGraphic オブジェクトは，TBitmap, TIcon, TMetafile などの Delphi のすべてのグラフィックイメージの抽象基本オブジェクトです。グラフィックイメージの種類を TGraphic から派生させ，新しく定義することもできます。

上位オブジェクトの TPersistent からすべて継承するもののほかに，TGraphic ではすべてのグラフィックイメージオブジェクトに共通のプロパティ，メソッド，イベントを提供します。そのほとんどはパブリックまたはパブリッシュに設定されており，TGraphic オブジェクトの VCL リファレンスに説明されています。

TGraphic のプロテクトメソッドはすべてのグラフィックオブジェクトに共通のインターフェース構造を提供します。いくつかの継承メソッドをオーバーライドするほかに，TGraphic は OnChange イベントを発生させる Changed メソッド，イメージを描画する Draw メソッド，バイナリイメージをそれぞれロード，格納する ReadData メソッドと WriteData メソッド，その他ストリーム，ファイル，クリップボードを含む各種媒体をロード，保存するメソッドを提供します。


プロパティ
プロパティ15577

Empty	Modified	Width

Height


メソッド
メソッド15578

Assign	LoadFromClipboardFormat	SaveToClipboardFormat

Changed	LoadFromFile	SaveToFile

Create	LoadFromStream	SaveToStream

DefineProperties	ReadData	WriteData

Draw


イベント
イベント15579

OnChange


参照
参照15580

TPersistent オブジェクト

TGraphic オブジェクト VCL リファレンス


TGraphicClass 型
TGraphicClass 型15581

参照

ユニット

Graphics

宣言

type
  TGraphicClass = class of TGraphic;

説明

TGraphicClass 型は TGraphic オブジェクトとその下位オブジェクトのコンテナクラスです。TGraphicClass は GraphicExtension 関数と GraphicFilter 関数のパラメータの型です。


参照
参照15582

TGraphic オブジェクト (プロテクト)


TIcon オブジェクト (プロテクト)
TIcon オブジェクト (プロテクト)15583

参照	メソッド	オブジェクト

ユニット

Graphics

説明

TIcon オブジェクトは，Windows のアイコンを処理するためにカスタマイズされた，TGraphic から派生したグラフィックオブジェクトです。TIcon オブジェクトの VCL リファレンスに説明されたパブリック項目とパブリッシュ項目のほかに，TIcon は 2 つの継承プロテクトメソッドをオーバーライドします。

TIcon はアイコンイメージの描画には Draw メソッドを，アイコンのクリップボードへのコピーには SaveToClipboardFormat メソッドをオーバーライドします。


メソッド
メソッド15584

Draw	SaveToClipboardFormat


参照
参照15585

TGraphic オブジェクト (プロテクト)

TIcon オブジェクト VCL リファレンス


TMetafile オブジェクト (プロテクト)
TMetafile オブジェクト (プロテクト)15586

参照	メソッド	オブジェクト

ユニット

Graphics

説明

TMetafile オブジェクトは，Windows のメタファイルを処理するためにカスタマイズされた，TGraphic から派生したグラフィックオブジェクトです。TMetafile オブジェクトの VCL リファレンスに説明されたパブリック項目とパブシッシュ項目のほかに，TMetafile は 3 つの継承プロテクトメソッドをオーバーライドします。

TMetafile はメタファイルイメージの描画には Draw メソッドを，メタファイルデータの読み出しと書き込みには ReadData と WriteData をそれぞれオーバーライドします。


メソッド
メソッド15587

Draw	ReadData	WriteData


参照
参照15588

TGraphic オブジェクト (プロテクト)

TMetafile オブジェクト VCL リファレンス


TPicture オブジェクト (プロテクト)
TPicture オブジェクト (プロテクト)15589

参照	メソッド	オブジェクト

ユニット

Graphics

説明

TPicture オブジェクトは，登録されたファイルの種類からイメージをロードできる，(TGraphic で定義された) グラフィックオブジェクトのコンテナです。上位オブジェクトの TPersistent から継承するすべてのもののほかに，TPicture では数多くのプロパティ，メソッド，イベントを提供します。そのほとんどはパブリックまたはパブリッシュに設定されており，TPicture オブジェクトの VCL リファレンスに説明されています。

TPicture はプロテクトメソッド DefineProperties もオーバーライドするほか，OnChange イベントを発生させる Changed というプロテクトメソッドを 1 つ提供します。


メソッド
メソッド15590

Changed	DefineProperties


参照
参照15591

TPersistent オブジェクト

TGraphic オブジェクト

TPicture オブジェクト VCL リファレンス


WriteData メソッド
WriteData メソッド15592

参照

適用

TGraphic

宣言

procedure WriteData(Stream: TStream); virtual;

説明

WriteData メソッドはグラフィックイメージを Stream パラメータで指定されたストリームに書き出します。デフォルトでは，WriteData は単純に SaveToStream を呼び出します。グラフィックイメージを .DFM ファイルに格納する方式を変更する場合には，新しい WriteData メソッドを定義しなければなりません。新しい WriteData メソッドを定義した場合，そのグラフィックに対応する ReadData メソッドも新しく定義しなければなりません。

たとえば，グラフィックイメージデータを .DFM ファイルに格納する際に必要なバイト数を圧縮したい場合，WriteData メソッドに圧縮アルゴリズムを追加してから SaveToStream を呼び出し，圧縮された構造をストリームに保存します。グラフィックを取り出すときには，ReadData メソッドでグラフィックイメージデータを伸長する必要があります。


参照
参照15593

ReadData メソッド


Activate メソッド
Activate メソッド15594

参照

適用

TForm

宣言

procedure Activate; dynamic;

説明

Activate メソッドはフォームコンポーネントの OnActivate イベント用のプロテクトメソッドです。フォームコンポーネントは，CM_ACTIVATE メッセージを受け取ると Activate を呼び出します。CM_ACTIVATE メッセージは，アプリケーション内でアクティブウィンドウが変更されたため，またはアプリケーションがアクティブになったためにフォームにフォーカスが移ったときに送られます。

デフォルトの設定では，Activate メソッドはユーザーが OnActivate イベントにアタッチしたイベントハンドラを呼び出します。


参照
参照15595

Deactivate メソッド

OnActivate イベント


AllocateHWnd 関数
AllocateHWnd 関数15596

参照

ユニット

Forms

宣言

function AllocateHWnd(Method: TWndMethod): HWND;

説明

AllocateHWnd 関数は，Method パラメータに渡されたウィンドウプロシージャメソッドで非表示ウィンドウを Windows に作成し，そのウィンドウのウィンドウハンドルを返します。

AllocateHWnd は，メッセージの受け取りにウィンドウハンドルを必要とするが，画面表示の必要はないコンポーネントに使います。たとえば，Timer コンポーネントは WM_TIMER メッセージを受け取りますが，画面には表示されません。

AllocateHWnd で割り当てられたウィンドウは DeallocateHWnd 手続きで解放します。


参照
参照15597

DeallocateHWnd 手続き


AutoScrollInView メソッド
AutoScrollInView メソッド15598

参照

適用

TScrollingWinControl

宣言

procedure AutoScrollInView(AControl: TControl);

説明

AutoScrollInView メソッドは，自動スクロールによってコントロール (AControl で指定) とそのコントロールを含むスクロールコントロールをすべてスクロールし，コントロールにフォーカスがあるときにはそれが必ず表示されるようにします。AutoScrollInView では必要なスクロールのために ScrollInView メソッドを呼び出します。


参照
参照15599

ScrollInView メソッド


Deactivate メソッド
Deactivate メソッド15600

参照

適用

TForm

宣言

procedure Deactivate; dynamic;

説明

Deactivate メソッドはフォームコンポーネントの OnDeactivate イベント用のプロテクトメソッドです。フォームコンポーネントは，CM_DEACTIVATE メッセージを受け取ると Deactivate を呼び出します。CM_DEACTIVATE メッセージは，アプリケーション内でアクティブウィンドウが変更されたため，またはアプリケーションがアクティブになったためにフォームにフォーカスが移ったときに送られます。

デフォルトでは，Deactivate メソッドはユーザーが OnDeactivate イベントにアタッチしたイベントハンドラを呼び出します。


参照
参照15601

Activate メソッド

OnDeactivate イベント


DeallocateHWnd 手続き
DeallocateHWnd 手続き15602

参照

ユニット

Forms

宣言

procedure DeallocateHWnd(Wnd: HWND);

説明

DeallocateHWnd 手続きは AllocateHWnd 関数によって作成された非表示ウィンドウを破棄します。Wnd パラメータは AllocateHWnd によって返されたウィンドウハンドルです。


参照
参照15603

AllocateHWnd 関数


DialogHandle プロパティ
DialogHandle プロパティ15604

参照	例

適用

TApplication

宣言

property DialogHandle: HWnd;

説明

DialogHandle プロパティを使うと，Delphi アプリケーション内で非 Delphi ダイアログボックスを使うことができます。CreateDialog API 関数を使って作成したダイアログボックスをモードなしダイアログボックスとして動作させるには，アプリケーションのメッセージループからのメッセージを処理する必要があります。

モードなしダイアログボックスがアクティブになったら (WM_NCACTIVATE を受け取った場合) そのハンドルを DialogHandle に割り当て，非アクティブになったら DialogHandle を 0 に設定します。


例
例15605

Delphi で Windows の［search-and-replace］コモンダイアログボックスをカプセル化するウィンドウ手続きの一部を次に示します。

function SearchAndReplaceWndProc(Wnd: HWnd; Msg, WParam: Word; LParam: Longint): Longint;

begin

  try

    case Msg of

      WM_DESTROY: Application.DialogHandle := 0;	{ 破棄の際にハンドルをクリアします }

      WM_NCACTIVATE:

        if Bool(WParam) then	{ 起動する場合... }

          Application.DialogHandle := Wnd	{ ...ハンドルを割り当てます }

        else Application.DialogHandle := 0;	{ それ以外の場合はクリアします }

      ...
    end;

    Result := CallDefDialogProc;

  except
    Application.HandleException(nil);

  end;
end;


参照
参照15606

HookMainWindow メソッド

UnhookMainWindow メソッド


DisableTaskWindows 関数
DisableTaskWindows 関数15607

参照

ユニット

Forms

宣言

function DisableTaskWindows(ActiveWindow: HWnd): Pointer;

説明

DisableTaskWindows 関数は，ActiveWindow パラメータに渡されたウィンドウを除いて，アプリケーション内のすべてのウィンドウを使用不可にします。DisableTaskWindows は Delphi アプリケーションで非 Delphi ダイアログボックスをモード付きダイアログボックスとして使いたいときに呼び出します。Delphi のダイアログボックスを使うときは ShowModal メソッドがモードを処理するので，DisableTaskWindows を使う必要はありません。

この関数の戻り値は使用不可ウィンドウのリストを指すポインタです。これはモード付きダイアログボックスが閉じた後に，使用不可になっているウィンドウを使用可能にするために EnableTaskWindows 手続きに渡します。タスクウィンドウを使用不可にする過程で例外が生成されると，DisableTaskWindows はその時点で使用不可になっているウィンドウを自動的に使用可能にします。


参照
参照15608

EnableTaskWindows 手続き


DoHide メソッド
DoHide メソッド15609

参照

適用

TForm

宣言

procedure DoHide; dynamic;

説明

DoHide メソッドはフォームコンポーネントの OnHide イベント用のプロテクトメソッドです。フォームコンポーネントは，CM_SHOWINGCHANGED メッセージを受け取ると DoHide を呼び出します。CM_SHOWINGCHANGED メッセージは，アプリケーションでフォームが表示されるか非表示にされたときに送られます。

デフォルトでは，DoHide メソッドはユーザーが OnHide イベントにアタッチしたイベントハンドラを呼び出します。


参照
参照15610

OnHide イベント

DoShow メソッド


DoShow メソッド
DoShow メソッド15611

参照

適用

TForm

宣言

procedure DoShow; dynamic;

説明

DoShow メソッドはフォームコンポーネントの OnShow イベント用のプロテクトメソッドです。フォームコンポーネントは，CM_SHOWINGCHANGED メッセージを受け取ると DoShow を呼び出します。CM_SHOWINGCHANGED メッセージは，アプリケーションでフォームが表示されるか非表示にされたときに送られます。

デフォルトでは，DoShow メソッドはユーザーが OnShow イベントにアタッチしたイベントハンドラを呼び出します。


参照
参照15612

OnShow イベント

DoHide メソッド


EnableTaskWindows 手続き
EnableTaskWindows 手続き15613

参照

ユニット

Forms

宣言

procedure EnableTaskWindows(WindowList: Pointer);

説明

EnableTaskWindows 手続きは WindowList パラメータが指すリスト内のウィンドウを使用可能にします。WindowList には DisableTaskWindows 関数が返したポインタが入ります。


参照
参照15614

DisableTaskWindows 関数


FreeObjectInstance 手続き
FreeObjectInstance 手続き15615

参照

ユニット

Forms

宣言

procedure FreeObjectInstance(ObjectInstance: Pointer);

説明

FreeObjectInstance 手続きは MakeObjectInstance 関数によって作成されたオブジェクトインスタンスを破棄します。ObjectInstance パラメータは MakeObjectInstance によって返されたウィンドウプロシージャポインタです。


参照
参照15616

MakeObjectInstance 関数


HintWindowClass 変数
HintWindowClass 変数15617

参照

ユニット

Forms

宣言

const
  HintWindowClass: THintWindowClass = THintWindow;

説明

HintWindowClass 変数はアプリケーションでのヒントウィンドウの表示に使うコンポーネントの種類を決めます。HintWindowClass のデフォルト値は THintWindow です。THintWindow から新しい種類のヒントウィンドウコンポーネントを派生した場合，アプリケーションの起動時にその新しい種類を HintWindowClass に割り当てると，ヒントウィンドウを作成する呼び出しがあれば新しい種類のインスタンスが作成されます。


参照
参照15618

THintWindow コンポーネント

THintWindowClass 型


HookMainWindow メソッド
HookMainWindow メソッド15619

参照

適用

TApplication

宣言

procedure HookMainWindow(Hook: TWindowHook);

説明

HookMainWindow メソッドを使うと，非 Delphi ダイアログボックスがその親 (アプリケーションオブジェクトの Handle プロパティで示される) から送られたメッセージを受け取れるようになります。

メインウィンドウにフックした非 Delphi ダイアログボックスは，独立したウィンドウではなく，アプリケーションの子として正しく動作することが保証されます。たとえば，HookMainWindow を呼び出した後に Alt+Tab でアプリケーションを切り替えるとアプリケーション全体が 1 つのタスクとして扱われ，非 Delphi ダイアログボックスが別個のタスクとして扱われることはありません。

ダイアログボックスをメインウィンドウに「フック」したままにすることには，それが長期間にわたっても，問題はありません。ただし，ダイアログボックスを閉じるときには UnhookMainWindow メソッドを呼び出してフックを解除してください。


参照
参照15620

UnhookMainWindow メソッド


IsAccel 関数
IsAccel 関数15621

ユニット

Forms

宣言

function IsAccel(VK: Word; const Str: string): Boolean;

説明

IsAccel 関数は VK パラメータに渡された仮想キーの文字が Str に渡された文字列のアクセラレータキーならば True，それ以外の場合は False を返します。IsAccel は Str にアンド記号 (&) があるかをチェックし，あればアンド記号の次の文字が VK の文字と同じかをチェックします。


KeyDataToShiftState 関数
KeyDataToShiftState 関数15622

参照

ユニット

Forms

宣言

function KeyDataToShiftState(KeyData: Longint): TShiftState;

説明

KeyDataToShiftState 関数は Windows からキーボードメッセージで渡された KeyData フィールドを変換し，Delphi のキーボードイベント (OnKeyDown, OnKeyPress, OnKeyUp) で使うためのシフト状態情報にします。


参照
参照15623

KeysToShiftState 関数


KeysToShiftState 関数
KeysToShiftState 関数15624

参照

ユニット

Forms

宣言

function KeysToShiftState(Keys: Word): TShiftState;

説明

KeysToShiftState 関数は Windows からキーボードメッセージで渡された Keys フィールドを変換し，Delphi のキーボードイベント (OnKeyDown, OnKeyPress, OnKeyUp) で使うためのシフト状態情報にします。


参照
参照15625

KeyDataToShiftState 関数


MakeObjectInstance 関数
MakeObjectInstance 関数15626

参照

ユニット

Forms

宣言

function MakeObjectInstance(Method: TWndMethod): Pointer;

説明

MakeObjectInstance 関数は，Method パラメータに渡されたウィンドウプロシージャメソッドを呼び出すウィンドウプロシージャ関数を指すポインタを返します。

Windows はウィンドウのメッセージを，そのウィンドウのウィンドウプロシージャという関数に渡します。Delphi コンポーネントはオブジェクトであり，メッセージ処理用のウィンドウプロシージャとしてオブジェクトメソッドを使います。Windows はウィンドウプロシージャとしてメソッドポインタを受け取れないので，Delphi ではかわりにウィンドウプロシージャを Windows が呼び出せる関数の形で作成し，指定するメソッドにメッセージを渡してもらいます。

MakeObjectInstance で作成したウィンドウプロシージャ関数は FreeObjectInstance 手続きで必ず破棄してください。


参照
参照15627

FreeObjectInstance 手続き


Resize メソッド
Resize メソッド15628

参照

適用

TScrollBox, TForm, TCustomPanel

宣言

procedure Resize; dynamic;

説明

Resize メソッドは，スクロールボックス，フォーム，パネルの OnResize イベント用のプロテクトメソッドです。これらのコントロールは，コントロールまたはフォームのサイズが変更されたことを示す WM_SIZE メッセージを受け取ると Resize を呼び出します。

デフォルトでは，Resize は OnResize イベントにアタッチされたイベントハンドラを呼び出す以外は何もしません。Resize をオーバーライドすれば，継承されたイベントハンドラ呼び出しのほかにも応答ができます。


参照
参照15629

OnResize イベント


TApplication コンポーネント (プロテクト)
TApplication コンポーネント (プロテクト)15630

参照	プロパティ	メソッド	コンポーネント

ユニット

Forms

説明

TApplication コンポーネントはすべての Delphi アプリケーションのアプリケーションコンポーネントのコンポーネント型です。アプリケーションコンポーネントの使い方に関する VCL リファレンスの項目のほかにも，コンポーネントの作成に関する点はいくつかあります。

DialogHandle プロパティ，HookMainWindow メソッド，UnHookMainWindow メソッドを使うと，Delphi アプリケーションで非 Delphi ダイアログボックスが使えます。また，TApplication はアプリケーションオブジェクトをストリームに書き出すことを防ぐために，WriteComponents メソッドをオーバーライドします。


プロパティ
プロパティ15631

DialogHandle


メソッド
メソッド15632

HookMainWindow	UnHookMainWindow	WriteComponents


参照
参照15633

Application 変数

TApplication コンポーネント VCL リファレンス


TDesigner オブジェクト
TDesigner オブジェクト15634

参照	オブジェクト

ユニット

Forms

説明

TDesigner オブジェクトは TObject から直接派生した抽象オブジェクト型です。TDesigner オブジェクトは Delphi 環境内のすべてのフォームデザイナ，特に TFormDesigner の基礎を提供します。この抽象デザイナオブジェクトはすべてのデザイナオブジェクトで使うプロパティを 2 つ提供し，実際のデザイナオブジェクトがオーバーライドしなくてはならない抽象メソッドを 5 つ定義します。

プロパティ

プロパティ	使い方

Form	現在設計されているフォームへの参照を提供する

IsControl	フォームがフォーム状態とコントロール状態のどちらにあるのかを反映する

メソッド

メソッド	使い方

IsDesignMsg	デザイナ内のコンポーネントに送られるメッセージごとに呼び出される。メッセージが設計メッセージならば True を返し，そのメッセージをデザイナが処理しなくてはならないことを示す

Modified	プロパティエディタとコンポーネントエディタは，コンポーネント内で変更があると，デザイナが変更を反映できるようにこのメソッドを呼び出す

Notification	設計されているフォームの Notification メソッドによって呼び出され，デザイナがフォームのものと同じ通知に対応できるようにする

PaintGrid	デザイナがフォームのキャンバスに位置合わせグリッドを描画する必要があるときに呼び出される

ValidateRename	予約語を禁止する場合など名前の制限を強化するために，フォームの ValidateRename メソッドから呼び出される


参照
参照15635

TFormDesigner オブジェクト


TForm コンポーネント (プロテクト)
TForm コンポーネント (プロテクト)15636

参照	メソッド	コンポーネント

ユニット

Forms

説明

TForm コンポーネントは Delphi 環境で設計されるすべてのフォームの 1 つ上位の型です。フォームはスクロールウィンドウコントロールを特定の目的に専門化したものです。フォームコンポーネントの使い方に関する VCL リファレンスの項目のほかにも，TForm で提供される，または TForm がオーバーライドするプロテクトメソッドは数多くあります。


メソッド
メソッド15637

Activate	DestroyWindowHandle	PaintWindow

ChangeScale	DestroyWnd	ReadState

CreateParams	DoHide	Resize

CreateWindowHandle	DoShow	SetName

CreateWnd	GetClientRect	ValidateRename

Deactivate	Notification	VisibleChanging

DefaultHandler	Paint	WndProc

DefineProperties


参照
参照15638

TFormClass 型

TScrollingWinControl コンポーネント

TForm コンポーネント VCL リファレンス


TFormClass 型
TFormClass 型15639

参照

ユニット

Forms

宣言

type
  TFormClass = class of TForm;

説明

TFormClass 型はフォームコンポーネント型のオブジェクト型参照型です。


参照
参照15640

TForm コンポーネント (プロテクト)


TScrollBox コンポーネント (プロテクト)
TScrollBox コンポーネント (プロテクト)15641

参照	メソッド	コンポーネント

ユニット

Forms

説明

TScrollBox コンポーネントはカスタマイズされたスクロールウィンドウコントロールです。スクロールボックスコンポーネントの使い方に関する VCL リファレンスの項目のほかに，コンポーネントの作成に関するプロテクトメソッドはいくつかあります。

TScrollBox には OnResize イベントを実行する Resize メソッドがあります。また，TScrollBox は Create コンストラクタと CreateParams メソッドをオーバーライドします。


メソッド
メソッド15642

Create	CreateParams	Resize


参照
参照15643

TScrollingWinControl コンポーネント

TScrollBox コンポーネント VCL リファレンス


TScrollingWinControl コンポーネント
TScrollingWinControl コンポーネント15644

参照	プロパティ	メソッド	コンポーネント

ユニット

Forms

説明

TScrollingWinControl コンポーネントは，TForm と TScrollBox という 2 つの便利なコンポーネントの基礎である抽象コンポーネント型です。TWinControl から継承される項目のほかに，スクロールウィンドウコントロールには 3 つのプロパティといくつかの新しいメソッドがあります。

TScrollingWinControl で提供される 3 つのプロパティは，AutoScroll, HorzScrollBar, VertScrollBar です。スクロールバー関係のプロパティはパブリッシュに設定されているのですべてのスクロールウィンドウコントロールやフォームに表示されます。AutoScroll はプロテクトされていますが，TScrollBox と TForm の両方でパブリッシュに設定されています。

TScrollingWinControl ではスクロールを処理するメソッドを 2 つ提供します。1 つは ScrollInView で，指定したコントロールが完全に表示されることを保証し，もう 1 つは AutoScrollInView で同じことを自動スクロールコントロールに対してします。TScrollingWinControl は Create コンストラクタと AlignControls, CreateWnd, Destroy の各メソッドをオーバーライドします。


プロパティ
プロパティ15645

AutoScroll	HorzScrollBar	VertScrollBar


メソッド
メソッド15646

AlignControls	Create	Destroy

AutoScrollInView	CreateWnd	ScrollInView


参照
参照15647

TForm コンポーネント (プロテクト)

TScrollBox コンポーネント (プロテクト)


TWindowHook 型
TWindowHook 型15648

参照

ユニット

Forms

宣言

type
  TWindowHook = function(var Message: TMessage): Boolean of object;

説明

TWindowHook 型は非 Delphi ダイアログボックスのダイアログプロシージャとして使うメソッドポインタ型です。ダイアログプロシージャはダイアログボックスのメッセージを処理するという点ではウィンドウのウィンドウプロシージャと似ていますが，構文に少し違いがあります。

アプリケーションオブジェクトの HookMainWindow メソッドと UnhookMainWindow メソッドには TWindowHook 型のパラメータを指定します。


参照
参照15649

HookMainWindow メソッド

UnhookMainWindow メソッド


TWndMethod 型
TWndMethod 型15650

参照

ユニット

Forms

宣言

type
  TWndMethod = procedure (var Message: TMessage) of object;

説明

TWndMethod 型はウィンドウプロシージャのメソッドポインタ型です。AllocateHWnd 関数と MakeObjectInstance 関数のパラメータには TWndMethod 型のウィンドウプロシージャメソッドを指定します。


参照
参照15651

AllocateHWnd 関数

MakeObjectInstance 関数


UnhookMainWindow メソッド
UnhookMainWindow メソッド15652

参照

適用

TApplication

宣言

procedure UnhookMainWindow(Hook: TWindowHook);

説明

UnhookMainWindow メソッドは HookMainWindow メソッドへの呼び出しにより「フック」されたダイアログプロシージャを解放します。


参照
参照15653

HookMainWindow メソッド


トピックが見つかりません
 トピックが見つかりません00878

検索したトピックが見つかりませんでした。ヘルプファイルに問題があるか，そのトピックへのリンクに問題があると考えられます。［目次］，［キーワード］または［テキスト検索］タブを使うとこのトピックを見つけられるかもしれません。

トピックを検索するには

1	カテゴリ別にトピックをブラウズするために［目次］タブをクリックします。

2	［キーワード］タブをクリックすると索引項目のリストが表示されます。

探している言葉は入力するかリストをスクロールして探します。

3	［テキスト検索］タブをクリックするとその単語または語句が検索されます (Windows NT 3.51のみ)。


Welcome to RoboHELP. Click Topic (Ctrl+T) to add your first Help topic.

This is associated with the Delphi 95 project file document.