●Borlandのすべてのブランドおよび製品名は、米国Borland Software Corporationの米国における商標または登録商標です。
●その他、本文中に記載した商品名、システム名、会社名等は、一般に各社の商標または登録商標です。本書では、™
マーク、® マーク等の表記は省略していますが、本書に掲載している商品/団体に対してその商標権を侵害する意図は一切ありません。

ii

まえがき
革新的なプログラミング環境として登場したC++Builderもついに、バージョン６がでるまでになりました。C++BuilderはRADツールと呼ばれる開発環境の一種で直感的なプログラミングを可能にします。また、ANSI準拠のC++をフルサポートしていますので、これまでCやC++を使っていた方は、その知識をフルに活用してプログラミングすることができます。
本書では、このC++Builderを使う上で役立つ情報を提供するために、リファレンスマニュア
ル＋サンプルプログラムという構成をとっています。すべてのコンポーネントの解説に簡単なサンプルプログラムが付属しますので、実際の動作を確認しながらボタンなどのコンポーネントの使い方を理解することができます。
とにかく、C++Builderでいろいろなプログラムを書いてみて、それぞれのコンポーネントについて理解してみてください。本書がその助けになれば幸いです。

本書の目的
本書は、以下のような方を対象としてC++Builderでのプログラミングに必要な情報を提供する
ように心がけました。
●

C++またはCを習得していて、Windowsプログラミングの興味のある方●

C++Builderのコンポーネントの機能を理解したい方●

Delphiは便利だと思ったが、あらためてPascalを覚えるのに抵抗のある方

本書では、読者の方がある程度なんらかのプログラミング言語を習得していることを前提としています。このため、CとC++については簡単は構文解説程度にとどめています。C++やCについて理解したい方は、これらの言語の入門書を併用してください。
また、本書では、C++Builderの提供する機能以外を使うWindowsプログラミングの詳しい説
明も省略しています。これらについては、Windows API（Application Programming Interface）について詳しく書かれた書籍やオンラインヘルプを参考にしてください。

iii

本書の表記について
本文中の表記について
本書では、わかりやすくするために以下のような記号を用いて、本文の解説に付随する補足情報を表記しています。
注意してほしい部分や、本書をすすめる前に確認してほしい部分です。

NOTE

プログラミングで役に立つ、ちょっとしたテクニックを説明する部分です。

TIPS!
説明上の注意点やポイントとなる部分です。

POINT

C++ Builderの機能についての表記
C++ Builder 6のコンポーネントや機能を解説する際には、以下のようなアイコンを付加して機能を分類表記しています。

このアイコンが付いた機能やコンポーネントは、C++ Builder 6 Personalでは利用できません。

このアイコンが付いたコンポーネント、プロパティ、メソッドなどは、VCLアプリケーションでのみ利用できます。CLXアプリケーション作成時には利用できません。

このアイコンが付いたコンポーネント、プロパティ、メソッドなどは、CLXアプリケーションiv

本書の表記についてでのみ利用できます。VCLアプリケーション作成時には利用できません。
※

VCL、CLXについては『1-1 C++Builderの特徴』（→p.3）を参照してください。なお、CLXア
プリケーションは、C++ Builder 6 Personalでは作成することができません。

このアイコンが付いたコンポーネントは非ビジュアルコンポーネントです。
※

非ビジュアルコンポーネントについては本文9ページを参照してください。

リスト中での表記について
また、本書ではプログラムのコードを次のリストのように表現します。リスト中で、網掛けをした部分が、その場所で入力しなければならない部分、もしくはプログラムの記述を変更した部
分となります。

void __fastcall TForm1::Button1Click(TObject ＊Sender){
if (OpenDialog1->Execute() == true) {Image1->Picture->LoadFromFile(OpenDialog1->FileName);}}

サンプルプログラムの表記について
本書の第2部では、コンポーネントごとにサンプルプログラムを交えながら解説を進めています。掲載したサンプルプログラムの表記原則については、『7-5 コンポーネントのサンプルプログ
ラムについて』（→p.202）で説明しています。
また、本文中のプログラムでは、以下の規則に基づいてプログラムが記載されています。

変数名
変数名は、変数のタイプに続けて一文字目が大文字で始まる名前をつけています。たとえば、Testという名前でグローバル変数である場合には、変数名は gTest になります。ただし、例外として一般によく利用されているループ変数 i, j, k や、ポインタを表す p, q などについてはこの表記はv

適用しません。これは、そのほうが多くのプログラマにとって読みやすいだろうという筆者らの判断です。せっかく読みやすくするために表記法を決めているのに、逆に読みにくくなったのでは元も子もありません。
以下、変数のタイプを示す文字を示しておきます。
変数のタイプを示す文字

g
m
the
s
F

説明
グローバル変数
クラスのデータメンバ（メンバ変数）
ローカル変数構造体
プロパティの実体として利用するデータメンバ（メンバ変数）

表記例

gTimermText
theSwapTmp
sPtr
FValueコンポーネント名
コンポーネント名は、機能にコンポーネントの種類（タイプ）を続けます。例えば、取り消し（Cancel）の処理を実行するボタン（Button）であれば名前はCancelButtonとします。また、メニュー項目（Menu）であれば、CancelMenuといった具合に名前をつけます。
なお、本書では、他の部分の命名規則については、基本的にC++Builderの開発元であるボーランド社が推奨する命名規則に準じています。ボーランド社の推奨命名規則についてはC++Builder
6付属のオンラインマニュアル等を参照してください。
命名規則をきっちり決めておくことは、他の人に対して読みやすいプログラムとするだけでな
く、あとで自分が読み直すときにも大いに役立ちます。プログラムを作るときには、自分なりの命名規則を守る癖をつけておきたいものです。

vi

本書の表記について

vii

目次

Contents

まえがき ……………………………………………………………………………………………iii
本書の表記について ………………………………………………………………………………iv

第1部

C++Builder 6の基本操作

第1章 はじめに+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++3

1-1●C++Builderの特徴 ………………………………………………………………………3
1-2●はじめてのプログラミング ………………………………………………………………6■

STEP1 コンポーネントの配置 ………………………………………………………………8■

STEP2 プロパティの変更 …………………………………………………………………13■

STEP3 イベントハンドラの設定 …………………………………………………………16■

STEP4 実行 …………………………………………………………………………………18

1-3●C++Builder6を選ぶ 〜パッケージの選択〜 ………………………………………19

第2章 IDEの概要 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++23

2-1●ツールバー ………………………………………………………………………………24
ツールバーのカスタマイズ ……………………………………………………………………24■

ツールバーのウィンドウ化 ……………………………………………………………………25■

2-2●コンポーネントパレット ………………………………………………………………26
viii

目次

2-3●オブジェクトインスペクタ ……………………………………………………………26
設計時プロパティの表示と設定 ………………………………………………………………26■

イベントハンドラの作成援助 …………………………………………………………………27■

オブジェクトインスペクタの操作例 …………………………………………………………28■

2-4●オブジェクトツリー ……………………………………………………………………30
2-5●フォーム …………………………………………………………………………………31
2-6●コードエディタ …………………………………………………………………………33
構文強調表示 ……………………………………………………………………………………34■

高度な検索と置換 ………………………………………………………………………………34■

言語要素の状況感知型ヘルプ …………………………………………………………………37■

入力支援機能 ……………………………………………………………………………………38■

右クリックによるコンテキストメニュー ……………………………………………………38■

2-7●クラスエクスプローラ …………………………………………………………………45
右クリックによるコンテキストメニュー ……………………………………………………46■

2-8●ダイアグラム ……………………………………………………………………………49
2-9●オブジェクトリポジトリ ………………………………………………………………51
オブジェクトリポジトリの基本的な利用方法 ………………………………………………52■

プロジェクト作成時に利用 ……………………………………………………………………54■

登録されたオブジェクトの（再）利用 ………………………………………………………55■

プロジェクト内でのオブジェクトの再利用 …………………………………………………57■

ウィザードの利用 ………………………………………………………………………………57■

リポジトリへのオブジェクトの追加 …………………………………………………………58■

カスタマイズ ……………………………………………………………………………………60■

2-10●その他の機能 …………………………………………………………………………61
イメージエディタ（Image Editor）…………………………………………………………61■

データベースエクスプローラとデータベースデスクトップ ………………………………62■

タイプライブラリエディタ ……………………………………………………………………64■■

CodeGuard ……………………………………………………………………………………64■

VCプロジェクト変換ユーティリティ ………………………………………………………65

第3章 フォームへコンポーネントを配置する +++++++++++++++++++++++++67

3-1●コンポーネントの選択と配置 …………………………………………………………67
3-2●配置したコンポーネントの位置やサイズの変更 ……………………………………68ix

前後に移動する …………………………………………………………………………………68■

位置を合わせる …………………………………………………………………………………70■

サイズを合わせる ………………………………………………………………………………71■

グリッドに合わせる ……………………………………………………………………………71■

コンポーネントの位置をロックする …………………………………………………………72■

