GUIの作成
GUIは簡単な設定です。fpSpreadコンポーネントを上下に2つ配置し、Labelコントロールで見出しをつけます。上のfpSpreadコンポーネントには、SPREADデザイナで列見出しとデータの入力をしておきます。
セルの条件付き書式機能を設定する
セルの条件付き書式機能は、数値データに対して有効な機能で、セルに入力される値によって、セルの背景色や枠線、文字のサイズ・色などセルの書式を自動的に変えることができる機能です。
SetConditionalFormatメソッドで数値を判定する
この機能をコードから設定する場合は、SetConditionalFormatメソッドを使用します。メソッドの書式は次のようになっています。
Function SetConditionalFormat( _ ByVal row As Integer, _ ByVal column As Integer, _ ByVal style As NamedStyle, _ ByVal op As ComparisonOperator, _ ByVal condition As Expression _ ) As Boolean
引数row
、column
には、書式を設定したいセル番地を行列番号で指定します。style
には、設定するセルの書式をNamedStyleオブジェクトとして指定します。op
にはセルデータと次のcondition
を比較するための演算子を「ComparisonOperator列挙型」のメンバで指定します。例えば、セル「1、2」の値が「1」から「59」までの間であれば、「styleCold」という名前付き書式を設定する場合は、次のように記述します。
SetConditionalFormat(1, 2, styleCold, _ FarPoint.Win.Spread.ComparisonOperator.Between, "1", "59")
SetConditionalFormat(1, 2, styleCold, FarPoint.Win.Spread.ComparisonOperator.Between, "1", "59");
比較条件に使う数値は、""で括って文字列として設定します。
この「ComparisonOperator列挙型」の演算子を使うことで、いろいろな条件で数値データを違う書式でセルに表示させることができます。
NamedStyleオブジェクトで書式を設定する
実際にセルの書式を設定するのは、NamedStyleオブジェクトをコンストラクタで作成して行います。
NamedStyleクラスには、書式に関するメンバプロパティが用意されており、このプロパティで書式を設定し、作成したNamedStyleオブジェクトへの参照を、SetConditionalFormat
メソッドの引数に指定します。
例えば、セルの背景を青色に変える書式を作成するには、次のようにNamedStyleオブジェクトをコンストラクタで作成し、BackColorプロパティを変更します。
Dim styleCold As New FarPoint.Win.Spread.NamedStyle() styleCold.BackColor = Color.Blue
FarPoint.Win.Spread.NamedStyle styleCold
= new FarPoint.Win.Spread.NamedStyle();
styleCold.BackColor = Color.Blue;
このプログラムでは、1つのセルに3つの書式を設定します。これは、低いほうの血圧が「1-59」「60-90」「91以上」、高いほうの血圧が「1-109」「110-130」「131以上」の3パターンに区分けし、それぞれ通常値であればセルの背景色がシアンに、血圧が低ければセルの背景色を青色に、高ければ赤色に変更するようにします。
ドラッグ&ドロップの準備
そして、2つのfpSpreadコンポーネントがドラッグ&ドロップでデータを操作できるように、上のfpSpreadコンポーネントでは「AllowDragDrop」プロパティを、下のfpSpreadコンポーネントでは「AllowDrop」プロパティをTrueに設定します。
FpSpread1.AllowDragDrop = True FpSpread2.AllowDrop = True
fpSpread1.AllowDragDrop = true; fpSpread2.AllowDrop = true;
そして、ここまでのコードを、フォームのLoadイベントハンドラに作成します。
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Dim styleCold As New FarPoint.Win.Spread.NamedStyle() Dim styleCool As New FarPoint.Win.Spread.NamedStyle() Dim styleHot As New FarPoint.Win.Spread.NamedStyle() styleCold.BackColor = Color.Blue styleCold.ForeColor = Color.White styleCool.BackColor = Color.Cyan styleHot.BackColor = Color.Red Dim i As Integer For i = 1 To FpSpread1.ActiveSheet.RowCount - 1 FpSpread1.ActiveSheet.SetConditionalFormat(i, 2, styleCold, _ FarPoint.Win.Spread.ComparisonOperator.Between, "1", "59") FpSpread1.ActiveSheet.SetConditionalFormat(i, 2, styleCool, _ FarPoint.Win.Spread.ComparisonOperator.Between, "60", "90") FpSpread1.ActiveSheet.SetConditionalFormat(i, 2, styleHot, _ FarPoint.Win.Spread.ComparisonOperator.GreaterThan, "91") Next For i = 1 To FpSpread1.ActiveSheet.RowCount - 1 FpSpread1.ActiveSheet.SetConditionalFormat(i, 3, styleCold, _ FarPoint.Win.Spread.ComparisonOperator.Between, "1", "109") FpSpread1.ActiveSheet.SetConditionalFormat(i, 3, styleCool, _ FarPoint.Win.Spread.ComparisonOperator.Between, "110", "130") FpSpread1.ActiveSheet.SetConditionalFormat(i, 3, styleHot, _ FarPoint.Win.Spread.ComparisonOperator.GreaterThan, "131") Next FpSpread1.AllowDragDrop = True FpSpread2.AllowDrop = True End Sub
private void Form1_Load(object sender, EventArgs e) { FarPoint.Win.Spread.NamedStyle styleCold = new FarPoint.Win.Spread.NamedStyle(); FarPoint.Win.Spread.NamedStyle styleCool = new FarPoint.Win.Spread.NamedStyle(); FarPoint.Win.Spread.NamedStyle styleHot = new FarPoint.Win.Spread.NamedStyle(); styleCold.BackColor = Color.Blue; styleCold.ForeColor = Color.White; styleCool.BackColor = Color.Cyan; styleHot.BackColor = Color.Red; int i; for(i=1; i<=fpSpread1.ActiveSheet.RowCount-1;i++){ fpSpread1.ActiveSheet.SetConditionalFormat(i, 2, styleCold, FarPoint.Win.Spread.ComparisonOperator.Between, "1", "59"); fpSpread1.ActiveSheet.SetConditionalFormat(i, 2, styleCool, FarPoint.Win.Spread.ComparisonOperator.Between, "60", "90"); fpSpread1.ActiveSheet.SetConditionalFormat(i, 2, styleHot, FarPoint.Win.Spread.ComparisonOperator.GreaterThan, "91"); } for(i=1;i<=fpSpread1.ActiveSheet.RowCount-1;i++){ fpSpread1.ActiveSheet.SetConditionalFormat(i, 3, styleCold, FarPoint.Win.Spread.ComparisonOperator.Between, "1", "109"); fpSpread1.ActiveSheet.SetConditionalFormat(i, 3, styleCool, FarPoint.Win.Spread.ComparisonOperator.Between, "110", "130"); fpSpread1.ActiveSheet.SetConditionalFormat(i, 3, styleHot, FarPoint.Win.Spread.ComparisonOperator.GreaterThan, "131"); } fpSpread1.AllowDragDrop = true; fpSpread2.AllowDrop = true; }
メンバ | 説明 |
IsTrue | 数式がTrueかどうかを判定します。 |
IsFalse | 数式がFalseかどうかを判定します。 |
Between | セル値が2つのパラメータ値の間にあるかどうかを判定します。 |
NotBetween | セル値が2つのパラメータ値の間にないかどうかを判定します。 |
EqualTo | セル値がパラメータ値と等しいかどうかを判定します。 |
NotEqualTo | セル値がパラメータ値と等しくないかどうかを判定します。 |
GreaterThan | セル値がパラメータ値より大きいかどうかを判定します。 |
LessThan | セル値がパラメータ値より小さいかどうかを判定します。 |
GreaterThanOrEqualTo | セル値がパラメータ値以上かどうかを判定します。 |
LessThanOrEqualTo | セル値がパラメータ値以下かどうかを判定します。 |