作成日: 2020/08/06 最終更新日: 2022/01/17
文書種別
使用方法
詳細
非表示列や非表示行を設定し、その列や行を含んだ範囲でアウトラインを設定すると、アウトラインの開閉操作により非表示設定が解除されます。これはExcel動作に合わせたSPREADの仕様上の動作となります。
非表示設定を維持したままアウトラインの開閉を行いたい場合には、あらかじめ非表示設定をした行列に対してTagを設定しておき、DefaultRangeGroupModelのChangedイベントにて非表示設定を再設定する方法が考えられます。
◎サンプルコード(VB)
非表示設定を維持したままアウトラインの開閉を行いたい場合には、あらかじめ非表示設定をした行列に対してTagを設定しておき、DefaultRangeGroupModelのChangedイベントにて非表示設定を再設定する方法が考えられます。
◎サンプルコード(VB)
Imports FarPoint.Win.Spread
Public Class Form1
Dim WithEvents RangeGroupModel As DefaultRangeGroupModel
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'アウトライン開始インデックス
Dim start As Integer = 0
'グループ化する列数
Dim count As Integer = 5
'アウトライン設定
FpSpread1.ActiveSheet.AddRangeGroup(start, count, False)
FpSpread1.ActiveSheet.AddRangeGroup(start, count, True)
'非表示列の幅変更用インジケータの非表示
FpSpread1.ResizeZeroIndicator = FarPoint.Win.Spread.ResizeZeroIndicator.Default
'非表示に設定
FpSpread1.ActiveSheet.Columns(3).Visible = False
FpSpread1.ActiveSheet.Rows(2).Visible = False
'非表示設定した行と列にTagを設定しておく
FpSpread1.ActiveSheet.Columns(3).Tag = False
FpSpread1.ActiveSheet.Rows(2).Tag = False
RangeGroupModel = DirectCast(FpSpread1.ActiveSheet.Models.RangeGroupModel, DefaultRangeGroupModel)
End Sub
Private Sub RangeGroupModel_Changed(sender As Object, e As RangeGroupModelEventArgs) Handles RangeGroupModel.Changed
If e.Type = RangeGroupModelEventType.Expand Then
For index As Integer = 0 To e.GroupsToExpand.Length - 1
Dim groupInfo As RangeGroupInfo = e.GroupsToExpand(index)
For i = groupInfo.Start To groupInfo.[End]
'非表示列を再度非表示にする
If FpSpread1.ActiveSheet.Columns(i).Tag IsNot Nothing Then
FpSpread1.ActiveSheet.SetColumnVisible(i, False)
End If
'非表示行を再度非表示にする
If FpSpread1.ActiveSheet.Rows(i).Tag IsNot Nothing Then
FpSpread1.ActiveSheet.SetRowVisible(i, False)
End If
Next
Next
End If
End Sub
End Class
◎サンプルコード(C#)
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// アウトライン開始インデックス
int start = 0;
// グループ化する列数
int count = 5;
// アウトライン設定
fpSpread1.ActiveSheet.AddRangeGroup(start, count, false);
fpSpread1.ActiveSheet.AddRangeGroup(start, count, true);
// 非表示列の幅変更用インジケータの非表示
fpSpread1.ResizeZeroIndicator = FarPoint.Win.Spread.ResizeZeroIndicator.Default;
// 非表示に設定
fpSpread1.ActiveSheet.Columns[3].Visible = false;
fpSpread1.ActiveSheet.Rows[2].Visible = false;
//非表示設定した行と列にTagを設定しておく
fpSpread1.ActiveSheet.Columns[3].Tag = false;
fpSpread1.ActiveSheet.Rows[2].Tag = false;
((DefaultRangeGroupModel)fpSpread1.ActiveSheet.Models.RangeGroupModel).Changed += RangeGroupModel_Changed;
}
private void RangeGroupModel_Changed(object sender, RangeGroupModelEventArgs e)
{
if (e.Type == RangeGroupModelEventType.Expand)
{
for (int index = 0; index < e.GroupsToExpand.Length; index++)
{
RangeGroupInfo groupInfo = e.GroupsToExpand[index];
for (var i = groupInfo.Start; i <= groupInfo.End; i++)
{
if (fpSpread1.ActiveSheet.Columns[i].Tag != null)
{
// 非表示列を再度非表示にする
fpSpread1.ActiveSheet.SetColumnVisible(i, false);
}
if (fpSpread1.ActiveSheet.Rows[i].Tag != null)
{
// 非表示行を再度非表示にする
fpSpread1.ActiveSheet.SetRowVisible(i, false);
}
}
}
}
}
}
旧文書番号
85874