拡大縮小する ……………………………………………………………………………………72■

3-3●コンポーネント配置時に使うテクニック ……………………………………………73
タブ順序の設定 …………………………………………………………………………………73■

非ビジュアルコンポーネントの作成順序の設定 ……………………………………………75■

他のフォームのコンポーネントを参照する …………………………………………………76■

第4章 プロジェクト +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++79

4-1●プロジェクトとは？ ……………………………………………………………………79
4-2●プロジェクトのファイル構成 …………………………………………………………80
4-3●プロジェクトマネージャ ………………………………………………………………83
4-4●プロジェクトオプション ………………………………………………………………88「フォーム」タブ ………………………………………………………………………………88■「アプリケーション」タブ ……………………………………………………………………89■「コンパイラ」タブ ……………………………………………………………………………90■「コンパイラ（詳細）」タブ …………………………………………………………………94

■

「C++」
「Pascal」タブ………………………………………………………………………97■「リンカ」タブ …………………………………………………………………………………98■「リンカ（詳細）」タブ………………………………………………………………………102■「ディレクトリ/条件」タブ…………………………………………………………………103■「バージョン情報」タブ ……………………………………………………………………103■「パッケージ」タブ …………………………………………………………………………105■「Tasm」タブ ………………………………………………………………………………106■「CodeGuard」タブ ………………………………………………………………………108

■

x

目次

第5章 デバッグ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++109

5-1●デバッグ用アプリケーションの準備 ………………………………………………110
フォームのサイズの変更 ……………………………………………………………………110■

エディットボックスの配置 …………………………………………………………………111■

ラベルの配置 …………………………………………………………………………………112■

ボタンの配置 …………………………………………………………………………………112■

5-2●デバッグのための準備 ………………………………………………………………113
デバッグ情報の生成 …………………………………………………………………………113■

統合デバッガの利用準備 ……………………………………………………………………114■

5-3●コンパイル時エラー …………………………………………………………………114
5-4●実行中のエラー修正 …………………………………………………………………118
5-5●論理エラーのデバッグ ………………………………………………………………119
ブレークポイントの設定 ……………………………………………………………………119■

評価/変更の表示………………………………………………………………………………120■

ツールチップ式評価 …………………………………………………………………………122■

インスペクトを実行 …………………………………………………………………………123■

ステップ実行 …………………………………………………………………………………124■

5-6●実行時エラーのデバッグ ……………………………………………………………125
5-7●その他のデバッグ機能 ………………………………………………………………127■

VCLソースのデバッグ ………………………………………………………………………127

ブレークポイントの一覧表示 ………………………………………………………………127■

条件付きブレークポイント …………………………………………………………………128■

監視式 …………………………………………………………………………………………129■

値の変更によるプログラムの停止 …………………………………………………………130■■

DLLのデバッグ ………………………………………………………………………………130

ローカル変数のインスペクト ………………………………………………………………131■

イベントログの表示 …………………………………………………………………………131■

第6章 C++Builderプログラミング ++++++++++++++++++++++++++++++++++133

6-1●C++の基礎 ……………………………………………………………………………133xi

型と範囲 ………………………………………………………………………………………134■

配列 ……………………………………………………………………………………………135■

演算子 …………………………………………………………………………………………136■

制御文1（if〜else）…………………………………………………………………………138■

制御文2（while）……………………………………………………………………………140■

制御文3（do〜while）………………………………………………………………………142■

制御文4（for） ………………………………………………………………………………143■

制御文5（switch〜case） ………………………………………………………………144■

制御文6（goto） ……………………………………………………………………………145■

例外処理（try〜catch, throw） …………………………………………………………146■

関数 ……………………………………………………………………………………………148■

6-2●ポインタ ………………………………………………………………………………150
ポインタって？ ………………………………………………………………………………150■

文字列へのポインタ …………………………………………………………………………151■

配列へのポインタ ……………………………………………………………………………152■

関数へのポインタ ……………………………………………………………………………153■

6-3●構造体 …………………………………………………………………………………154
構造体って？ …………………………………………………………………………………155■

構造体とポインタ ……………………………………………………………………………156■

リスト構造 ……………………………………………………………………………………156■

6-4●クラス …………………………………………………………………………………158
構造体からクラスへ …………………………………………………………………………158■

メンバ関数 ……………………………………………………………………………………160■

コンストラクタ（構築子）とデストラクタ（消滅子）……………………………………162■■

new演算子とdelete演算子 ………………………………………………………………163

クラス（その他）………………………………………………………………………………165■

6-5●継承 ……………………………………………………………………………………166
クラスの継承 …………………………………………………………………………………166■

