[]
セルの左右両端にはサイドボタンとして自由にボタンを配置し機能を割り付けることができます。ドロップダウンボタンでエディットウィンドウを表示するなど、ボタンに独自の機能を設定できます。

セルの左右両端にはサイドボタンとして自由にボタンを配置し機能を割り付けることができます。ドロップダウンボタンには、GcTextBox型セルのエディットウィンドウなど、各セル型の既定の動作を関連付けられます。また、ボタンに独自の機能を設定することもできます。
セルにボタンを追加するには、SideButtons プロパティが参照するSideButtonCollectionInfo オブジェクトを使用します。SideButtonCollectionInfo は、セルに追加するボタンオブジェクトのコレクションで、追加可能なボタンを表すSideButtonInfo クラスを追加、削除するためのメソッドを提供します。
以下、4種類のボタンオブジェクトを追加できます。
ボタンの種類 | 説明 |
|---|---|
DropDownButton(ドロップダウンボタン)
| 下向きの矢印が描かれたボタンです。主にドロップダウンウィンドウを表示するために用いられます。IsDefaultBehavior プロパティをTrueに設定すると、各セル型で、以下の動作を割り当てられます。
|
SpinButton (スピンボタン)
| 上下それぞれに矢印が描かれた2つのボタンが組み合わされたボタンです。主にセル内の値を増減するために用いられます。 なお、GcTextBox型セル、およびGcCharMask型セルでは既定のスピン動作が存在しないため、IsDefaultBehavior プロパティの設定は無効です。 |
SideButton (サイドボタン)
| ボタン上にはイメージとテキストを設定することができます。 また、CheckOnClick プロパティを使用するとチェックボタンとして機能させることもできます。 |
SymbolButton (シンボルボタン)
| SideButtonと同様、標準のButtonコントロールと似た外観を持ちますが、提供されたイメージの中からボタン上に表示する画像を設定することができます。イメージは、Symbol プロパティを使用して設定し、SymbolDirection プロパティを使用してイメージの向きを設定することができます。 シンボルボタンにはテキストは表示できません。 |
次のサンプル コードは、Add メソッドを使用してテキストコントロールにドロップダウンボタンを追加する例です。
// ドロップダウンボタンを追加
GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxCellType gtcell = new GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxCellType();
gtcell.SideButtons.Add(new GrapeCity.Win.Spread.InputMan.CellType.DropDownButtonInfo());' ドロップダウンボタンを追加
Dim gtcell = New GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxCellType()
gtcell.SideButtons.Add(New GrapeCity.Win.Spread.InputMan.CellType.DropDownButtonInfo())各ボタンオブジェクトのPosition プロパティを使用するとボタンの表示位置を設定することができます。
Positionの値 | 説明 |
|---|---|
Left | セルの左端に配置されます。 |
Right | セルの右端に配置されます。 |
それぞれの位置でのボタンの並びはコレクション内のインデックスによって決定されます。コレクション内のインデックスが小さい順に左から右へボタンが配置されます。
サイドボタンの背景色は各ボタンオブジェクトのBackColor プロパティで、前景色はForeColor プロパティで設定します。セルのVisualStylesがOffに設定されている場合のみ有効です。また、DropDownButton (ドロップダウンボタン) の場合はUseSpreadDropDownButtonRender プロパティがFalseである必要があります。
サイドボタンとシンボルボタンには、スピン動作を割り当てるためのBehaviorプロパティが提供されます。
サイドボタンのBehaviorプロパティに設定可能な値は以下のとおりです。Behaviorプロパティに設定した値により、IntervalプロパティとTextプロパティの初期値が自動的に変更されます。
Behaviorの値 | 説明 | Intervalプロパティの初期値 | Textプロパティの初期値 |
|---|---|---|---|
None | スピン動作を割り当てません。 | 0 | なし |
SpinUp | スピンアップ(値を増加)の動作を割り当てます。 | 60 | "+" |
SpinDown | スピンダウン(値を減少)の動作を割り当てます。 | 60 | "-" |
シンボルボタンのBehaviorプロパティに設定可能な値は以下のとおりです。Behaviorプロパティに設定した値により、Intervalプロパティ、Symbolプロパティ、SymbolDirectionプロパティの初期値が自動的に変更されます。
Behaviorの値 | 説明 | Intervalプロパティの初期値 | Symbolプロパティの初期値 | SymbolDirectionプロパティの初期値 |
|---|---|---|---|---|
None | スピン動作を割り当てません。 | 0 | None | Left |
SpinUp | スピンアップ(値を増加)の動作を割り当てます。 | 60 | Arrow | Up |
SpinDown | スピンダウン(値を減少)の動作を割り当てます。 | 60 | Arrow | Down |
!type=warning
注意:GcTextBox型セル、およびGcCharMask型セルでは既定のスピン動作が存在しないため、設定値に関わらず無効です。
サイドボタンのイベントをハンドリングする場合は下記のようにセルが編集状態になった時に設定する必要があります。
次のサンプル コードは、GcTextBox型セルのサイドボタンに対してイベントを設定する例です。セル編集開始時に編集用コントロールのGcTextBoxコントロールに対してイベントを設定します。
private void Form1_Load(object sender, EventArgs e)
{
GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxCellType gctxt = new GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxCellType();
GrapeCity.Win.Spread.InputMan.CellType.SideButtonInfo sdbtn = new GrapeCity.Win.Spread.InputMan.CellType.SideButtonInfo();
sdbtn.Name = "testbutton";
gctxt.SideButtons.Add(sdbtn);
fpSpread1.ActiveSheet.Cells[0, 0].CellType = gctxt;
}
private void fpSpread1_EditModeOn(object sender, EventArgs e)
{
// アクティブセル取得
int iRow = fpSpread1.ActiveSheet.ActiveRowIndex;
int iCol = fpSpread1.ActiveSheet.ActiveColumnIndex;
if (fpSpread1.ActiveSheet.GetCellType(iRow, iCol) is GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxCellType)
{
// 編集用コントロールにイベントを設定
(fpSpread1.EditingControl as GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxEditingControl).SideButtons["testbutton"].Click -= new EventHandler(sideButtonClick);
(fpSpread1.EditingControl as GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxEditingControl).SideButtons["testbutton"].Click += new EventHandler(sideButtonClick);
}
}
private void sideButtonClick(object sender, EventArgs e)
{
Console.WriteLine("click");
}Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim gctxt As New GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxCellType()
Dim sdbtn As New GrapeCity.Win.Spread.InputMan.CellType.SideButtonInfo()
sdbtn.Name = "testbutton"
gctxt.SideButtons.Add(sdbtn)
FpSpread1.ActiveSheet.Cells(0, 0).CellType = gctxt
End Sub
Private Sub FpSpread1_EditModeOn(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOn
' アクティブセル取得
Dim iRow As Integer = FpSpread1.ActiveSheet.ActiveRowIndex
Dim iCol As Integer = FpSpread1.ActiveSheet.ActiveColumnIndex
If TypeOf (FpSpread1.ActiveSheet.GetCellType(iRow, iCol)) Is GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxCellType Then
' 編集用コントロールにイベント設定
RemoveHandler CType(FpSpread1.EditingControl, GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxEditingControl).SideButtons("testbutton").Click, AddressOf sideButtonClick
AddHandler CType(FpSpread1.EditingControl, GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxEditingControl).SideButtons("testbutton").Click, AddressOf sideButtonClick
End If
End Sub
Private Sub sideButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
Console.WriteLine("click")
End Sub