SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(SPREAD)

罫線とセルの塗りつぶし機能を持つ表計算ソフトを作る

SPREAD for .NET 2.5J Windows Forms Editionで書式を設定する

  • X ポスト
  • このエントリーをはてなブックマークに追加

選択したセルに罫線を設定する

 今度は、選択したセルに罫線を設定する機能を組み込みます。これは、まず罫線用のオブジェクトを作成し、これをCellsオブジェクトのBorderプロパティに設定するだけです。

標準の罫線の設定

 FpSpreadコンポーネントは、設定できる罫線の種類が豊富で、それぞれ線の形状ごとにオブジェクトになっていますので、どの形状の罫線を使うのかを決めておく必要があります。今回は、標準とべベルの2種類の罫線を設定するようにします。

罫線の形状とオブジェクトの対比-オンラインへルプより
  罫線の形状とオブジェクトの対比-オンラインへルプより

 標準の罫線は、LineBorderオブジェクトを使用します。FarPoint.Win.LineBorder型の変数を用意し、LineBorderクラスのコンストラクタを実行します。コンストラクタの引数は2つで、線の色をColor構造体のメンバで、線の太さを整数で指定します。

 そして、作成したオブジェクトをCellsプロパティに設定します。選択範囲の把握は、背景色の設定のコードと同じです。

Visual Basic
Dim lBorder As New FarPoint.Win.LineBorder(Bordercolor, 1)

Me.FpSpread1.ActiveSheet.Cells(Startrowno, _
                               Startcolno, _
                               Endrowno, _
                               Endcolno).Border = lBorder
C#
FarPoint.Win.LineBorder lBorder
   = new FarPoint.Win.LineBorder(Bordercolor, 1);
fpSpread1.ActiveSheet.Cells[Startrowno, 
                            Startcolno, 
                            Endrowno, 
                            Endcolno].Border = lBorder;

べベルの罫線の設定

 べベルタイプの罫線では、BevelBorderを作成しCellsプロパティに設定します。FarPoint.Win.BevelBorderの変数を用意し、BevelBorderクラスのコンストラクタを実行します。コンストラクタはオーバーロードになっていますので、ここでは引数が4つあるコンストラクタを使用しています。

 最初の引数には、べベルの形状を「Raised」(盛り上がり)にするのか「Lowered」(くぼみ)にするのかを、BevelBorderType列挙型のメンバで指定します。2番目の引数ではハイライトとなる線の色を、3番目の引数には影となる線の色を、それぞれColor構造体のメンバで指定します。4番目の引数には、線の太さを指定します。

 ここでは、べべルの形状をRaisedにします。こうすると、罫線が盛り上がっている分、セルがくぼんだように見えます。ハイライトの色はユーザーが選んだ色にし、影を暗い灰色にしています。

Visual Basic
Dim lBorder _
 As New FarPoint.Win.BevelBorder(FarPoint.Win.BevelBorderType.Raised,_
                                 Bordercolor, Color.DarkGray,1)

Me.FpSpread1.ActiveSheet.Cells(Startrowno, _
                               Startcolno, _
                               Endrowno, _
                               Endcolno).Border = lBorder
C#
FarPoint.Win.BevelBorder lBorder
  = new FarPoint.Win.BevelBorder(FarPoint.Win.BevelBorderType.Raised,
                                 Bordercolor, Color.DarkGray,1);

fpSpread1.ActiveSheet.Cells[Startrowno,
                            Startcolno,
                            Endrowno,
                            Endcolno].Border = lBorder;

罫線の色の設定

 背景色の色の設定と同じで、ColorDialogコントロールを使って色の選択ダイアログボックスを表示し、ユーザーが選んだ色を変数Bordercolorに格納します。

Visual Basic
Private Sub 罫線色ToolStripMenuItem_Click(ByVal sender _
                  As System.Object, ByVal e As System.EventArgs) _
                     Handles 罫線色ToolStripMenuItem.Click
    Dim ret As Integer

    ret = Me.ColorDialog1.ShowDialog()
    If ret = DialogResult.OK Then
        Bordercolor = Me.ColorDialog1.Color
    End If
End Sub
C#
private void 罫線色ToolStripMenuItem_Click(object sender, EventArgs e)
{
    DialogResult ret;
    ret = ColorDialog1.ShowDialog();
    if (ret == DialogResult.OK)
    {
        Bordercolor = ColorDialog1.Color;
    }
}

罫線の取り消し処理

 一度設定した罫線を元に戻して線のない状態にすることができます。これは、CellsオブジェクトのResetBorderメソッドを実行するだけです。

Visual Basic
Me.FpSpread1.ActiveSheet.Cells(Startrowno, _
                               Startcolno, _
                               Endrowno, _
                               Endcolno).ResetBorder()
C#
fpSpread1.ActiveSheet.Cells[Startrowno, 
                            Startcolno, 
                            Endrowno, 
                            Endcolno].ResetBorder();

まとめ

 セルの塗りつぶしと罫線設定の機能を組み込んでみましたが、ポイントは「ユーザーが選択したセル範囲をどうやって把握するのか」です。FpSpreadコンポーネントでは、矩形に選択された場合は、その範囲の先頭と最後のセルの行列番号を調べることで、簡単にオブジェクトとして把握することができます。

 後は、オブジェクトのプロパティやメソッドを実行するだけなので、どのようなインターフェイスでユーザーに操作系を提供すればよいのかを考えることに集中できるため、プログラマの負担もぐっと軽くなります。

 

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(SPREAD)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1108 2016/09/02 13:43

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング