PowerTools SPREAD for ASP.NET 8.0J > 開発者の手引き > シートモデル > シートモデルの概要 |
シートモデルの概要について説明します。
SPREADシート(SheetView オブジェクト)は、セル、列、行などの各オブジェクトで構成されますが、このオブジェクトの基となるのが「モデル」です。つまり、シートのすべてのオブジェクトおよび設定に対して、その基の要素となる一式のシートモデルが存在し、すべてのシートは、それぞれ固有のモデルセットを保持します。複数のシートから成る SPREADコントロールの場合は、コントロール内の各シートがそれぞれのモデルセットを保持します。
シートのCells、Columns、Rows プロパティなどのショートカットオブジェクトを介して、セル、列、行などのオブジェクトを設定すると、設定された内容はモデルに格納されます。また、通常はモデルを使用すると、プロパティを介して各オブジェクトを設定するより処理が高速になります。
たとえば、次のようにCellsプロパティを使用してCells クラスを参照し値を設定する場合を考えます。
FpSpread1.Sheets[0].Cells[0,0].Value = "Test";
FpSpread1.Sheets(0).Cells(0,0).Value = "Test"
これを、データモデルのメソッドを使用すると、次のようになります。
FpSpread1.Sheets[0].DataModel.SetValue(FpSpread1.Sheets[0].GetModelRowFromViewRow[0], FpSpread1.Sheets[0].GetModelColumnFromViewColumn[0], "Test");
FpSpread1.Sheets(0).DataModel.SetValue(FpSpread1.Sheets(0).GetModelRowFromViewRow(0), FpSpread1.Sheets(0).GetModelColumnFromViewColumn(0), "Test")
この場合の実行結果は同じものですが、内部での処理はモデル使用時の方が高速になるため、多くのデータを扱う場合はアプリケーション全体の処理が向上することもあります。また、モデルを使用しないと実現できない処理もあります。
なお、多くの処理は、モデルを使用しなくても実行でき、シート内のすべての要素がモデル内に存在するわけではありません。たとえば、シートタブ、シートの背景色、グリッド線などのコントロール全体に関する属性には、モデルには含まれないものもあります。しかし、特定のセルについての情報、たとえばセル内のデータおよびセルの外観についての情報は、モデルに含まれます。
シートのデータ領域は、固有のモデルセットを持つ1つのシートと考えられます。また、行ヘッダも固有のモデルが割り当てられた1つのシートに相当するグループと考えられます。列ヘッダも同様です。
シートを構成する機能や属性により、モデルには5つのタイプがあり、シートは、この5つのモデルの複合体だと考えることができます。これらのモデルクラスをSheetView クラスの該当するプロパティに設定することで、シートにモデルの設定が適用されます。
5つのモデルタイプは、以下のとおりです。各モデルを参照するプロパティや詳細な機能については、それぞれの解説ページを参照してください。
各モデルは、次の3つの要素により構成されます。
各モデルの基本となるクラスで、最低限の機能だけが組み込まれています。カスタムモデルを作成するには、この基本クラスを拡張します。
各要素が備えるデフォルト機能を提供するクラスで、基本クラスを継承しています。ほとんどのケースでは、このデフォルトクラスのメンバを使用することでモデルをカスタマイズし、シートに適用します。
どのモデルも1つ以上の専用インタフェースを持ちます。モデルクラスへの参照は、すべてインタフェースを介して行われます。モデルクラスに特定のインタフェースが実装されていない場合は、そのインタフェースに該当する機能が無効になります。基本クラスやデフォルトクラスには、モデルタイプ固有のインタフェースが実装されています。
独自のモデルクラスを実装する場合は、オプションのインタフェースを追加し、モデルに機能を組み込むことができます。
各モデルタイプの基本クラス、デフォルトクラス、インタフェースについては、「シートモデルのタイプ」以下の各ページを参照してください。
カスタムモデルやオプションのインタフェースの詳細については、以下のページで解説しています。