PowerTools SPREAD for Windows Forms 10.0J > 開発者ガイド > スタイル > 名前付きスタイル |
「スタイル」を適用すると、セル、セル範囲、行、または列の外観を、短時間で簡単にカスタマイズできます。独自の名前付きスタイルを作成して、テンプレート同様に保存および再利用することもできます。または、デフォルトスタイルの各プロパティを適宜変更することもできます。スタイルには、背景色、テキスト色、フォント、罫線、セル型など、セルに適用されるさまざまな外観設定が含まれます。 1つのスタイルを、複数のセルに適用できます。スタイルがセルに適用されるしくみは、スキンがシートに適用されるしくみと同じです。
特定のセルにスタイルを指定するには、通常はこのセルのStyleNameプロパティを使用します。 また、ParentStyleNameプロパティを使用してセル範囲のスタイルを設定すると、セル範囲内の各セルのStyleNameの値がそれぞれ異なる場合でも、これらのセルのスタイルを統一できます。セルは、親スタイル(ParentStyleName)からすべてのスタイル情報を継承します。親スタイルの設定は、セル範囲内の各セルに割り当てられたStyleInfoオブジェクトに対して Parentプロパティを設定することを意味します。名前付きスタイルの親は、NamedStyleオブジェクトのParentプロパティを使用して設定することもできます。これにより、それぞれ別の名前付きスタイルを持つ複数のセル(別の行や別の列内にある複数セルなど)にも、同一の親スタイルを適用できます。たとえば、それぞれ別のテキスト色(名前付きスタイルで設定)が設定されたセルが、同一の背景色(親スタイルで設定)を継承する場合もあります。
詳細については、DefaultStyleCollectionクラスおよびNamedStyleクラスを参照してください。 スタイル(StyleName)を設定すると、選択したセル範囲内の個々のセルに適用されるスタイルモデルのStyleInfoオブジェクト全体が、NamedStyleCollection内の指定の名前付きスタイルに設定されます。デフォルトの親スタイルは、DefaultStyleCollectionクラスのDataAreaDefaultフィールドで設定されます。
スタイルの基本モデルの詳細については、「Style モデル」を参照してください。
NamedStyleクラスのインスタンスを作成し、コンストラクタの引数でスタイルの名前を設定します。また、コンストラクタの2つ目の引数に、親スタイルの名前を設定し、このスタイルに親スタイルを設定することもできます。
次のサンプルコードは、背景色を設定する親スタイルと、それぞれが異なるテキスト色を設定する2種類の子スタイルを定義します。子スタイルを適用された各セル範囲は、同じ背景色と、異なるテキスト色で表示されます。
C# |
コードのコピー
|
---|---|
FarPoint.Win.Spread.NamedStyle backstyle = new FarPoint.Win.Spread.NamedStyle("BlueBack"); backstyle.BackColor = Color.Blue; FarPoint.Win.Spread.NamedStyle text1style = new FarPoint.Win.Spread.NamedStyle("OrangeText", "BlueBack"); text1style.ForeColor = Color.Orange; FarPoint.Win.Spread.NamedStyle text2style = new FarPoint.Win.Spread.NamedStyle("YellowText", "BlueBack"); text2style.ForeColor = Color.Yellow; fpSpread1.NamedStyles.Add(backstyle); fpSpread1.NamedStyles.Add(text1style); fpSpread1.NamedStyles.Add(text2style); fpSpread1.ActiveSheet.Cells[0,0,4,0].StyleName = "OrangeText"; fpSpread1.ActiveSheet.Cells[0,1,4,1].StyleName = "YellowText"; |
Visual Basic |
コードのコピー
|
---|---|
Dim backstyle As New FarPoint.Win.Spread.NamedStyle("BlueBack") backstyle.BackColor = Color.Blue Dim text1style As New FarPoint.Win.Spread.NamedStyle("OrangeText", "BlueBack") text1style.ForeColor = Color.Orange Dim text2style As New FarPoint.Win.Spread.NamedStyle("YellowText", "BlueBack") text2style.ForeColor = Color.Yellow FpSpread1.NamedStyles.Add(backstyle) FpSpread1.NamedStyles.Add(text1style) FpSpread1.NamedStyles.Add(text2style) FpSpread1.ActiveSheet.Cells(0,0,4,0).StyleName = "OrangeText" fpSpread1.ActiveSheet.Cells(0,1,4,1).StyleName = "YellowText" |
次のサンプルコードは、名前付きスタイルと異なる方法で、シート全体にデフォルトスタイルを設定する例です。
SheetViewクラスのDefaultStyleプロパティを使用して、StyleInfoクラスの各プロパティを設定します。下図のスプレッドシートのデータ領域のように、1つのスタイルをシートの全セルに適用する場合に適した方法です。
C# |
コードのコピー
|
---|---|
private void Form1_Load(object sender, System.EventArgs e) { fpSpread1.ActiveSheet.RowCount = 5; fpSpread1.ActiveSheet.ColumnCount = 5; // 各デフォルトスタイルを設定します。 fpSpread1.ActiveSheet.DefaultStyle.BackColor = Color.LemonChiffon; fpSpread1.ActiveSheet.DefaultStyle.ForeColor = Color.Red; fpSpread1.ActiveSheet.DefaultStyle.CellType = new FarPoint.Win.Spread.CellType.NumberCellType(); fpSpread1.ActiveSheet.DefaultStyle.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; fpSpread1.ActiveSheet.DefaultStyle.Border = new FarPoint.Win.LineBorder(Color.Green); for (int i = 0; i < fpSpread1.ActiveSheet.RowCount; i++) { for (int j = 0; j < fpSpread1.ActiveSheet.ColumnCount; j++) { fpSpread1.ActiveSheet.SetValue(i, j, i + j); } } } |
Visual Basic |
コードのコピー
|
---|---|
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load FpSpread1.ActiveSheet.RowCount = 5 FpSpread1.ActiveSheet.ColumnCount = 5 ' 各デフォルトスタイルを設定します。 FpSpread1.ActiveSheet.DefaultStyle.BackColor = Color.LemonChiffon FpSpread1.ActiveSheet.DefaultStyle.ForeColor = Color.Red FpSpread1.ActiveSheet.DefaultStyle.CellType = New FarPoint.Win.Spread.CellType.NumberCellType FpSpread1.ActiveSheet.DefaultStyle.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center FpSpread1.ActiveSheet.DefaultStyle.Border = New FarPoint.Win.LineBorder(Color.Green) For i As Integer = 0 To FpSpread1.ActiveSheet.RowCount - 1 For j As Integer = 0 To FpSpread1.ActiveSheet.ColumnCount - 1 FpSpread1.ActiveSheet.SetValue(i, j, i + j) Next Next End Sub |