12.0Jでは新しいスタイルシステムと新しい表計算エンジンが提供されています。新しいスタイルシステムと新しい表計算エンジンは互換機能(以下、LegacyBehaviors列挙体)のメンバとして定義されている値の組み合わせを明示的に切り替えることで有効になります。それにより該当する機能の動作を11.0J以前と同等にすることや、新しいスタイルシステムや新しい表計算エンジンを使用した新しい動作にすることが可能です。
また、VisualStudio上で新規にコントロールを配置した場合と、旧バージョンのプロジェクトを移行した場合で異なる動作となります。なお、これ以外にも動作が変わる変更点が存在しているため、手動による修正が必要になる場合があります。
LegacyBehaviors列挙体のメンバ
メンバ |
説明 |
All |
KeepFormulaOnSetValueおよびPreferTextOnExportを除くすべてのメンバが指定された状態になります。 |
AutoRowHeight |
セルの値またはプロパティがSpreadのUIで変更されたとき、行の高さは自動調整されません。 |
CalculationEngine |
以前の表計算エンジンが使用されます。
本メンバを未指定の場合の動作は「新しい表計算エンジン」をご確認ください。 |
None |
すべてのメンバが未指定の状態になり新しい動作が有効になります。 |
PropertyDefaults |
一部のプロパティの(変更された)初期値が、前のバージョンと同じになります。 |
Protect |
SheetView.ProtectプロパティがTrue、セルのロック状態を示すStyleInfo.LockedがFalseになります。 |
Style |
以前のスタイルシステムが使用されます。
本メンバを未指定の場合の動作は「新しいスタイルシステム 」をご確認ください。 |
KeepFormulaOnSetValue |
コーディングやペーストでセルに値が設定された時に、数式をクリアせずに維持しErrorイベントを発生させます。 |
PreferTextOnExport |
セルがオブジェクトを保持しているときにオブジェクトではなくテキストをExcelに出力します。 |
新規にツールボックスからコントロールを配置した場合
デザインファイル(*.Designer.cs または *.Designer.vb)のFpSpreadコンストラクタの引数としてLegacyBehaviors.Noneが指定されます。この場合、すべてのメンバが未指定の状態になり新しい動作が有効になります。
this.fpSpread1 = new FarPoint.Win.Spread.FpSpread(FarPoint.Win.Spread.LegacyBehaviors.None);
旧バージョンのプロジェクトを移行した場合
旧バージョンのFarPoint.Win.Spread.FpSpreadクラスには、引数の設定が可能なコンストラクタは存在しません。つまり旧バージョンで作成したプロジェクトに含まれるFarPoint.Win.Spread.FpSpreadコンストラクタは次のような引数がない状態になります。
this.fpSpread1 = new FarPoint.Win.Spread.FpSpread();
17.0Jでは引数を持たないFarPoint.Win.Spread.FpSpreadコンストラクタは、内部的にLegacyBehaviors.Allが指定された状態と解釈されます。そのため旧バージョンのプロジェクトを移行した際には、すべてのメンバが指定された状態になり互換性を最大限維持した動作になります。
互換機能の設定を変更する前に
製品の互換機能は旧バージョンとの互換性の維持を目的としているため、本機能を有効にしている場合には互換性を最大限維持した動作になります。一方で、12.0J以降に追加された機能は新しいスタイルシステムで動作することを想定して設計されているため、LegacyBehaviorsプロパティで以前のスタイルシステム(Style)や表計算エンジン(CalculationEngine)を有効にすると正しく動作しない場合があります。ここでは移行時における互換機能の使い分けや注意点を説明します。
11.0J以前の機能だけで十分な場合
バージョンアップの目的が環境対応などのように12.0J以降の機能を使用しない場合には、互換性を最大限維持したモード(LegacyBehaviors.All)を使用することをお勧めします。このモードはすべてのメンバが指定された状態になり互換性を最大限維持します。
12.0J以降の新機能を使用する場合?
バージョンアップの目的が12.0J以降の新機能を目的としている場合には、LegacyBehaviorsプロパティから以前のスタイルシステム(Style)や表計算エンジン(CalculationEngine)を除外するか、LegacyBehaviors.Noneを使用する必要があります。12.0J以降に追加された機能は新しいスタイルシステムで動作することを想定して設計されているため、LegacyBehaviorsプロパティで以前のスタイルシステム(Style)や表計算エンジン(CalculationEngine)を有効にすると正しく動作しない場合があります。
なお、新しいスタイルシステムは旧スタイルシステムと実装方法が異なるため修正が必要になる場合があります。詳細については「新しいスタイルシステム 」ページをご確認ください。また、SPREADデザイナでも同様にLegacyBehaviorsを変更した場合に機能やスタイルが正しく移行できないケースが確認されています。
互換機能の設定を変更する
-
LegacyBehaviors列挙体はFpSpreadコンストラクタの引数として指定が可能で、コントロールの生成のタイミングでのみ設定が可能です。アプリケーションの実行後に動的に値を変更することはできません。
-
LegacyBehaviorsを変更する際にはアプリケーションをバックアップの上で行ってください。LegacyBehaviorsは各種スタイルや動作と紐づいておりLegacyBehaviorsの値を変更後に戻しても、アプリケーションの状態が同一にならない場合があります。
互換機能の設定を変更する場合には、Visual Studioのデザイン画面を開き、SPREADコントロールのプロパティグリッドを表示してください。LegacyBehaviorsプロパティの項目にあるドロップダウンから値を変更することが可能です。

セルのロックについて
SPREADでは、シートのProtectプロパティとセルのLockedプロパティを使用することでセルをロックすることが可能ですが、 LegacyBehaviors.Protectメンバによりセルのロック動作を変更することが可能です。
プロパティ名 |
LegacyBehaviors.Protectを含まない場合 |
LegacyBehaviors.Protectを含む場合 |
SheetView.Protect |
False |
True |
StyleInfo.Locked |
True |
False |
シートのProtectプロパティとセルのLockedプロパティの既定値(デフォルト値)が11.0Jと10.0J以前で異なりますが、 10.0J以前から移行を行う場合には、LegacyBehaviors.Protectを含んだLegacyBehaviors.Allの状態になりますのでロックの状態は維持されます。
プロパティ名 |
11.0Jの既定値 |
10.0J以前の既定値 |
SheetView.Protect |
False |
True |
StyleInfo.Locked |
True |
False |
なお、11.0Jから移行を行いロックの既定値(デフォルト値)を使用している場合には、プロジェクトの移行後に手動でLegacyBehaviors.Protectを外す対応が必要になります。
ナレッジベースにも旧バージョンからの移行の際のロックに関する注意点を記載しています。
旧バージョンから移行するとセルや列のLockedプロパティがTrueに変化する