動的フィールド コンポーネント
動的に生成されるフィールド コンポーネントはデフォルトのものです。実際には、いずれのデータセットのフィールド コンポーネントもすべて、初めてデータセットをデータ モジュール上に配置する際には、動的フィールドとして開始し、データセットがそのデータをどのようにフェッチし、開くのかを指定します。データセットによって表されるデータの物理的特徴に基づいて自動的に作成される場合、フィールド コンポーネントは動的となります。データセットは、基礎としているデータにおける、各列ごとに 1 つのフィールド コンポーネントを生成します。各列に作成される Data.DB.TField の下位コンポーネントは、データベースまたは(TClientDataSet の場合)プロバイダ コンポーネントから受け取る、フィールドの型情報によって決定されます。
動的フィールドは一時的なものです。それらは、データセットが開いている間のみ存在します。動的フィールドを使用するデータセットを再度開くたびに、そのデータセットの基となっているデータの現在の構造をベースに、動的フィールド コンポーネントの新たなセットを完全に再構築します。基礎データにおける列が変更された場合、動的フィールド コンポーネントを使用するデータセットを次に開くと、自動成されたフィールド コンポーネントもまた一致するように変更されます。
データの表示や編集に柔軟性を必要というアプリケーションでは、動的フィールドを使用します。たとえば、データベース参照ツールを作成するには動的フィールドを使用しなければなりません。なぜなら、各データベース テーブルが、異なる数や型の列を持つ必要があるからです。ユーザーとのデータのやり取りが大抵グリッド コンポーネント内で発生するようなアプリケーションにおいて、しかもそのアプリケーションによって使用されるデータセットが頻繁に変更されることが分かっているような場合も、動的フィールドの使用が向いているでしょう。
動的フィールドをアプリケーションで使用するには:
- データセットおよびデータソースをデータ モジュールに配置します。
- データセットとデータを関連付けます。ここでは、データのソースへ接続するために、接続コンポーネントやプロバイダを使用し、どのデータをデータセットが表すかを示すプロパティを設定します。
- データソースをデータセットと関連づけます。
- データ対応コントロールをアプリケーションのフォームに配置し、データ モジュールを、各フォームのユニットの uses 句に追加し、各データ対応コントロールをモジュール内のデータソースに関連づけます。さらに、フィールドを、それを必要としている各データ対応コントロールと関連づけます。動的フィールド コンポーネントを使用しているため、指定したフィールド名が、データセットが開いている際に必ず存在する保証はない点に注意してください。
- データセットを開きます。
使いやすさを別にすると、動的フィールドには制限があります。コードを記述しなければ、動的フィールドの表示および編集のデフォルト設定は変更することはできず、動的フィールドが表示される順番も安全に変更することはできません。また、データセット内のいずれのフィールドにアクセスすることもできません。データセットに対して、計算フィールドやルックアップ フィールドといった、追加フィールドを作成することも、動的フィールドのデフォルトのデータ型をオーバーライドすることもできません。データベース アプリケーションのフィールドに対して制御と柔軟性を確保するには、フィールド エディタを起動し、データセットに対して、永続フィールド コンポーネントを作成する必要があります。