ルックアップ リスト ボックスとルックアップ コンボ ボックスでのデータの表示と編集
単一レコードの表示 への移動
ルックアップ リスト ボックスとルックアップ コンボ ボックス(Vcl.DBCtrls.TDBLookupListBox および Vcl.DBCtrls.TDBLookupComboBox)は、有効なフィールド値を設定するための限られた選択肢のリストをユーザーに提示します。ユーザーがリスト項目を選択すると、背後にあるデータセットの対応するフィールドの値が変更されます。
たとえば、フィールドが OrdersTable に関連付けられた注文フォームがあるとします。OrdersTable には顧客 ID に対応する CustNo フィールドがありますが、OrdersTable にはそれ以外の顧客情報は含まれていません。それに対して CustomersTable には、顧客 ID に対応する CustNo フィールドがあり、さらに、顧客の会社名や住所などの追加情報も含まれています。事務員が請求書を作成するときには、注文フォームで顧客 ID ではなく会社名によって顧客を選択できれば便利です。CustomersTable 内のすべての会社名を表示する TDBLookupListBox があると、ユーザーはリストから会社名を選択し、それに応じて注文フォームの CustNo を設定することができます。
これらのルックアップ コントロールは、表示する項目のリストを次の 2 つのソースのいずれかから取得します。
データセットに定義されたルックアップ フィールド。ルックアップ フィールドを使ってリスト ボックスの項目を指定するには、コントロールをリンクする先のデータセットに既にルックアップ フィールドが定義されている必要があります。
リスト ボックスの項目に使用するルックアップ フィールドを指定するには:
- リスト ボックスの DataSource プロパティを、使用するルックアップ フィールドを含むデータセットのデータ ソースに設定します。
- DataField プロパティのドロップダウン リストから、使用するルックアップ フィールドを選択します。
- ルックアップ コントロールに関連付けたテーブルをアクティブにすると、コントロールはデータ フィールドがルックアップ フィールドであることを認識し、ルックアップの結果の適切な値を表示します。
二次データ ソース、データ フィールド、キー。データセットにルックアップ フィールドを定義していない場合には、二次データ ソース、二次データ ソース内で検索するフィールド値、リスト項目として返すフィールド値を使用して、同様の関係を確立することができます。
リスト ボックス項目の二次データ ソースを指定するには:
- リスト ボックスの DataSource プロパティを、コントロールのデータ ソースに設定します。
- ルックアップした値を挿入するフィールドを、DataField プロパティのドロップダウン リストから選択します。選択するフィールドはルックアップ フィールドであってはなりません。
- リスト ボックスの ListSource プロパティを、値をルックアップするフィールドを含むデータセットのデータ ソースに設定します。
- ルックアップ キーとして使用するフィールドを、KeyField プロパティのドロップダウン リストから選択します。ドロップダウン リストには、ステップ 3 で指定したデータ ソースに関連付けられたデータセットのフィールドが表示されます。選択するフィールドはインデックスに含まれていなくてもかまいませんが、含まれている場合にはルックアップのパフォーマンスはさらに向上します。
- 値を返すフィールドを、ListField プロパティのドロップダウン リストから選択します。ドロップダウン リストには、ステップ 3 で指定したデータ ソースに関連付けられたデータセットのフィールドが表示されます。
ルックアップ コントロールに関連付けたテーブルをアクティブにすると、コントロールはリスト項目が二次データ ソースから取得されたものであることを認識し、そのソースの適切な値を表示します。
TDBLookupListBox コントロールに一度に表示する項目の数を指定するには、RowCount プロパティを使用します。リスト ボックスの高さは、この行数に合わせてぴったりと調節されます。
TDBLookupComboBox のドロップダウン リストに表示する項目の数を指定するには、DropDownRows プロパティの方を使用します。
メモ: ルックアップ コンボ ボックスとして機能するようデータ グリッド内の列を設定することもできます。その方法は、「ルックアップ リスト列の定義」を参照してください。