さまざまなテーブルを表示する(IBX 一般チュートリアル)
チュートリアル:InterBase Express を使用してデータベースにアクセスする への移動
このセクションでは、さまざまなデータベース テーブルを表示できるフォームを作成します。 ここで使用する EMPLOYEE データベースは、RAD Studio と一緒にインストールされています。
コンポーネントを配置した後のフォームは次のようになります。
目次
フォームの作成
まず、プロジェクトに VCL フォームをもう 1 つ追加します。 [プロジェクト マネージャ]でプロジェクトを右クリックし、[新規追加|VCL フォーム]のメニュー項目をクリックします。
新しいフォームのプロパティを以下のように調整します。
- Caption を "Table/View Switcher" に設定します。
- Name を "FrmViewDemo" に設定します。
- フォームの Height コンポーネントを 330 に、Width コンポーネントを 400 に変更します。
- OldCreateOrder を True に設定。
フォームを以下のように保存します。
- Delphi の場合、ファイルを FrmViews.pas という名前で保存します。
データベース コンポーネントを追加する
まず、データベース コンポーネントを追加します。 その後で、データベース対応コンポーネントを構成して、データベース コンポーネントからデータを取得できるようにします。 データベース コンポーネントは非ビジュアル コンポーネントなので、フォーム上のどこに配置しても構いませんが、ビジュアル コンポーネントを隠さないところに置いてください。
- TIBDatabase をフォームにドラッグします。これは InterBase データベース接続を表します。 追加した TIBDatabase をダブルクリックして [データベース コンポーネント設定] ダイアログを表示します。 このダイアログ上で、TIBDatabase のプロパティを次のように設定します:
- このチュートリアルでは、RAD Studio と一緒にインストールされている EMPLOYEE データベースを使用します。 パスは通常、
C:\Users\Public\Documents\Embarcadero\Studio\19.0\Samples\Data\EMPLOYEE.GDB
です。 ユーザー名とパスワードを設定した場合、LoginPrompt は失敗する可能性があります。
メモ: この例のようにアプリケーションにパスワードを埋め込むと、誰でもログインすることなくデータベースにアクセスできるようになります。
- フォームに TIBTransaction を追加します。 TIBDatabase の DefaultTransaction プロパティを "IBTransaction1" に設定します。
- TIBDataSet をフォーム上に置きます。 Transaction プロパティを "IBTransaction1" に設定します。 ドロップダウン メニューを使用して Database プロパティを "IBDatabase1" に設定することで、この TIBDataSet をデータベースに接続します。 Name プロパティを "VaryingDataSet" を設定します。
- フォームに TDataSource を追加します。 このコンポーネントは、TIBDataSet とデータ対応コントロール間のインターフェイスとして機能します。 ドロップダウン メニューで、TDataSource の DataSet を、"VaryingDataSet" に設定します。 Name プロパティを "VaryingTableSource" を設定します。
ビジュアル コンポーネントの追加
次に、データベース データを表示するコンポーネントを追加し、それをデータベース コンポーネントと接続します。
TPanelコンポーネントを 2 つ追加し、以下の図のように配置します。 これらの TPanels は、ビジュアル コンポーネントを配置するためのフレームワークとなります。 次の図のように、フォームいっぱいに配置します。
コンポーネントを "Panel1" TPanel へ追加します。
- データベース レコードのナビゲーション用に、TDBNavigator を "Panel1" 上に配置します。 DataSource を "VaryingTableSource" に設定します。 TDataSource は、TIBDataSet とデータ対応コントロール間のインターフェイスとして機能します。
- "Panel1" に TSpeedButton を追加します。
- ボタン表面の表示を設定するには、TSpeedButtonTSpeedButton の[オブジェクト インスペクタ]でGlyph[Glyph]プロパティの横の参照([...])ボタンをクリックし、[画像の設定]ダイアログを開きます。 [読み込み...]ボタンをクリックし、ボタン表面に表示するビットマップ ファイルを選択します。 CsDemos サンプルの Frmviews ユニットの TSpeedButtons から、任意の形式のビットマップを取得することができます。 TSpeedButton を選択し、[画像の設定]ダイアログを開いて[保存...]をクリックし、ビットマップ ファイルを保存します。
- GroupIndex を 1 に設定。
- Name を "BtnShowEmployeeClick" に設定します。
- TSpeedButton をもう 1 つ追加し、さきほどの TSpeedButton のすぐ右に配置します。 Glyph プロパティと GroupIndex プロパティを、さきほどの TSpeedButton と同様に設定します。
- "Panel1"の左端に TBitBtn インスタンスを配置します。 以下のプロパティを設定します。
コンポーネントを "Panel2" TPanel へ追加します。
- "Panel2" に TDBGrid を配置します。 そのサイズを変更して、TPanel いっぱいまで拡大します。 DataSource を、ドロップダウン メニューを使って "VaryingTableSource" に設定します。
コードの追加
し、TSpeedButtons のイベント ハンドラを作成すると、フォームが完成します。 TBitBtn にはクリック時に実行されるコマンドが既に関連付けられているため、このボタンのイベント ハンドラは必要ありません。
指定されたテーブルを表示するための ShowTable ルーチンを追加します。
Delphi の場合:
FrmViews.pas
の type
セクションの private の部分に、次の手続きを追加します。
procedure ShowTable(ATable: string);
Ctrl+Shift+C を押してクラス補完
を使用すると、この関数のスタブを implementation
セクションに作成することができます。
新しい手続きのコードを以下のとおり追加します。
procedure TFrmViewDemo.ShowTable( ATable: string );
begin
Screen.Cursor := crHourglass; { ユーザーで何かが発生したことを示す }
VaryingDataSet.DisableControls; { データの変更をユーザーから隠ぺい }
VaryingDataSet.Active := FALSE; { テーブルを閉じる }
VaryingDataSet.SelectSQL.Text:= 'SELECT * FROM '+ ATable; { 名前を更新 }
VaryingDataSet.Open; { テーブルを開く }
VaryingDataSet.EnableControls; { 変更を描画 }
Screen.Cursor := crDefault; { ポインタをリセット }
end;
ShowTable
では、指定されたテーブルのデータを表示するために必要なすべての処理を実行します。 ShowTable
では特に、現在のテーブルから選択したデータを TIBDataSet SelectSQL に設定しています。
最後にイベント ハンドラを追加します。 [デザイン]タブで、最初の TSpeedButton をダブルクリックします。 すると、イベント ハンドラのプロトタイプが追加され、そのスタブ コードが作成されます。 implementation
セクションのこの手続きに次のコードを追加します。
procedure TFrmViewDemo.BtnShowEmployeeClick(Sender: TObject);
begin
ShowTable('EMPLOYEE');
end;
同様にして、2 つ目の TSpeedButton にイベント ハンドラを追加します。コードは次のとおりです。
procedure TFrmViewDemo.BtnShowPhoneListClick(Sender: TObject);
begin
ShowTable('PHONE_LIST');
end;
この 2 つのルーチンでは、ShowTable
を呼び出して表示するテーブルを設定しているだけです。
テーブル表示フォームの表示
「メイン フォームを作成する」で作成したメイン フォームを変更し、ここで作成したフォームをメイン フォーム上のボタンから表示できるようにします。
Delphi の場合:
Frmmain.pas
の implementation セクションの最初に次のコードを追加し、先ほど作成した FrmViews ユニットの情報をメイン フォームが把握できるようにします。
uses
FrmViews; { View デモ }
次に、メイン フォームのボタンのイベント ハンドラを追加します。Frmmain.pas の[デザイン]タブでボタンをダブルクリックしてください。 そのイベント ハンドラには以下のコードを使用します。
procedure TFrmLauncher.BtnViewsClick(Sender: TObject);
begin
FrmViewDemo.ShowModal;
end;
ShowModal では、ダイアログが閉じられるまでアプリケーションが実行されないよう、フォームをモーダル ダイアログとして表示します。 この場合、テーブル表示フォームが表示されている間、メイン ダイアログは保留状態になります。
アプリケーションの実行
アプリケーションをビルドして実行。 以下のようなメイン フォームが表示されます。
ボタンをクリックすると、テーブル表示フォームが開きます。
テーブルがまだ選択されていないため、TDBGridTDBGrid が空であることに注意してください。 左側の TSpeedButton をクリックすると、EMPLOYEE テーブルが表示されます。
もう一方の TSpeedButton をクリックすると、PHONE_LIST テーブルが表示されます。
[閉じる]([Close])と書かれた TBitBtn をクリックすると、テーブル表示フォームが閉じます。