メイン ダイアログにコンポーネントを設定する(dbExpress チュートリアル)
チュートリアル:アプリケーションで dbExpress を使用してデータベースを表示および更新する への移動
この例で、ダイアログのビジュアル コンポーネントは以下のいくつかの機能を提供します。
- データベース接続の選択
- データベースからのテーブルの選択
- データベース データの表示とナビゲーション
- データベース データの更新
- データベースに対する SQL 文の実行
また、これも同様に重要なことですが、ダイアログの非ビジュアル コンポーネントは、データベースへの接続とデータベースの操作に必要な以下のオブジェクトを提供します。
- データベース接続
- データのデータセット
- データセットからのデータの取得とデータセットへの更新の解決を行うプロバイダ
- データ対応コンポーネントのデータ ソース
コンポーネントを組み合わせてできたフォームの外見を以下に示します。
5 つの非ビジュアル コンポーネント(TSQLConnection など)がリスト ボックスに一列に表示されていますが、それらのフォーム上の位置は重要ではありません。
プロジェクトの作成
新規プロジェクトを作成します。
- Delphi の場合は、[ファイル|新規作成|VCL フォーム アプリケーション - Delphi]を選択します。
- C++ の場合は、[ファイル|新規作成|VCL フォーム アプリケーション - C++Builder]を選択します。
フォームの[Caption]プロパティを「DB ClientDataSet Data Update Tool」に設定します。 また、フォームの[Width]プロパティを「650」に、[Height]プロパティを「375」に、それぞれ変更します。
[ファイル|すべて保存]を選択して、プロジェクトを保存します。
- Delphi の場合は、ファイルを「cdsmain.pas」という名前で保存します。 プロジェクトは 「DB_CDSDataUpdated.dproj」という名前で保存します。
- C++ の場合は、ファイルを「cdsmain.cpp」という名前で保存します。 プロジェクトは 「DB_CDSDataUpdated.cbproj」という名前で保存します。
ビジュアル コンポーネントの追加
[ツール パレット]から、フォームの左上に[TComboBox]コンポーネントをドラッグします。 このアプリケーションでは、使用可能なデータベース接続を一覧表示するのに、このコントロールを使用します。 [Name]プロパティを「ComboBoxConnections」に変更します。 [AutoDropDown]プロパティを[True]に設定します。 [Style]プロパティとして[csDropDownList]を選択します。 [TextHint]プロパティを「Connection Name」に、[ShowHint]プロパティを[True]に、それぞれ設定します。
TComboBox コンポーネントの横に [TLabel]コンポーネントをドラッグし、その TLabel の[Caption]プロパティを「SQL:」に変更します。
TLabel コンポーネントの右に [TEdit]コンポーネントをドラッグします。 このコントロールには、データベースにアクセスするための現在の SQL コマンドが表示されます。 この TEdit の[Name]プロパティを「EditSQL」に変更します。 [Text]プロパティを空に変更します。
TComboBox コンポーネントの下に別の [TEdit]コンポーネントをドラッグします。 このコントロールには、その下の TListBox コンポーネントに一覧表示されるデータベース テーブルをフィルタリングするための式が表示されます。 [Name]プロパティを「EditFilter」に変更します。 さらに、[Hint]プロパティを「Filter (Use * as wildcard)」に、[Text]プロパティを「Filter (* as wild)」にそれぞれ設定して、このフィールドのヒント テキストと初期テキストを指定します。
フィルタである TEdit コンポーネントの横に [TCheckBox]コンポーネントを配置し、その TCheckBox の[Caption]プロパティを「Open」に変更します。 この TCheckBox コンポーネントは、TClientDataSet セットがアクティブかどうかを示します。 TCheckBox の[Name]プロパティを「CheckBoxActive」に設定します。
TCheckBox コンポーネントの横に [TDBNavigator]コンポーネントをドラッグします。 このコントロールは、データベース レコードのナビゲーションとデータに対する操作の実行に使用します。
データの変更後にデータベースを更新できるように、TDBNavigator コンポーネントの横に [TButton]コンポーネントを配置します。 この TButton の[Caption]プロパティを「Apply Updates」に設定します。 また、TButton の[Name]プロパティを「ButtonApply」に変更します。
フィルタである TEdit コンポーネントの下に [TListBox]コンポーネントを配置します。 この TListBox には、選択されたデータベース接続で使用可能なテーブルが一覧表示されます。表示は、その上にあるフィルタ TEdit コンポーネントのフィルタ テキストに応じて変わります。 [Anchors]プロパティについては、[akRight]以外のすべてのアンカーを[True]に設定します。 これで、TListBox の右辺を除き、フォームのサイズが変更されても、フォームの端を基準とする TListBox の現在の相対位置が保たれます。
最後に、TListBox コンポーネントの横に [TDBGrid]コンポーネントをドラッグします。 このコンポーネントでは、データセット内のレコードが表示され操作されます、各テーブル列には、その列のデータベース名が自動的にラベルとして付きます。 TDBGrid コンポーネント内の移動には、TDBNavigator コンポーネントを使用できます。 [Anchors]プロパティについては、4 つのアンカーをすべて[True]に設定します。 これで、フォームのサイズが変更されても、フォームの端を基準とする TDBGrid の現在の相対位置が保たれます。
これらのコンポーネントをすべて、フォーム上の位置に適したサイズに変更します。 すべてを保存します。
データベース コンポーネントの追加
では次に、データベースと通信するためのコンポーネントを追加します。 それらをフォーム上に配置すると同時に、それらのプロパティを設定して、通信に必要な接続を指定します。 これらはビジュアル コンポーネントではないため、それらのフォーム上の位置は便宜上のものです。 この例では、データ フローの順序を反映して、それらを一列に順次配置します。
まず、[TSQLConnection]コンポーネントを配置します。 これは、データベース サーバーへの dbExpress 接続をカプセル化したものです。 アプリケーションの実行時に、これを実際のデータベース接続に接続します。 また、[ConnectionName]プロパティを設計時に設定することもできます。 [ConnectionName]プロパティのドロップダウン メニューには、[データ エクスプローラ]に一覧表示されているすべてのデータベース接続が表示されます。 データベースに接続するたびにパスワードの入力を求められることがないように、TSQLConnection の[LoginPrompt]プロパティを[False]に設定します。
[TSQLDataSet]コンポーネントを追加します。これは、dbExpress を使って取得されたデータを表すものです。 このデータセットの[SQLConnection]プロパティをドロップダウン メニューを使って "SQLConnection1" に設定することで、このコンポーネントを TSQLConnection コンポーネントに接続します。 このアプリケーションでは SQL コマンドを使用してデータベースからデータを取得するため、[DbxCommandType]プロパティを "Dbx.SQL" に設定します。
次に、フォームに [TDataSetProvider]コンポーネントをドロップします。 これは、データセット内のデータを提供すると共に、そのデータセットへの更新を解決します。 dbExpress の TSQLDataSet は通常、単方向データセットです。 TDataSetProvider などのプロバイダを使用すれば、データベース内の移動やデータベースの更新を自由に行えます。 TDataSetProvider の[DataSet]プロパティを "SQLDataSet1" に設定して、同プロバイダを TSQLDataSet に接続します。
フォームに [TClientDataSet]を配置して、データベースに依存しないデータセットを実装します。 TClientDataSet が TDataSetProvider に接続されるように、TClientDataSet の[ProviderName]プロパティを "DataSetProvider1" に設定します。
最後に、フォームに [TDataSource]を配置します。 データ ソースは、データセット コンポーネントとデータ対応コントロール(この例で使用している TDBGrid など)とのインターフェイスを提供します。 TDataSource の[DataSet]プロパティを、ドロップダウン メニューを使って "ClientDataSet1" に設定します。
コンポーネント間の接続を完了するには、以下のように 2 つのデータ対応ビジュアル コンポーネントをデータ ソースに接続します。
- TDBNavigator の[DataSource]プロパティを "DataSource1" に設定します。
- TDBGrid の[DataSource]プロパティを "DataSource1" に設定します。
ファイルを再度保存します。
これでコンポーネントが適切に配置されたので、次に、多数のコンポーネント クラスから成る VCL ライブラリを使ってアプリケーション コードを作成できます。 このチュートリアルでは、Delphi と C++ の両方のコードについて説明します。