メイン ダイアログにコンポーネントを設定する(dbExpress チュートリアル)

提供: RAD Studio
移動先: 案内検索

チュートリアル:アプリケーションで dbExpress を使用してデータベースを表示および更新する への移動


この例で、ダイアログのビジュアル コンポーネントは以下のいくつかの機能を提供します。

  • データベース接続の選択
  • データベースからのテーブルの選択
  • データベース データの表示とナビゲーション
  • データベース データの更新
  • データベースに対する SQL 文の実行

また、これも同様に重要なことですが、ダイアログの非ビジュアル コンポーネントは、データベースへの接続とデータベースの操作に必要な以下のオブジェクトを提供します。

  • データベース接続
  • データのデータセット
  • データセットからのデータの取得とデータセットへの更新の解決を行うプロバイダ
  • データ対応コンポーネントのデータ ソース

コンポーネントを組み合わせてできたフォームの外見を以下に示します。

TutorialdbExpressMainDialog.png


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]を配置して、データベースに依存しないデータセットを実装します。 TClientDataSetTDataSetProvider に接続されるように、TClientDataSet[ProviderName]プロパティを "DataSetProvider1" に設定します。

最後に、フォームに [TDataSource]を配置します。 データ ソースは、データセット コンポーネントとデータ対応コントロール(この例で使用している TDBGrid など)とのインターフェイスを提供します。 TDataSource[DataSet]プロパティを、ドロップダウン メニューを使って "ClientDataSet1" に設定します。

コンポーネント間の接続を完了するには、以下のように 2 つのデータ対応ビジュアル コンポーネントをデータ ソースに接続します。

  • TDBNavigator[DataSource]プロパティを "DataSource1" に設定します。
  • TDBGrid[DataSource]プロパティを "DataSource1" に設定します。

ファイルを再度保存します。

これでコンポーネントが適切に配置されたので、次に、多数のコンポーネント クラスから成る VCL ライブラリを使ってアプリケーション コードを作成できます。 このチュートリアルでは、Delphi と C++ の両方のコードについて説明します。

前のチュートリアル

データベースに接続する

次のチュートリアル

アプリケーションを初期化するコードを作成する