マルチ行のプロパティを変更すると、テンプレートの設定が初期化される

文書番号 : 17106     文書種別 : 不具合     最終更新日 : 2005/03/11
文書を印刷する
対象製品
El Tabelle for .NET 3.0J
発生環境
この現象は次のファイル バージョンのアセンブリで発生します。
v3.0.2005.0204
v3.0.2005.0218 (HotFix)
状況
修正済み
詳細
MultiRowSheet.GetMRow メソッドで MRow を取得し、プロパティを変更すると
MRow に含まれる TCell の設定が初期化されてしまいます。
たとえば、テンプレートの個々のセルに IME モードを設定し、その後 MRow で背景色を一括して変更すると
IME モードがすべて初期化されます。

[Visual Basic]
Dim objTemplate As GrapeCity.Win.ElTabelle.Template = _
  New GrapeCity.Win.ElTabelle.Template

objTemplate.Cells(0, 0).ImeMode = ImeMode.Alpha

'MultiRowSheetにテンプレートを適用する
Dim objMemoryStream As New System.IO.MemoryStream
GrapeCity.Win.ElTabelle.TemplateFileProcessor.Save(objMemoryStream, objTemplate)
MultiRowSheet1.LoadTemplate(objMemoryStream)

Debug.WriteLine(MultiRowSheet1.GetMRow(0)(0, 0).ImeMode)
'MRowの背景色を変更する
MultiRowSheet1.GetMRow(0).BackColor = Color.LightBlue
Debug.WriteLine(MultiRowSheet1.GetMRow(0)(0, 0).ImeMode)

[C#]
GrapeCity.Win.ElTabelle.Template objTemplate =
  new GrapeCity.Win.ElTabelle.Template();

objTemplate.Cells[0, 0].ImeMode = ImeMode.Alpha;

//MultiRowSheetにテンプレートを適用する
System.IO.MemoryStream objMemoryStream = new System.IO.MemoryStream();
GrapeCity.Win.ElTabelle.TemplateFileProcessor.Save(objMemoryStream, objTemplate);
multiRowSheet1.LoadTemplate(objMemoryStream);

System.Diagnostics.Debug.WriteLine(multiRowSheet1.GetMRow(0)[0, 0].ImeMode.ToString());
//MRowの背景色を変更する
multiRowSheet1.GetMRow(0).BackColor = Color.LightBlue;
System.Diagnostics.Debug.WriteLine(multiRowSheet1.GetMRow(0)[0, 0].ImeMode.ToString());
回避方法
この現象はファイル バージョン v3.0.2005.0310 以降のアセンブリで修正されています。

修正版は こちら からダウンロードできます。

また、次の操作を行うことで現象を回避できます。

・MRow オブジェクトを使用せず、MRow オブジェクトに含まれる個々の MCell オブジェクトを設定する。

[Visual Basic]
Dim objMRange As GrapeCity.Win.ElTabelle.MRange
'指定したマルチ行の番号からMRange構造体を取得する
objMRange = GetMRangeFromMRow(Me.MultiRowSheet1, _
  Me.MultiRowSheet1.ActivePosition.MRow)
'MRange構造体の範囲に背景色を設定する
SetMRangeInfo(Me.MultiRowSheet1, objMRange, _
   GrapeCity.Win.ElTabelle.CellInfo.BackColor, Color.Red)

※インストール先フォルダの SamplesMultiRowSheet の
MRowUtility.vb をプロジェクトに組み込むか、または必要な関数をコピーして使用します。

[C#]
MRowUtility objMRowUtility = new MRowUtility();
GrapeCity.Win.ElTabelle.MRange objMRange;

//指定したマルチ行の番号からMRange構造体を取得する
objMRange = objMRowUtility.GetMRangeFromMRow(ref this.multiRowSheet1,
  this.multiRowSheet1.ActivePosition.MRow);
//MRange構造体の範囲に背景色を設定する
objMRowUtility.SetMRangeInfo(ref this.multiRowSheet1, objMRange,
  GrapeCity.Win.ElTabelle.CellInfo.BackColor, Color.Red);

※インストール先フォルダの SamplesMultiRowSheet の
MRowUtility.cs をプロジェクトに組み込むか、または必要な関数をコピーして使用します。

・テンプレートではなく、MCell オブジェクトでセルを設定する。

[Visual Basic]
MultiRowSheet1.GetMRow(0)(0, 0).ImeMode = ImeMode.Alpha

[C#]
multiRowSheet1.GetMRow(0)[0, 0].ImeMode = ImeMode.Alpha;
キーワード
ELTB04601

この文書は、以前は次のバグレポートIDで公開されていました : 4770