MESCIUS MultiRow for Windows Forms 12.0J
5.0Jからの変更点

ここでは、旧バージョンMultiRow for Windows Forms 5.0J(以下、5.0J)からの変更点について説明します。

動作保証環境について
12.0Jでは、次の環境での動作を保証していません。

 

一方、12.0Jでは新たに次の環境での動作を保証します。

  • 本製品にはMultiRow for Windows Forms 5.0Jのライセンスは含まれません。
InputManCellを標準機能として搭載
InputManCellを使用するには、5.0JではInputMan for Windows Forms 5.0Jのライセンスとインストールが必要でしたが、11.0Jでは、本製品のライセンスとインストールのみで使用することができます。
  • 本製品にはInputManPlus for Windows Forms 11.0Jのライセンスは含まれません。
  • InputManCell for Windows Forms 5.0Jで提供していたGcDateCellはGcDateTimeCellに名称を変更しました。
メンバの変更

クラス名

5.0Jで提供していたInputManCellのGcDateCellクラスは、11.0JではGcDateTimeCellクラスとなります。
5.0JのGcDateCellは、移行ツールにより11.0JのGcDateTimeCellに移行されます。

非推奨メンバ

次のクラスのメンバであるLoadTemplateメソッドが非推奨(Obsolete)となりました。これらのメンバは互換性のために残されています。旧バージョンから移行したプロジェクトでこれら非推奨メンバが使用されていると、ビルド時に[警告]が表示されますが、動作上の問題はありません。

パフォーマンスについて
11.0Jは5.0Jの軽快なパフォーマンスを維持するように開発されています。5.0Jと11.0Jの同じ機能は、同じパフォーマンスで動作することを期待できます。一方、11.0Jで追加された機能を使用する場合は、処理の程度に応じてパフォーマンスが変化する可能性があります。たとえば、5.0Jのコードを11.0Jではパフォーマンス改善用メソッドに置き換えた場合、処理速度やメモリの利用効率が改善する可能性があります。
  • パフォーマンス改善用メソッドは6.0Jで追加した機能です。

Imports GrapeCity.Win.MultiRow

' 5.0Jおよび11.0J
Dim states As MultiRowElementStates = GcMultiRow1.Rows(0).Cells(0).InheritedState

' パフォーマンス改善用メソッド
Dim states As MultiRowElementStates = GcMultiRow1.GetInheritedState(0, 0)
using GrapeCity.Win.MultiRow;

// 5.0Jおよび11.0J
MultiRowElementStates states = gcMultiRow1.Rows[0].Cells[0].InheritedState;

// パフォーマンス改善用メソッド
MultiRowElementStates states = gcMultiRow1.GetInheritedState(0, 0);

詳細は「パフォーマンスを向上するためのヒントを参照してください。
水平方向の改ページ
11.0Jでは、ページの幅を超える部分のセルは自動的に次のページに印刷されます(水平方向の改ページ)。この動作は既定で有効です。5.0Jでは、ページの幅を超えるセルは印刷されませんでした。
5.0Jで作成されたアプリケーションが、ページの幅を超える部分の切り捨てを期待して開発されている場合、11.0Jへのバージョンアップに伴って意図しない印刷ページ数の増加や空白ページの出力が生じる可能性があります。
5.0Jと同じ動作を実現するために水平方向の改ページを無効にするには、GcMultiRow.PrintSettings.HorizontalPageBreakプロパティの値をFalseに設定します。
分割線
5.0Jでは分割線と非スクロール領域が排他のため、非スクロール領域が使用されている場合は、GcMultiRow.SplitModeプロパティの設定に関係なく分割線が自動的に無効になりました。11.0Jではこの制約がなくなったため、非スクロール領域が使用されている場合でもGcMultiRow.SplitModeプロパティが有効になります。ユーザーに対して分割線の使用を不許可にする場合、明示的な設定が必要です。

Imports GrapeCity.Win.MultiRow

GcMultiRow1.Template = Template.Default
GcMultiRow1.RowCount = 10
GcMultiRow1.FreezeTopRowCount = 1
' 分割線を明示的に無効にする
GcMultiRow1.SplitMode = SplitMode.None
using GrapeCity.Win.MultiRow;

gcMultiRow1.Template = Template.Default;
gcMultiRow1.RowCount = 10;
gcMultiRow1.FreezeTopRowCount = 1;
// 分割線を明示的に無効にする
gcMultiRow1.SplitMode = SplitMode.None;
デザイナで作成される既定のオブジェクト名
デザイナでテンプレートを作成するとき、5.0Jではプロジェクトの言語の種類に関わらず常に先頭1文字が小文字になる式でオブジェクト名が自動生成されていました(例:columnHeaderCell1、textBoxCell1)。11.0Jではプロジェクトの言語に合わせて異なる形式で生成されます。言語がVisual Basicの場合、先頭は大文字になります。C#の場合は小文字になります。
デザイナで作成されるオブジェクトの参照レベル
デザイナでテンプレートを作成するとき、デザイナによって配置されるセクションやセルの参照レベルがInternalからPrivateに変更されました。
これは、Windowsフォーム デザイナの動作に合わせたものです。5.0Jと同様の参照レベルにするには、オブジェクトのModifiersプロパティの値をInternalに変更します。
5.0Jから変換されたプロジェクトでは元の参照レベルが維持されます。参照レベルはModifiersプロパティを使用して変更することができます。
セル型の基底クラス
5.0JではCellクラスは基底クラスを持ちませんでしたが、11.0Jではユーザー定義型セルのツールボックスのサポートを強化するためにComponentクラスを基底クラスとして実装しています。
この変更は通常の使用においてとくに問題となりませんが、設計時の振る舞いが従来と異なる場合があります。たとえば、5.0JにおいてGrapeCity.Win.MultiRow.v50.dllファイルをツールボックスにドラッグ&ドロップするとGcMultiRowコントロールだけがツールボックスに登録されましたが、11.0JではGcMultiRowコントロールに加えて組み込みのセル型が登録されます(WindowsフォームデザイナのツールボックスではなくMultiRowのデザイナのツールボックスに表示されます)。
自動スケーリングの対応
5.0JはDPIの変更に伴う自動スケーリングに対応していませんでしたが、11.0Jは対応しています。GcMultiRowコントロールのフォームのAutoScaleModeプロパティがFontまたはDPIのとき、システムのDPIが変更されるとMultiRowの次のプロパティが影響を受けます。


DPI バージョン 画面イメージ
96 5.0J/11.0J(共通)
120 5.0J
11.0J

スクリーンショットの補足説明:
F4キーによる編集の開始とドロップダウンの表示
        11.0Jでは、既定でF4キーによるセルのドロップダウンの表示が有効です。5.0Jでは、この処理はサンプルコードとして提案されていました。この動作を無効にするには、ShowDropDownアクションを削除します。

GcMultiRow1.ShortcutKeyManager.Unregister(GrapeCity.Win.MultiRow.EditingActions.ShowDropDown)
gcMultiRow1.ShortcutKeyManager.Unregister(GrapeCity.Win.MultiRow.EditingActions.ShowDropDown);
ComboBoxCellの視認性の改善
ビジュアルスタイルが有効のとき、選択状態になったコンボボックス型セルの文字の視認性が改善されました。ビジュアルスタイルはアプリケーション単位で識別されるため、この変更はコンボボックス型セルのスタイルがFlatの場合にも影響します。

5.0J 11.0J

5.0Jと同じ結果を再現するには、ComboBoxCell.Style.SelectionForeColor(CellStyle.ForeColorプロパティ)をColor.WhiteまたはSystemColors.HighlightTextに変更してください。

Imports GrapeCity.Win.MultiRow

Dim comboBoxCell1 As New ComboBoxCell()
comboBoxCell1.Items.Add("Item1")
comboBoxCell1.Items.Add("Item2")
comboBoxCell1.Items.Add("Item3")
comboBoxCell1.Style.SelectionForeColor = SystemColors.HighlightText
GcMultiRow1.Template = Template.CreateGridTemplate(New Cell() {comboBoxCell1})
GcMultiRow1.RowCount = 10
using GrapeCity.Win.MultiRow;  

