| 謝辞 | 3 |
| 『Delphi 4プログラミングバイブル』発刊に寄せて | 4 |
| 監訳者まえがき | 5 |
| 著者/監訳者紹介 | 6 |
| はじめに | 7 |
| サンプルプログラムのソースについて | 9 |
| ■PART1 | DelphiとObject Pascal | 33 |
| 第1章 | Delphi 4の統合開発環境 | 35 |
| 1.1 | Delphi 4の各種エディション | 36 |
| 1.2 | AppBrowserエディタ | 36 |
| 1.2.1 | コードエクスプローラ | 38 |
| 1.2.2 | エディタ内でのコードブラウザ | 40 |
| 1.2.3 | クラス定義補完 | 43 |
| 1.2.4 | 支援機能 | 44 |
| 1.2.5 | しおり(ブックマーク)の用法 | 45 |
| 1.2.6 | ショートカットキーの追加 | 46 |
| 1.3 | フォームデザイナ | 48 |
| 1.3.1 | コンポーネントエディタ | 49 |
| 1.3.2 | コンポーネントパレットの裏ワザ | 50 |
| 1.3.3 | イベントハンドラの定義 | 51 |
| 1.3.4 | コンポーネントのコピーと貼り付け | 51 |
| 1.3.5 | コンポーネントテンプレートを使ったコピー | 53 |
| 1.4 | プロジェクト管理 | 54 |
| 1.4.1 | プロジェクトのオプション | 55 |
| 1.4.2 | プロジェクトのコンパイルと構築 | 56 |
| 1.5 | その他の外部ツール | 57 |
| 1.6 | システムが作成するファイル | 58 |
| 1.6.1 | ソースコードファイルの内容 | 61 |
| 1.7 | オブジェクトリポジトリ | 63 |
| 1.8 | 次の章では…… | 66 |
| 第2章 | Delphi 4とPascalの先進機能 | 67 |
| 2.1 | Delphi 4の数値型 | 67 |
| 2.1.1 | 整数型――LongWordとInt64 | 68 |
| 2.1.2 | 新しい実数型 | 68 |
| 2.2 | Delphiの文字列 | 69 |
| 2.2.1 | メモリ内の文字列を見る | 70 |
| 2.2.2 | Delphiの文字列とWindowsのPChar | 72 |
| 2.2.3 | 文字列のフォーマット | 74 |
| 2.2.4 | リソース文字列定数 | 77 |
| 2.2.5 | 日本語の取り扱い | 77 |
| 2.3 | Delphi 4の動的配列 | 78 |
| 2.3.1 | オープン配列パラメータと動的配列パラメータ | 80 |
| 2.3.2 | バリアント型オープン配列パラメータ | 82 |
| 2.4 | バリアント型 | 84 |
| 2.4.1 | バリアント型の詳細 | 86 |
| 2.4.2 | バリアント型は遅い | 86 |
| 2.5 | Delphi 4のオーバーロードとデフォルトパラメータ | 87 |
| 2.5.1 | 関数のオーバーロード | 88 |
| 2.5.2 | デフォルトパラメータ | 90 |
| 2.6 | Windowsプログラミング | 92 |
| 2.6.1 | Windowsのハンドル | 92 |
| 2.6.2 | 外部宣言 | 94 |
| 2.6.3 | 手続き型 | 94 |
| 2.6.4 | Windowsのコールバック関数 | 97 |
| 2.6.5 | 簡単なWindowsプログラム | 99 |
| 2.7 | ユニットとプログラムの構造 | 100 |
| 2.7.1 | ユニットとスコープ | 102 |
| 2.7.2 | ユニットと名前の重複 | 103 |
| 2.7.3 | ユニットとプログラム | 104 |
| 2.8 | 次の章では…… | 105 |
| 第3章 | Delphiのオブジェクト指向プログラミング | 107 |
| 3.1 | クラスとオブジェクトについて | 108 |
| 3.1.1 | Delphiのオブジェクト参照モデル | 109 |
| 3.1.2 | プライベート、プロテクト、パブリック | 110 |
| 3.1.3 | カプセル化とフォーム | 112 |
| 3.1.4 | selfキーワード | 113 |
| 3.1.5 | コンポーネントの動的な作成 | 113 |
| 3.1.6 | コンストラクタの宣言 | 115 |
| 3.1.7 | オーバーロードメソッドとオーバーロードコンストラクタ | 116 |
| 3.1.8 | 完全なTDateクラス | 117 |
| 3.2 | 型の継承 | 120 |
| 3.2.1 | 継承と型の互換性 | 122 |
| 3.3 | レイトバインディングと多態性(ポリモーフィズム) | 124 |
| 3.3.1 | メソッドのオーバーライド、再定義、再導入 | 126 |
| 3.3.2 | 仮想メソッドとダイナミックメソッド | 128 |
| 3.3.3 | メッセージハンドラ | 129 |
| 3.3.4 | 抽象メソッド | 130 |
| 3.4 | 実行時型情報 | 131 |
| 3.5 | ビジュアルフォーム継承 | 133 |
| 3.5.1 | ベースフォームからの継承 | 134 |
| 3.5.2 | ポリモーフィックフォーム | 137 |
| 3.6 | インターフェイスと多重継承 | 141 |
| 3.6.1 | インターフェイスの宣言 | 142 |
| 3.6.2 | 多重継承の例 | 144 |
| 3.6.3 | 単純な多態性とインターフェイス多態性 | 146 |
| 3.6.4 | インターフェイス変数の配列の運用 | 148 |
| 3.6.5 | 多重継承との類似性 | 149 |
| 3.7 | 例外処理 | 150 |
| 3.7.1 | 例外とスタック | 153 |
| 3.7.2 | finallyブロック | 154 |
| 3.8 | 次の章では…… | 155 |
| 第4章 | VCLのプログラミングテクニック | 157 |
| 4.1 | クラスメソッドとクラスデータ | 157 |
| 4.1.1 | オブジェクトカウンタを持つクラス | 158 |
| 4.1.2 | メソッドポインタ | 162 |
| 4.1.3 | カウンタプログラムの新バージョン | 163 |
| 4.2 | クラス参照 | 168 |
| 4.2.1 | クラス参照を使って実行時にコンポーネントを作る方法 | 169 |
| 4.3 | 可視性指定子published | 171 |
| 4.3.1 | プロパティの定義 | 172 |
| 4.3.2 | フォームにプロパティを追加する方法 | 174 |
| 4.3.3 | TDateクラスにプロパティを追加する方法 | 176 |
| 4.4 | Delphiのイベント | 178 |
| 4.4.1 | イベントとプロパティ | 179 |
| 4.4.2 | TDateクラスにイベントを追加する方法 | 179 |
| 4.5 | TDateコンポーネントの作成 | 181 |
| 4.6 | TObjectクラス | 183 |
| 4.6.1 | クラス情報の表示 | 184 |
| 4.7 | VCL階層 | 185 |
| 4.7.1 | コンポーネント | 186 |
| 4.7.2 | Windows独自のコンポーネント | 187 |
| 4.7.3 | オブジェクト | 188 |
| 4.8 | 一般的なVCLのプロパティ | 189 |
| 4.8.1 | Nameプロパティ | 191 |
| 4.8.2 | コンポーネントのサイズと位置に関係するプロパティ | 194 |
| 4.8.3 | カスタマイズ可能なTagプロパティ | 195 |
| 4.8.4 | ユーザーインターフェイス――色とフォント | 195 |
| 4.9 | 一般的なVCLのメソッド | 196 |
| 4.10 | 一般的なVCLのイベント | 198 |
| 4.11 | Delphiのリスト | 200 |
| 4.11.1 | オブジェクトとデータのリストの用法 | 201 |
| 4.12 | 次の章では…… | 203 |
| ■PART2 | コンポーネントの使用 | 205 |
| 第5章 | 標準コンポーネントの高度な使い方 | 207 |
| 5.1 | コンポーネントツールボックスの内容 | 208 |
| 5.1.1 | テキスト入力 | 208 |
| 5.1.2 | オプションの選択 | 210 |
| 5.1.3 | リスト | 211 |
| 5.1.4 | 範囲(レンジ) | 214 |
| 5.1.5 | コンポーネント間のドラッグ | 215 |
| 5.1.6 | 入力フォーカスの処理 | 217 |
| 5.2 | メニューの操作 | 220 |
| 5.2.1 | ポップアップメニュー | 221 |
| 5.2.2 | メニュー項目を動的に作成する方法 | 221 |
| 5.2.3 | Delphi 4のメニュー画像 | 224 |
| 5.2.4 | メニューチェックマークのカスタマイズ | 226 |
| 5.2.5 | システムメニューのカスタマイズ | 228 |
| 5.3 | Delphi 4のアクションコマンド | 231 |
| 5.3.1 | アクションの実例 | 234 |
| 5.4 | オーナー描画コントロール | 238 |
| 5.4.1 | ビットマップメニュー項目 | 238 |
| 5.4.2 | Delphi 4のオーナー描画メニュー項目 | 240 |
| 5.5 | 色のListBox | 243 |
| 5.6 | ListViewとTreeView | 246 |
| 5.6.1 | ビジュアルな参考資料リスト | 246 |
| 5.7 | 本書の目次ツリー | 252 |
| 5.8 | 次の章では…… | 256 |
| 第6章 | フォーム、ウィンドウ、アプリケーション | 257 |
| 6.1 | フォームとウィンドウ | 257 |
| 6.1.1 | オーバーラップウィンドウ、ポップアップウィンドウ、 子ウィンドウ | 259 |
| 6.2 | アプリケーションとウィンドウ | 261 |
| 6.2.1 | アプリケーションウィンドウの表示 | 262 |
| 6.2.2 | アプリケーションのシステムメニュー | 263 |
| 6.2.3 | アプリケーションとフォームの有効化 | 265 |
| 6.3 | フォームスタイルと境界スタイルの設定 | 266 |
| 6.3.1 | フォーム境界のスタイル | 267 |
| 6.3.2 | フォーム境界のアイコン | 269 |
| 6.3.3 | その他のウィンドウスタイル | 270 |
| 6.4 | フォームの拡大/縮小 | 272 |
| 6.4.1 | 任意の拡大/縮小 | 273 |
| 6.4.2 | 自動拡大/縮小 | 275 |
| 6.4.3 | フォームの位置とサイズの設定 | 276 |
| 6.5 | アプリケーションにサウンドを追加する方法 | 277 |
| 6.5.1 | フォームとクライアント領域のサイズ | 278 |
| 6.5.2 | Delphi 4のフォームの制約 | 278 |
| 6.6 | フォームの作成 | 279 |
| 6.6.1 | Delphi 4のフォーム作成順序 | 280 |
| 6.6.2 | 画面オブジェクトによるフォームの追跡 | 283 |
| 6.6.3 | フォームの終了 | 287 |
| 6.7 | フォームへの入力 | 288 |
| 6.7.1 | キーボード入力の管理 | 288 |
| 6.7.2 | マウス入力の受け付け | 290 |
| 6.7.3 | マウスボタン | 291 |
| 6.7.4 | マウスを使ったドラッグと描画 | 293 |
| 6.8 | 次の章では…… | 297 |
| 第7章 | グラフィック、ペイント、ビットマップ | 299 |
| 7.1 | フォームの描画 | 299 |
| 7.1.1 | Windowsでの描画とペイント | 300 |
| 7.1.2 | 描画ツール | 302 |
| 7.2 | 図形の描画 | 303 |
| 7.3 | Delphiのグラフィカルコンポーネント | 310 |
| 7.4 | ビットマップでの描画 | 311 |
| 7.4.1 | 図形の描画 | 311 |
| 7.4.2 | イメージビューア | 314 |
| 7.4.3 | ビットマップの最大化 | 317 |
| 7.5 | ボタンのアニメビットマップ | 323 |
| 7.5.1 | 2つの状態を持つボタン | 323 |
| 7.5.2 | ビットマップのイメージ | 324 |
| 7.5.3 | 回転する地球 | 326 |
| 7.5.4 | ビットマップのリスト、リソースの利用、PaintBox | 328 |
| 7.6 | アニメーションコントロール | 332 |
| 7.6.1 | ボタンのAnimateコントロール | 335 |
| 7.7 | グラフィカルなグリッド | 335 |
| 7.7.1 | フォントのグリッド | 337 |
| 7.8 | グリッドの中の地雷 | 340 |
| 7.9 | TeeChartの使用 | 345 |
| 7.9.1 | 最初のサンプルの作成 | 346 |
| 7.9.2 | チャートへのデータの追加 | 347 |
| 7.9.3 | 系列の動的な作成 | 350 |
| 7.10 | メタファイルの使用 | 351 |
| 7.11 | 次の章では…… | 354 |
| 第8章 | ツールバーとその他のインターフェイス要素 | 357 |
| 8.1 | パネルを使ったツールバーの作成 | 358 |
| 8.1.1 | ツールバーのコンボボックス | 362 |
| 8.2 | ヒントをカスタマイズするには | 363 |
| 8.3 | Toolbarコントロール | 366 |
| 8.4 | 本当にクールなツールバーの作成 | 370 |
| 8.4.1 | Delphi 4のコントロールバー | 372 |
| 8.4.2 | コントロールバーのメニュー | 375 |
| 8.5 | ステータスバーの作成 | 376 |
| 8.5.1 | ステータスバーのメニューヒント | 377 |
| 8.5.2 | ステータスバーのスピードボタンヒント | 378 |
| 8.6 | フォームのスクロール | 379 |
| 8.6.1 | スクロールテストのサンプル | 380 |
| 8.6.2 | 自動的なスクロール | 383 |
| 8.6.3 | イメージのスクロール | 384 |
| 8.6.4 | スクロールとフォームの座標 | 385 |
| 8.7 | フォームの分割テクニック | 387 |
| 8.7.1 | 水平分割 | 389 |
| 8.7.2 | ヘッダー付きの分割 | 390 |
| 8.8 | Delphi 4のコントロールアンカー | 393 |
| 8.8.1 | Delphi 4でのツールバーとコントロールのドッキング | 395 |
| 8.8.2 | ツールバーとコントロールバーのドッキング | 396 |
| 8.9 | 次の章では…… | 397 |
| 第9章 | ダイアログボックスとマルチページフォーム | 399 |
| 9.1 | ダイアログボックスとフォーム | 399 |
| 9.1.1 | 2次フォームのプログラムへの追加 | 400 |
| 9.1.2 | 実行時の2次フォームの作成 | 400 |
| 9.1.3 | フォームメニューのマージ | 403 |
| 9.2 | ダイアログボックスを作る方法 | 403 |
| 9.2.1 | RefListサンプルのダイアログボックス | 404 |
| 9.2.2 | モードレスなダイアログボックス | 407 |
| 9.2.3 | Windowsのコモンダイアログ | 411 |
| 9.2.4 | たくさんのメッセージボックス | 412 |
| 9.2.5 | 拡張ダイアログボックス | 415 |
| 9.3 | バージョン情報ボックスとスプラッシュ画面 | 417 |
| 9.3.1 | シークレット画面の作成 | 418 |
| 9.3.2 | スプラッシュ画面の作成 | 420 |
| 9.4 | マルチページフォーム | 424 |
| 9.4.1 | PageControlsとTabSheets | 424 |
| 9.5 | タブ付きイメージビューアの作成 | 429 |
| 9.5.1 | ウィザードのユーザーインターフェイス | 431 |
| 9.6 | PageControlへのドッキング | 434 |
| 9.7 | 次の章では…… | 435 |
| 第10章 | MDIアプリケーションの作成 | 437 |
| 10.1 | WindowsのMDI――技術的概要 | 437 |
| 10.2 | Delphiでのフレームと子ウィンドウ | 439 |
| 10.2.1 | 完全な[ウィンドウ]メニューを作る方法 | 440 |
| 10.2.2 | MdiDemoサンプル | 441 |
| 10.3 | さまざまな種類の子ウィンドウを持つMDIアプリケーション | 446 |
| 10.3.1 | 子フォームとメニュー | 446 |
| 10.3.2 | 跳ねる図形の追加 | 447 |
| 10.3.3 | メインフォームの変更 | 449 |
| 10.3.4 | MdiClientウィンドウのサブクラス化 | 450 |
| 10.4 | 次の章では…… | 453 |
| ■PART3 | データベースアプリケーション | 455 |
| 第11章 | データベースアプリケーションの構築 | 457 |
| 11.1 | データ、ファイル、データベース、テーブル | 458 |
| 11.2 | Delphiのデータベースコンポーネント | 459 |
| 11.2.1 | テーブルと問い合わせ | 460 |
| 11.2.2 | データセットの状態 | 461 |
| 11.2.3 | その他のデータアクセスコンポーネント | 462 |
| 11.2.4 | Delphiのデータベース対応コントロール | 463 |
| 11.3 | データベースグリッドのカスタマイズ | 464 |
| 11.3.1 | テーブルの状態 | 467 |
| 11.4 | 項目志向のデータベース対応コントロール | 467 |
| 11.4.1 | DBEditコントロールの使用 | 468 |
| 11.4.2 | Delphi 4を使ったデータベーステーブルの作成 | 469 |
| 11.4.3 | 選択できる値の一覧表示 | 472 |
| 11.5 | データ項目へのアクセス | 473 |
| 11.5.1 | 項目クラスの階層 | 475 |
| 11.5.2 | 計算項目の追加 | 478 |
| 11.6 | テーブルの項目の検索と追加 | 481 |
| 11.6.1 | テーブルのレコード検索 | 482 |
| 11.6.2 | テーブルの列の合計 | 485 |
| 11.6.3 | テーブルの列の編集 | 488 |
| 11.7 | 標準のコントロールを持つデータベースアプリケーション | 488 |
| 11.7.1 | Delphiのデータベース対応コントロールの模倣 | 489 |
| 11.7.2 | データベースへの要求の送信 | 493 |
| 11.7.3 | データベースイベント | 495 |
| 11.7.4 | 項目イベント | 497 |
| 11.7.5 | カレンダーでの日付の編集 | 498 |
| 11.8 | データベースのテーブルの調査 | 500 |
| 11.8.1 | 実行時のデータベースとテーブルの選択 | 501 |
| 11.8.2 | 複数のテーブルの表示 | 502 |
| 11.9 | テーブルのファイルとしての使用 | 505 |
| 11.9.1 | フォームとその起動コード | 506 |
| 11.9.2 | 新しいテーブルの作成 | 507 |
| 11.9.3 | 適切な項目を持った既存テーブルの選択 | 510 |
| 11.9.4 | レコードの追加、削除 | 512 |
| 11.10 | マルチレコードのグリッド | 513 |
| 11.10.1 | コントロールグリッドパネルのサイズ変更 | 514 |
| 11.11 | データベースのチャート | 515 |
| 11.12 | 次の章では…… | 517 |
| 第12章 | 高度なデータベースアクセス | 519 |
| 12.1 | データモジュール | 519 |
| 12.1.1 | 複数のビューのためのデータモジュール | 521 |
| 12.1.2 | 項目プロパティと初期値の設定 | 523 |
| 12.1.3 | テーブルの標準的なフィルタ | 524 |
| 12.1.4 | テーブルの独自のフィルタ | 526 |
| 12.1.5 | 同期しないビューを持つMDIアプリケーション | 529 |
| 12.2 | 問い合わせの使用 | 531 |
| 12.2.1 | パラメータを持つ問い合わせ | 535 |
| 12.3 | 複数のテーブルの使用 | 538 |
| 12.3.1 | ウィザードでのマスター/詳細フォームの作成 | 538 |
| 12.3.2 | 問い合わせのマスター/詳細構造 | 540 |
| 12.3.3 | 参照コンボボックスの使用 | 541 |
| 12.3.4 | グリッドでの参照 | 542 |
| 12.4 | DBGridコントロールの高度な使用 | 544 |
| 12.4.1 | DBGridへのペイント | 544 |
| 12.4.2 | チェックボックスのセル | 547 |
| 12.4.3 | 複数の選択を許すグリッド | 549 |
| 12.5 | データディクショナリ | 550 |
| 12.5.1 | データディクショナリと項目エディタ | 551 |
| 12.5.2 | 属性セットのプロパティ | 552 |
| 12.5.3 | データディクショナリの検索 | 553 |
| 12.6 | データベースエラーの処理 | 554 |
| 12.7 | マルチユーザーParadoxアプリケーション | 558 |
| 12.7.1 | 低レベルのBDE | 558 |
| 12.7.2 | ローカルなテーブルのパック | 560 |
| 12.7.3 | ネットワークでのParadoxファイルの使用 | 563 |
| 12.7.4 | 並行処理 | 564 |
| 12.7.5 | データベーストランザクション | 567 |
| 12.7.6 | トランザクションでのキャッシュアップデートの使用 | 570 |
| 12.7.7 | クラッシュリカバリ | 575 |
| 12.8 | 次の章では…… | 575 |
| 第13章 | クライアント/サーバープログラミング | 577 |
| 13.1 | クライアント/サーバープログラミングの概要 | 578 |
| 13.2 | クライアント/サーバーとDelphi | 580 |
| 13.2.1 | データベースコンポーネント | 580 |
| 13.2.2 | BDEの役割 | 581 |
| 13.3 | ローカルからクライアント/サーバーへ | 582 |
| 13.3.1 | 単方向カーソル | 582 |
| 13.3.2 | クライアント/サーバーのTableコンポーネントと Queryコンポーネント | 584 |
| 13.4 | Local InterBase | 585 |
| 13.5 | SQL――データ定義言語 | 588 |
| 13.5.1 | データ型 | 589 |
| 13.5.2 | ドメイン | 590 |
| 13.5.3 | テーブルの作成 | 591 |
| 13.5.4 | インデックス | 592 |
| 13.5.5 | ビュー | 592 |
| 13.6 | SQL――データ操作言語 | 594 |
| 13.6.1 | select | 594 |
| 13.6.2 | insert | 598 |
| 13.6.3 | update | 598 |
| 13.6.4 | delete | 599 |
| 13.6.5 | SQLビルダの使用 | 599 |
| 13.7 | サーバー側のプログラミング | 602 |
| 13.7.1 | ストアドプロシージャ | 603 |
| 13.7.2 | トリガー(ジェネレータ) | 604 |
| 13.8 | ライブ問い合わせとキャッシュアップデート | 605 |
| 13.8.1 | UpdateSQLコンポーネント | 606 |
| 13.8.2 | 更新の競合 | 610 |
| 13.8.3 | トランザクションの使用 | 611 |
| 13.9 | クライアント/サーバーの最適化 | 612 |
| 13.9.1 | SQLモニタの使用 | 612 |
| 13.9.2 | アプリケーションのチューニング | 615 |
| 13.10 | 次の章では…… | 616 |
| ■PART4 | コンポーネントとライブラリ | 617 |
| 第14章 | コンポーネントの作成 | 619 |
| 14.1 | VCLの拡張 | 619 |
| 14.1.1 | コンポーネントパッケージ | 620 |
| 14.1.2 | コンポーネントを書く際の規則 | 621 |
| 14.1.3 | 基本コンポーネントクラス | 622 |
| 14.2 | 最初のコンポーネントの作成 | 623 |
| 14.2.1 | フォントのコンボボックス | 623 |
| 14.2.2 | パッケージの作成 | 627 |
| 14.2.3 | フォントのコンボボックスの使用 | 630 |
| 14.2.4 | ラベルの時計 | 631 |
| 14.2.5 | コンポーネントパレットのビットマップ | 633 |
| 14.2.6 | アクティブなボタン | 634 |
| 14.3 | 複雑なグラフィックコンポーネント | 636 |
| 14.3.1 | 列挙型のプロパティの定義 | 637 |
| 14.3.2 | Paintメソッドの作成 | 638 |
| 14.3.3 | TPersistentプロパティの追加 | 641 |
| 14.3.4 | 新しい独自イベントの定義 | 643 |
| 14.3.5 | Arrowコンポーネントのテスト | 645 |
| 14.4 | Windowsコントロールのカスタマイズ | 646 |
| 14.4.1 | 配列プロパティの定義 | 647 |
| 14.4.2 | ダイアログボックスの単位の使用 | 650 |
| 14.4.3 | ヘッダーとタブ設定されたリストボックス | 651 |
| 14.5 | 非ビジュアルなダイアログコンポーネント | 653 |
| 14.5.1 | 非ビジュアルなコンポーネントの使用 | 656 |
| 14.6 | カスタムアクションの定義 | 658 |
| 14.7 | 次の章では…… | 660 |
| 第15章 | コンポーネントとToolsAPI | 661 |
| 15.1 | プロパティエディタの作成 | 661 |
| 15.1.1 | プロパティエディタの型 | 662 |
| 15.1.2 | TabsStringプロパティのエディタ | 663 |
| 15.1.3 | プロパティエディタのインストール | 665 |
| 15.2 | コンポーネントエディタの作成 | 667 |
| 15.2.1 | TComponentEditorクラスのサブクラス化 | 667 |
| 15.2.2 | タブ設定されたリストボックスのための コンポーネントエディタ | 668 |
| 15.2.3 | コンポーネントエディタの登録 | 670 |
| 15.3 | 簡単なウィザードの作成 | 670 |
| 15.3.1 | TIExpertクラスのサブクラス化 | 671 |
| 15.3.2 | ウィザードのコード | 671 |
| 15.4 | ToolsAPIのその他のインターフェイス | 673 |
| 15.5 | プロパティへの名前でのアクセス | 675 |
| 15.6 | 次の章では…… | 678 |
| 第16章 | ダイナミックリンクライブラリとパッケージ | 679 |
| 16.1 | WindowsでのDLLの役割 | 680 |
| 16.1.1 | 動的(ダイナミック)リンクとは | 680 |
| 16.1.2 | 何のためのDLLか | 681 |
| 16.1.3 | システムのDLLの理解 | 683 |
| 16.1.4 | DLLとEXEの違い | 683 |
| 16.1.5 | DelphiのDLL作成者のための規則 | 684 |
| 16.1.6 | Win16とWin32のDLL | 684 |
| 16.2 | 既存のDLLの使用 | 685 |
| 16.2.1 | C++で作られたDLLの使用 | 686 |
| 16.3 | DelphiでのDLLの作成 | 689 |
| 16.3.1 | 最初の簡単なDLL | 690 |
| 16.3.2 | DLLのオーバーロード関数 | 691 |
| 16.3.3 | DLLからの文字列のエクスポート | 692 |
| 16.3.4 | Delphiで作られたDLLの呼び出し | 693 |
| 16.4 | DLL内のDelphiのフォーム | 695 |
| 16.4.1 | DLL内のモーダルなフォームの使用 | 696 |
| 16.4.2 | DLLのモードレスなフォーム | 698 |
| 16.4.3 | Visual Basic for Applications(VBA)からの Delphiで作られたDLLの呼び出し | 701 |
| 16.5 | 実行時のDLL内の関数の呼び出し | 702 |
| 16.6 | メモリのDLL――コードとデータ | 704 |
| 16.6.1 | メモリマップトファイルでのデータの共有 | 705 |
| 16.7 | Delphiのパッケージの使用 | 706 |
| 16.7.1 | アプリケーションのバージョン管理のためのパッケージ | 707 |
| 16.7.2 | VCLパッケージを共有している実行可能ファイルとDLL | 708 |
| 16.8 | 次の章では…… | 710 |
| 第17章 | OLEとCOM | 711 |
| 17.1 | OLEとは何か。COMとは何か | 711 |
| 17.2 | DLL内のオブジェクト | 713 |
| 17.2.1 | DLLでのクラスの記述 | 713 |
| 17.2.2 | DLL内のクラスの使用 | 715 |
| 17.3 | IUnknownの実装 | 718 |
| 17.3.1 | IUnknownメソッドの実装 | 718 |
| 17.3.2 | GUID――グローバルユニーク識別子 | 720 |
| 17.3.3 | クラスファクトリの役割 | 722 |
| 17.4 | COMオブジェクトウィザードの使用 | 723 |
| 17.4.1 | TComObjectクラス | 727 |
| 17.4.2 | COMオブジェクトの初期化 | 727 |
| 17.4.3 | クラスファクトリとその他のDelphi COMクラス | 728 |
| 17.4.4 | COMサーバーのテスト | 730 |
| 17.4.5 | インターフェイスプロパティの使用 | 733 |
| 17.5 | シェルインターフェイスの使用 | 734 |
| 17.5.1 | ショートカットの作成 | 734 |
| 17.5.2 | To-Do-Listアプリケーション | 737 |
| 17.5.3 | コンテキストメニューハンドラの作成 | 740 |
| 17.6 | 次の章では…… | 747 |
| 第18章 | OLEオートメーションと複合ドキュメント | 749 |
| 18.1 | OLEオートメーションとは何か | 750 |
| 18.1.1 | タイプライブラリの紹介 | 751 |
| 18.2 | OLEオートメーションサーバーの記述 | 754 |
| 18.2.1 | Delphi 4のタイプライブラリエディタ | 754 |
| 18.2.2 | サーバーのコード | 757 |
| 18.2.3 | オートメーションサーバーの登録 | 760 |
| 18.2.4 | サーバーのためのクライアントの作成 | 761 |
| 18.3 | COMのデータ型 | 765 |
| 18.3.1 | 文字列リストのエクスポーズ | 766 |
| 18.4 | Wordへのデータ送信 | 770 |
| 18.4.1 | サーバーが実行中かどうか | 771 |
| 18.4.2 | 1つのアプリケーション、 複数のオートメーションインターフェイス | 772 |
| 18.4.3 | WordやExcelへのデータベースデータの送信 | 774 |
| 18.5 | 複合ドキュメントとは何か | 777 |
| 18.5.1 | OLEコンテナコンポーネント | 779 |
| 18.5.2 | メニューやツールバーのマージ | 781 |
| 18.5.3 | OLE標準ダイアログボックス | 782 |
| 18.5.4 | オブジェクトのファイルからのロードと ファイルへの保存 | 784 |
| 18.6 | 内部オブジェクトの使い方 | 785 |
| 18.7 | 次の章では…… | 786 |
| 第19章 | ActiveXコントロールとActiveForm | 789 |
| 19.1 | ActiveXコントロールの紹介 | 790 |
| 19.1.1 | ActiveXコントロールとDelphiコンポーネントの対比 | 791 |
| 19.2 | DelphiでのActiveXコントロールの使用 | 792 |
| 19.2.1 | ActiveXコントロールのインストール | 792 |
| 19.2.2 | TOleControlクラス | 795 |
| 19.2.3 | WebBrowserコントロールの使用 | 795 |
| 19.2.4 | Delphi ActiveXコントロールの使い方 | 798 |
| 19.3 | ActiveXコントロールの作成 | 800 |
| 19.3.1 | ActiveX Arrowの作成 | 801 |
| 19.3.2 | 新規プロパティの追加 | 804 |
| 19.3.3 | プロパティページの追加 | 806 |
| 19.4 | ActiveForm | 809 |
| 19.5 | ActiveFormの内側 | 810 |
| 19.5.1 | XClock ActiveXコントロール | 812 |
| 19.6 | 次の章では…… | 813 |
| ■PART5 | 実践Delphiプログラミング | 815 |
| 第20章 | mutex、スレッド、同期 | 817 |
| 20.1 | アプリケーションの前のインスタンスの確認 (二重起動の防止) | 817 |
| 20.1.1 | 伝統的なテクニック | 818 |
| 20.1.2 | mutexの使用 | 820 |
| 20.2 | Windowsでのイベント、メッセージ、マルチタスキング | 820 |
| 20.2.1 | イベント駆動型プログラミング | 821 |
| 20.2.2 | Windowsメッセージの送信 | 822 |
| 20.3 | アイドル状態の演算処理とマルチタスク処理 | 822 |
| 20.3.1 | バックグラウンド処理 | 823 |
| 20.4 | Delphiでのマルチスレッド | 823 |
| 20.4.1 | TThreadクラス | 824 |
| 20.4.2 | 最初のサンプル | 825 |
| 20.4.3 | ロック機能のサンプル | 827 |
| 20.4.4 | 他の同期テクニック | 828 |
| 20.4.5 | スレッドの優先度 | 828 |
| 20.4.6 | データベースのサンプル | 830 |
| 20.5 | スレッドの同期 | 832 |
| 20.5.1 | 別スレッドの待機 | 832 |
| 20.5.2 | Windowsの同期テクニック | 836 |
| 20.6 | 次の章では…… | 841 |
| 第21章 | Delphiプログラミングのデバッグ | 843 |
| 21.1 | 統合デバッガの使用 | 843 |
| 21.1.1 | デバッグ情報 | 844 |
| 21.1.2 | ブレークポイントの設定 | 845 |
| 21.1.3 | ブレークポイントの表示 | 849 |
| 21.1.4 | プログラムの実行の監視 | 850 |
| 21.1.5 | 値の検査(インスペクト) | 850 |
| 21.1.6 | VCLソースコードを使っての追跡 | 854 |
| 21.2 | その他のデバッグテクニック | 855 |
| 21.2.1 | イベントログを使ったデバッグ | 855 |
| 21.2.2 | デバッグやリリースバージョンのための 条件コンパイルの使用 | 856 |
| 21.2.3 | アサートの使用 | 858 |
| 21.3 | メッセージフローの探索 | 859 |
| 21.3.1 | WinSightの使用 | 859 |
| 21.3.2 | ポストされたメッセージの確認 | 860 |
| 21.4 | コンパイル済みプログラムの表示 | 861 |
| 21.4.1 | オブジェクトブラウザの使用 | 861 |
| 21.4.2 | [モジュール]ウィンドウの使用 | 863 |
| 21.4.3 | [CPU]ウィンドウの使用 | 863 |
| 21.5 | 次の章では…… | 863 |
| 第22章 | 実践テクニック | 865 |
| 22.1 | リソースの管理 | 865 |
| 22.1.1 | リソースエディタの使用 | 866 |
| 22.1.2 | プロパティとしてのアイコンやビットマップのロード | 867 |
| 22.1.3 | 手動でリソースをロードする方法 | 868 |
| 22.1.4 | アプリケーションとフォーム用のアイコン | 869 |
| 22.1.5 | タスクバーのアイコントレイの使用 | 871 |
| 22.1.6 | Delphiでのカーソルの使用 | 871 |
| 22.1.7 | 文字列テーブルリソースの使用 | 872 |
| 22.1.8 | バージョン情報 | 873 |
| 22.1.9 | Delphiでの印刷 | 875 |
| 22.1.10 | グラフィックの印刷プレビュー | 876 |
| 22.1.11 | 出力コードの共有 | 879 |
| 22.1.12 | QuickReportコンポーネント | 881 |
| 22.2 | ファイルの操作 | 884 |
| 22.2.1 | Delphiコンポーネントでのファイルサポート | 884 |
| 22.2.2 | データのストリーム | 887 |
| 22.2.3 | 数値のストリーム | 888 |
| 22.2.4 | コンポーネントのストリーム | 890 |
| 22.3 | クリップボード | 893 |
| 22.3.1 | テキストのコピーと貼り付け | 894 |
| 22.3.2 | ビットマップのコピーと貼り付け | 895 |
| 22.4 | サポートファイル | 898 |
| 22.4.1 | WindowsのINIファイルの使用 | 898 |
| 22.4.2 | レジストリの使用 | 900 |
| 22.5 | ヘルプとインストール | 905 |
| 22.5.1 | オンラインヘルプ | 905 |
| 22.5.2 | InstallShield Express | 911 |
| 22.6 | 次の章では…… | 916 |
| 第23章 | インターネットプログラミング | 917 |
| 23.1 | HTMLファイルのブラウズ | 918 |
| 23.2 | HTMLファイルの作成 | 920 |
| 23.2.1 | 標準的なHTMLファイルの作成 | 920 |
| 23.2.2 | HTMLテーブルの作成 | 924 |
| 23.3 | HTMLプロデューサコンポーネントの使用 | 927 |
| 23.3.1 | HTMLページの作成 | 928 |
| 23.3.2 | データのページの作成 | 930 |
| 23.3.3 | HTMLテーブルの作成 | 931 |
| 23.4 | データベースのHTMLへの変換 | 934 |
| 23.4.1 | マスター/詳細HTMLファイルの作成 | 935 |
| 23.4.2 | HTMLファイルのクロスリファレンス | 941 |
| 23.4.3 | Web上での静的データベースの公開 | 943 |
| 23.5 | WebページでのActiveForm | 944 |
| 23.5.1 | Webページ上でのActiveFormの役割 | 946 |
| 23.5.2 | マルチページActiveForm | 948 |
| 23.5.3 | XArrowへのプロパティの設定 | 949 |
| 23.6 | Delphiでのソケットプログラミング | 951 |
| 23.6.1 | ソケットプログラミングの基礎知識 | 952 |
| 23.6.2 | 高度なプロトコル | 954 |
| 23.6.3 | Delphiソケットコンポーネント | 955 |
| 23.6.4 | ソケットの使用 | 955 |
| 23.6.5 | カスタムプロトコルを使ったソケットの使用 | 958 |
| 23.6.6 | ブロッキング接続、非ブロッキング接続、 マルチスレッド接続 | 964 |
| 23.6.7 | ソケット接続を使った データベースデータの送信 | 965 |
| 23.7 | インターネットプロトコル | 968 |
| 23.7.1 | NetMastersコンポーネント | 969 |
| 23.7.2 | メールの送受信 | 970 |
| 23.7.3 | FTPプロトコルコンポーネントと HTTPプロトコルコンポーネント | 976 |
| 23.7.4 | WinInet API | 976 |
| 23.8 | 次の章では…… | 980 |
| 第24章 | サーバーサイドのWebプログラミング | 981 |
| 24.1 | 動的Webページ | 982 |
| 24.1.1 | CGIの概要 | 982 |
| 24.1.2 | ISAPI/NSAPIの概説 | 983 |
| 24.2 | CGIプログラミングの紹介 | 983 |
| 24.2.1 | 時間とはどんなものか | 983 |
| 24.2.2 | コマンドラインの処理 | 985 |
| 24.2.3 | CGI環境変数 | 986 |
| 24.3 | CGIデータベースプログラミング | 988 |
| 24.3.1 | テーブルのレコードの一覧表示 | 989 |
| 24.3.2 | 特定の1つのレコードの表示 | 992 |
| 24.3.3 | HTML検索フォーム | 995 |
| 24.4 | 標準的なISAPIの使い方 | 998 |
| 24.4.1 | 簡単なISAPI DLL | 999 |
| 24.5 | DelphiのWebモジュール | 1000 |
| 24.5.1 | 構築ブロック | 1000 |
| 24.5.2 | 多目的Webモジュールの構築 | 1003 |
| 24.5.3 | 簡単なISAPIデータベースレポート作成 | 1006 |
| 24.5.4 | 問い合わせとフォームについて | 1008 |
| 24.6 | JPEGグラフィックの追加 | 1013 |
| 24.6.1 | Webページのヒットカウンタ | 1013 |
| 24.6.2 | Web上のデータベースグラフ | 1015 |
| 24.7 | メールフィードバック処理 | 1018 |
| 24.7.1 | CGIメールサーバー | 1019 |
| 24.7.2 | メールベースのリクエストの検索 | 1021 |
| 24.8 | 次の章では…… | 1022 |
| 第25章 | 分散データベースアプリケーション | 1023 |
| 25.1 | 1層、2層、3層 | 1024 |
| 25.1.1 | 技術基盤――MIDAS | 1025 |
| 25.1.2 | 接続プロトコル | 1026 |
| 25.1.3 | データパケットの提供 | 1027 |
| 25.1.4 | Delphiサポートコンポーネント(クライアントサイド) | 1028 |
| 25.1.5 | Delphiサポートコンポーネント(サーバーサイド) | 1029 |
| 25.2 | サンプルアプリケーションの構築 | 1029 |
| 25.2.1 | 最初のアプリケーションサーバー | 1030 |
| 25.2.2 | 最初のクライアント | 1032 |
| 25.3 | サーバーへの制約の追加 | 1034 |
| 25.4 | クライアントへの機能の追加 | 1036 |
| 25.4.1 | レコードのステータス | 1036 |
| 25.4.2 | Deltaへのアクセス | 1037 |
| 25.4.3 | データの更新 | 1038 |
| 25.4.4 | 元に戻す機能の追加 | 1041 |
| 25.4.5 | ブリーフケースモデルのサポート | 1041 |
| 25.5 | Microsoft Transaction Server(MTS)サポート | 1042 |
| 25.5.1 | Microsoft Transaction Serverの役割 | 1042 |
| 25.5.2 | MTSデータモジュールの作成 | 1043 |
| 25.6 | DelphiとCORBA | 1045 |
| 25.6.1 | 簡単なCORBAサーバー | 1046 |
| 25.6.2 | 簡単なCORBAクライアント | 1048 |
| 25.7 | データベースフロントエンドとしてのActiveForm | 1050 |
| 25.7.1 | ActiveFormとデータベーステーブルの配布 | 1050 |
| 25.7.2 | 3層イントラネットアプリケーション | 1054 |
| 25.8 | 終わりに | 1055 |
| 付録 | C++/Delphi/Visual Basic文法対照表 | 1057 |
| 索引 | 1076 |