さまざまなテーブルを表示する(IBX 一般チュートリアル)

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

チュートリアル:InterBase Express を使用してデータベースにアクセスする への移動

このセクションでは、さまざまなデータベース テーブルを表示できるフォームを作成します。 ここで使用する EMPLOYEE データベースは、RAD Studio と一緒にインストールされています。

コンポーネントを配置した後のフォームは次のようになります。

FormViewFinal.png


フォームの作成

まず、プロジェクトに VCL フォームをもう 1 つ追加します。 [プロジェクト マネージャ]でプロジェクトを右クリックし、[新規追加|VCL フォーム]のメニュー項目をクリックします。

新しいフォームのプロパティを以下のように調整します。

  • Caption を "Table/View Switcher" に設定します。
  • Name を "FrmViewDemo" に設定します。
  • フォームの Height コンポーネントを 330 に、Width コンポーネントを 400 に変更します。
  • OldCreateOrder を True に設定。

フォームを以下のように保存します。

  • Delphi の場合、ファイルを FrmViews.pas という名前で保存します。

データベース コンポーネントを追加する

まず、データベース コンポーネントを追加します。 その後で、データベース対応コンポーネントを構成して、データベース コンポーネントからデータを取得できるようにします。 データベース コンポーネントは非ビジュアル コンポーネントなので、フォーム上のどこに配置しても構いませんが、ビジュアル コンポーネントを隠さないところに置いてください。

DBCompEdtIBX.png


このチュートリアルでは、RAD Studio と一緒にインストールされている EMPLOYEE データベースを使用します。 パスは通常、C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Data\EMPLOYEE.GDB です。 ユーザー名とパスワードを設定した場合、LoginPrompt は失敗する可能性があります。

メモ: この例のようにアプリケーションにパスワードを埋め込むと、誰でもログインすることなくデータベースにアクセスできるようになります。

  • TIBDataSet をフォーム上に置きます。 Transaction プロパティを "IBTransaction1" に設定します。 ドロップダウン メニューを使用して Database プロパティを "IBDatabase1" に設定することで、この TIBDataSet をデータベースに接続します。 Name プロパティを "VaryingDataSet" を設定します。
  • フォームに TDataSource を追加します。 このコンポーネントは、TIBDataSet とデータ対応コントロール間のインターフェイスとして機能します。 ドロップダウン メニューで、TDataSourceDataSet を、"VaryingDataSet" に設定します。 Name プロパティを "VaryingTableSource" を設定します。

ビジュアル コンポーネントの追加

次に、データベース データを表示するコンポーネントを追加し、それをデータベース コンポーネントと接続します。

TPanelコンポーネントを 2 つ追加し、以下の図のように配置します。 これらの TPanels は、ビジュアル コンポーネントを配置するためのフレームワークとなります。 次の図のように、フォームいっぱいに配置します。

FormView1.png


コンポーネントを "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 インスタンスを配置します。 以下のプロパティを設定します。
    • TSpeedButtons と同様に、Glyph を設定します。
    • Kindを、ドロップダウン メニューを使って "bkClose" に設定します。 この設定により、この TBitBtn ボタンをクリックしたとき、ダイアログを閉じるコマンドが実行されるようになります。
    • Caption を "E&xit" に設定して、ALT+xX を押すのがこのボタンのクリックと同じになるようにします。
    • Name を "BtnShowPhoneListClick" に設定します。

コンポーネントを "Panel2" TPanel へ追加します。

  • "Panel2" に TDBGrid を配置します。 そのサイズを変更して、TPanel いっぱいまで拡大します。 DataSource を、ドロップダウン メニューを使って "VaryingTableSource" に設定します。

コードの追加

し、TSpeedButtons のイベント ハンドラを作成すると、フォームが完成します。 TBitBtn にはクリック時に実行されるコマンドが既に関連付けられているため、このボタンのイベント ハンドラは必要ありません。

指定されたテーブルを表示するための ShowTable ルーチンを追加します。

Delphi の場合:

FrmViews.pastype セクションの 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.pasimplementation セクションの最初に次のコードを追加し、先ほど作成した FrmViews ユニットの情報をメイン フォームが把握できるようにします。

uses
   FrmViews;   { View デモ }

次に、メイン フォームのボタンのイベント ハンドラを追加します。Frmmain.pas[デザイン]タブでボタンをダブルクリックしてください。 そのイベント ハンドラには以下のコードを使用します。

procedure TFrmLauncher.BtnViewsClick(Sender: TObject);
begin
  FrmViewDemo.ShowModal;
end;

ShowModal では、ダイアログが閉じられるまでアプリケーションが実行されないよう、フォームをモーダル ダイアログとして表示します。 この場合、テーブル表示フォームが表示されている間、メイン ダイアログは保留状態になります。

アプリケーションの実行

アプリケーションをビルドして実行。 以下のようなメイン フォームが表示されます。

MainFormRunTime.png


ボタンをクリックすると、テーブル表示フォームが開きます。

FrmViewRunTime.png


テーブルがまだ選択されていないため、TDBGridTDBGrid が空であることに注意してください。 左側の TSpeedButton をクリックすると、EMPLOYEE テーブルが表示されます。

FrmViewRunTimeAction.png


もう一方の TSpeedButton をクリックすると、PHONE_LIST テーブルが表示されます。

[閉じる]([Close])と書かれた TBitBtn をクリックすると、テーブル表示フォームが閉じます。

前へ

メイン フォームを作成する

次へ

データ モジュールを追加する