仮想関数 ………………………………………………………………………………………167■

6-6●フォームと継承 ………………………………………………………………………168
フォームはクラス ……………………………………………………………………………168■

6-7●C++Builder独自な部分 ……………………………………………………………169■̲ ̲fastcall修飾子 ……………………………………………………………………………170■̲ ̲publishedキーワード ……………………………………………………………………170

プロパティ（̲ ̲property）キーワード……………………………………………………171

■

xii

目次

2

第 部
C++Builder 6基本コンポーネント解説

第7章 基本コンポーネントリファレンス +++++++++++++++++++++++++++++177

7-1●コンポーネントの基礎知識 …………………………………………………………177
プロパティ ……………………………………………………………………………………178■

メソッド ………………………………………………………………………………………179■

イベント ………………………………………………………………………………………179■

7-2●主なプロパティ ………………………………………………………………………180■

Actionプロパティ……………………………………………………………………………180■

Alignプロパティ ……………………………………………………………………………180■

Alignmentプロパティ………………………………………………………………………181■

Anchorsプロパティ…………………………………………………………………………182■

Captionプロパティ …………………………………………………………………………184■

Colorプロパティ ……………………………………………………………………………184■

Constrainsプロパティ ……………………………………………………………………185■

Cursorプロパティ……………………………………………………………………………186■

Enabledプロパティ …………………………………………………………………………187■

Fontプロパティ………………………………………………………………………………187■

Heightプロパティ …………………………………………………………………………188■

Hintプロパティ ………………………………………………………………………………188■

HelpContextプロパティ …………………………………………………………………189■

HelpKeywordプロパティ …………………………………………………………………189■

HelpTypeプロパティ ………………………………………………………………………189■

Leftプロパティ ………………………………………………………………………………189■

Nameプロパティ ……………………………………………………………………………190■

PopupMenuプロパティ ……………………………………………………………………190■

ShowHintプロパティ ………………………………………………………………………190■

Tagプロパティ ………………………………………………………………………………191

xiii

■

Textプロパティ………………………………………………………………………………191■

Topプロパティ ………………………………………………………………………………192■

Visibleプロパティ……………………………………………………………………………192■

Widthプロパティ ……………………………………………………………………………192

7-3●主なメソッド …………………………………………………………………………193■

Hideメソッド…………………………………………………………………………………193■

Refreshメソッド ……………………………………………………………………………193■

Repaintメソッド ……………………………………………………………………………194■

SetFocusメソッド …………………………………………………………………………194■

Showメソッド ………………………………………………………………………………194■

Updateメソッド ……………………………………………………………………………195

7-4●主なイベント …………………………………………………………………………195■

OnClickイベント ……………………………………………………………………………195■

OnDblClickイベント ………………………………………………………………………196■

OnKeyDownイベント………………………………………………………………………196■

OnKeyPressイベント ……………………………………………………………………199■

OnKeyUpイベント …………………………………………………………………………199■

OnMouseDownイベント …………………………………………………………………200■

OnMouseMoveイベント …………………………………………………………………201■

OnMouseUpイベント ……………………………………………………………………201

7-5●コンポーネントのサンプルプログラムについて……………………………………202
7-6●VCLとCLXについて…………………………………………………………………202

第8章 「Standard」コンポーネント +++++++++++++++++++++++++++++++205

8-1●フレーム（Frames）…………………………………………………………………206
8-2●メインメニュー（MainMenu） ……………………………………………………208
8-3●ポップアップメニュー（PopupMenu）……………………………………………215
8-4●文字列の表示（Label）………………………………………………………………218
8-5●編集可能な文字列（Edit）……………………………………………………………221
8-6●簡単なエディタ（Memo）……………………………………………………………224
8-7●ボタン（Button） ……………………………………………………………………228
8-8●チェックボックス（CheckBox） …………………………………………………231
8-9●ラジオボタン（RadioButton） ……………………………………………………233
xiv

目次

8-10●リストボックス（ListBox）………………………………………………………235
8-11●コンボボックス（ComboBox） …………………………………………………239
8-12●スクロールバー（ScrollBar） ……………………………………………………242
8-13●グループボックス（GroupBox）…………………………………………………245
8-14●ラジオボタングループ（RadioGroup）…………………………………………246
8-15●パネル（Panel）……………………………………………………………………249
8-16●アクションリスト（ActionList）…………………………………………………253
アクションの操作 ……………………………………………………………………………253■

第9章 「Additional」コンポーネント +++++++++++++++++++++++++++++259

9-1●イメージ付きボタン（BitBtn）………………………………………………………260
9-2●スピードボタン（SpeedButton）…………………………………………………263
9-3●マスクエディット（MaskEdit）……………………………………………………266
9-4●文字列グリッド（StringGrid） ……………………………………………………270
9-5●グリッドコントロール（DrawGrid）………………………………………………275
9-6●イメージ（Image）……………………………………………………………………279
9-7●図形（Shape） ………………………………………………………………………284
9-8●べベル（Bevel）………………………………………………………………………288
9-9●スクロールボックス（ScrollBox）…………………………………………………289
9-10●チェックボックス付きリストボックス（CheckListBox）……………………293
9-11●スプリッタ（Splitter）……………………………………………………………297
9-12●テキスト表示コントロール（StaticText） ……………………………………301
9-13●コントロールバー（ControlBar） ………………………………………………303
9-14●アプリケーションイベント（ApplicationEvents）……………………………305
9-15●リスト項目のエディタ（ValueListEditor）……………………………………307
9-16●ラベルつきエディトボックス（LabeledEdit）…………………………………312
9-17●色選択コンボボックス（ColorBox） ……………………………………………315
9-18●チャート（Chart）…………………………………………………………………317
9-19●アクションマネージャ（ActionManager）……………………………………325
9-20●アクションメインメニューバー（ActionMainMenuBar） …………………331
9-21●アクションツールバー（ActionToolBar）………………………………………334
9-22●カスタマイズダイアログ（CustomizeDlg）……………………………………338xv

第10章 「Win32（VCL）、Common Controls（CLX）」コンポーネント ++341

10-1●タブコントロール（TabControl） ………………………………………………342
10-2●ページコントロール（PageControl） …………………………………………345
10-3●イメージリスト（ImageList）……………………………………………………350
10-4●簡易ワープロ（RichEdit）…………………………………………………………353
10-5●トラックバー（TrackBar）………………………………………………………359
10-6●プログレスバー（ProgressBar） ………………………………………………363
10-7●値の増減（UpDown） ……………………………………………………………366
10-8●ホットキー（HotKey）……………………………………………………………368
10-9●アニメーション（Animate）………………………………………………………370
10-10●日付（時刻）入力ボックス（DateTimePicker）……………………………374
10-11●日付入力カレンダー（MonthCalender）……………………………………376
10-12●ツリービュー（TreeView） ……………………………………………………379
10-13●リストビュー（ListView）………………………………………………………388
10-14●ヘッダーコントロール（HeadreControl）……………………………………397
10-15●ステータスバー（StatusBar）…………………………………………………401
10-16●ツールバー（ToolBar）…………………………………………………………404
10-17●クールバー（CoolBar）…………………………………………………………411
10-18●ページスクローラー（PageScroller） ………………………………………416
10-19●拡張コンボボックス（ComboBoxEx）………………………………………418
10-20●TextViewer………………………………………………………………………422
10-21●TextBrowser ……………………………………………………………………425
10-22●SpinEdit …………………………………………………………………………428
10-23●IconView …………………………………………………………………………430

第11章 「Dialogs」コンポーネント ++++++++++++++++++++++++++++++++435

11-1●オープンダイアログ（OpenDialog）……………………………………………436
11-2●セーブダイアログ（SaveDialog）………………………………………………440
11-3●画像付きオープンダイアログ（OpenPictureDialog）………………………443
11-4●画像付きセーブダイアログ（SavePictureDialog） …………………………446
xvi

目次

11-5●フォントダイアログ（FontDialog） ……………………………………………448
11-6●カラーダイアログ（ColorDialog）………………………………………………451
11-7●印刷ダイアログ（PrintDialog）…………………………………………………454
11-8●印刷設定ダイアログ（PrinterSetupDialog）…………………………………457
11-9●検索ダイアログ（FindDialog）……………………………………………………459
11-10●置換ダイアログ（ReplaceDialog）……………………………………………462

第12章 その他のコンポーネントとクラス +++++++++++++++++++++++++++465

12-1●フォーム（TFormクラス）…………………………………………………………465
12-2●C++Builderの文字列（AnsiStringクラス） …………………………………468■

char＊とAnsiStringの相互変換 …………………………………………………………469■

AnsiStringの比較 …………………………………………………………………………469■

AnsiStringクラスのメソッド………………………………………………………………470

12-3●文字列リスト（TStringsクラス） ………………………………………………472
12-4●キャンバス（TCanvasクラス） …………………………………………………475
12-5●便利な関数……………………………………………………………………………479

索引 ………………………………………………………………………………………………481

xvii