ComboBoxCell comboBoxCell1 = new ComboBoxCell();
comboBoxCell1.Items.Add("Item1");
comboBoxCell1.Items.Add("Item2");
comboBoxCell1.Items.Add("Item3");
comboBoxCell1.Style.SelectionForeColor = SystemColors.HighlightText;
gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { comboBoxCell1 });
gcMultiRow1.RowCount = 10;
自動リサイズ
GcMultiRow.AllowUserToResizeプロパティをTrueに設定すると、ユーザーによるヘッダ型セルのリサイズが許可されます。
また、GcMultiRow.AllowUserToAutoFitColumnsプロパティにTrueを設定すると、ユーザーによるヘッダ型セルの下端または右端をダブルクリックすることでセルのサイズを最適な幅に変更できます。
セルのリサイズは許可して、ヘッダ型セルのダブルクリックによるセルのサイズを自動調整する動作のみ禁止するには、GcMultiRow.AllowUserToAutoFitColumnsプロパティをFalseを設定します。ユーザーによる、すべてのセルのリサイズ操作を無効にするにはGcMultiRow.AllowUserToResizeプロパティをFalseに設定します。
Border.Outlineプロパティ
11.0Jでは、クロス罫線に対応していることによってBorder.Allプロパティの定義が変化したため、Border.Outlineプロパティを追加しています。既存のBorder.Allプロパティの動作に変化はなく、引き続き使用できますが、Border.Outlineプロパティへの書き換えが推奨されます。
RoundedBorder.Allプロパティ(Border.Allプロパティ)も同様に、RoundedBorder.Outlineプロパティ(Border.Outlineプロパティ)への書き換えが推奨されます。11.0Jのデザイナは、Border.Outlineプロパティを優先的に使用するため、新規に作成したテンプレートにおいてはこの変更について意識する必要はありません。また、Border.Allプロパティは5.0Jとの互換性のために引き続きサポートされます。
既定のテンプレート
設計時にフォームにGcMultiRowコントロールを配置したとき、5.0Jでは既定のテンプレートが自動的に追加されましたが、11.0Jでは自動的に追加されません。これは、不要な初期化を減らすことによって、パフォーマンスの改善を期待できます。
既定のテンプレートは、GcMultiRowコントロールのスマートタグから「既定のテンプレート」を選択することで追加できます。とくに既定のテンプレートを使用する必要がない場合、この操作を行う必要はありません。
デザイナのオプションのUserCustomCellsLocationプロパティ
5.0Jで提供されていたデザイナのオプション、UserCustomCellsLocationプロパティは、11.0Jでは不要になったため、削除しています。
この変更は実行時の動作や、ユーザー定義セルの利用に影響しません。11.0Jで同様の操作を行うには「ツールボックスにユーザー定義セルを登録を参照してください。
テンプレートとグリッドコントロールの関連
テンプレートとグリッドコントロールが矛盾する設定を持つとき、基本的にグリッドコントロールの設定が優先されますが、11.0Jの機能にはこの原則が適用されないものがあります。


これらは、GcMultiRowの各プロパティがセルの共通のプロパティ(Cell.ErrorTextプロパティやCell.ShowWaveLineプロパティ)を対象としており、検証アクションと直接関連しないことと、検証アクションがセルの編集中の検証をサポートしていることによるものです。
ScrollBarModeプロパティ
5.0JではScrollBarModeプロパティで水平スクロールバーと垂直スクロールバーの両方の表示方法を設定しましたが、11.0Jでは、水平スクロールバーはHorizontalScrollBarModeプロパティ、垂直スクロールバーはVerticalScrollBarModeプロパティを使用して、それぞれの表示方法を設定できます。
既存のScrollBarModeプロパティの動作に変化はなく、引き続き使用できますが、HorizontalScrollBarModeプロパティおよび、VerticalScrollBarModeプロパティへの書き換えが推奨されます。
グラデーションの設定
5.0JではCellStyle.GradientColorsプロパティで背景グラデーションを設定しましたが、11.0Jでは、CellStyle.BackgroundGradientEffectプロパティを使用して設定します。
Imports GrapeCity.Win.MultiRow

Dim template1 = Template.Default
template1.Row.BackgroundGradientEffect = New GradientEffect(New Color() {Color.White, Color.Pink}, _
    GradientStyle.Horizontal, GradientDirection.Forward)

GcMultiRow1.Template = template1
GcMultiRow1.RowCount = 10
using GrapeCity.Win.MultiRow;

Template template1 = Template.Default;
template1.Row.BackgroundGradientEffect  = new GradientEffect(new Color[] { Color.White, Color.Pink },
    GradientStyle.Horizontal, GradientDirection.Forward);

gcMultiRow1.Template = template1;
gcMultiRow1.RowCount = 10;
   
罫線スタイルHair

5.0Jでは、罫線スタイルHairがDashedと同じスタイルで表示されていますが、11.0JではHairの罫線スタイルを正しく表示することができます。互換性のために既定では、Hairは6.0Jと同じスタイルで表示されます。正しい罫線スタイルでHairを表示するには、アプリケーション構成ファイルに次の定義を設定します。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="GrapeCity.Win.MultiRow.GcMultiRow.UseLineStyleHair" value="False"/>
  </appSettings>
</configuration>


関連トピック

 

 


© MESCIUS inc. All rights reserved.