グリッド コントロールのデフォルト状態での使用
グリッドの Columns プロパティの State プロパティは、そのグリッドに永続列オブジェクトが存在するかどうかを示します。Columns.State は、グリッドに対して自動的に設定される、実行時にのみ使用可能なプロパティです。デフォルト状態は csDefault で、グリッドに永続列オブジェクトが存在しないことを示します。その場合、グリッドにデータをどう表示するかは、主に、グリッドのデータセット内のフィールドのプロパティによって決まります。永続フィールド コンポーネントがない場合は、表示特性のデフォルト セットによって決まります。
グリッドの Columns.State プロパティが csDefault の場合、グリッドの列はデータセットの可視フィールドから動的に生成され、グリッド内での列の順序はデータセット内でのフィールドの順序と同じになります。グリッド内の列は、それぞれ 1 つのフィールド コンポーネントと関連付けられます。フィールド コンポーネントのプロパティが変化すると、すぐにグリッドに反映されます。
列を動的に生成するグリッド コントロールは、実行時に選択された任意のテーブルの内容を表示したり編集するときに使用すると便利です。グリッドの構造が設定されていないので、さまざまなデータセットに合わせて動的に変化させることができます。列を動的に生成する 1 つのグリッドを使用すると、あるときは Paradox テーブルを表示し、それから、グリッドの DataSource プロパティやデータ ソース自体の DataSet プロパティが変化したら SQL クエリの結果を表示するよう切り換えることができます。
設計時または実行時に動的な列の外観を変更することができますが、実際に変更されているのは列に表示されるフィールド コンポーネントの該当するプロパティです。動的な列のプロパティが存続するのは、列が 1 つのデータセットの特定のフィールドと関連付けられている間だけです。たとえば、ある列の Width プロパティを変更すると、その列に関連付けられたフィールドの DisplayWidth プロパティが変更されます。Font など、フィールド プロパティに基づいていない列プロパティに対する変更は、その列が存続する間だけ残ります。
グリッドのデータセットが動的なフィールド コンポーネントで構成される場合、そのフィールドは、データセットが閉じるたびに破棄されます。フィールド コンポーネントが破棄されると、それに関連付けられた動的に生成された列もすべて破棄されます。グリッドのデータセットが永続フィールド コンポーネントで構成されている場合は、データセットが閉じてもフィールド コンポーネントは残るため、それらのフィールドに関連付けられた列も、データセットが閉じてもプロパティを保持できます。
メモ: グリッドの Columns.State プロパティを実行時に csDefault に変更すると、グリッド内のすべての列オブジェクト(永続列も含む)が削除され、グリッドのデータセットの可視フィールドに基づいて動的な列が再構築されます。