MESCIUS SPREAD for Windows Forms 17.0J
サイドボタン

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

ボタンの追加と削除

セルの左右両端にはサイドボタンとして自由にボタンを配置し機能を割り付けることができます。ドロップダウンボタンには、GcTextBox型セルのエディットウィンドウなど、各セル型の既定の動作を関連付けられます。また、ボタンに独自の機能を設定することもできます。

セルにボタンを追加するには、SideButtons プロパティが参照するSideButtonCollectionInfo オブジェクトを使用します。SideButtonCollectionInfo は、セルに追加するボタンオブジェクトのコレクションで、追加可能なボタンを表すSideButtonInfo クラスを追加、削除するためのメソッドを提供します。

以下、4種類のボタンオブジェクトを追加できます。

ボタンの種類 説明
DropDownButton(ドロップダウンボタン)

下向きの矢印が描かれたボタンです。主にドロップダウンウィンドウを表示するために用いられます。IsDefaultBehavior プロパティをTrueに設定すると、各セル型で、以下の動作を割り当てられます。

セル型 動作
GcTextBox型セル エディットウィンドウ。詳しくは「エディットウィンドウ(GcTextBox型セル)」を参照してください。
GcDateTime型セル ドロップダウンカレンダー、またはドロップダウン日付時刻ピッカー。詳しくは「ドロップダウンカレンダー(GcDateTime型セル)」および「ドロップダウン日付時刻ピッカー(GcDateTime型セル)」を参照してください。
GcNumber型セル ドロップダウン電卓。詳しくは「ドロップダウン電卓(GcNumber型セル)」を参照してください。
GcComboBox型セル リストボックス。詳しくは「リストボックスの使い方(GcComboBox型セル)」を参照してください。
SpinButton (スピンボタン)

上下それぞれに矢印が描かれた2つのボタンが組み合わされたボタンです。主にセル内の値を増減するために用いられます。
なお、GcTextBox型セル、およびGcCharMask型セルでは既定のスピン動作が存在しないため、IsDefaultBehavior プロパティの設定は無効です。
SideButton (サイドボタン)
ボタン上にはイメージとテキストを設定することができます。
また、CheckOnClick プロパティを使用するとチェックボタンとして機能させることもできます。
SymbolButton (シンボルボタン)
SideButtonと同様、標準のButtonコントロールと似た外観を持ちますが、提供されたイメージの中からボタン上に表示する画像を設定することができます。イメージは、Symbol プロパティを使用して設定し、SymbolDirection プロパティを使用してイメージの向きを設定することができます。
シンボルボタンにはテキストは表示できません。

サンプルコード

次のサンプル コードは、Add メソッドを使用してテキストコントロールにドロップダウンボタンを追加する例です。

C#
コードのコピー
// ドロップダウンボタンを追加
GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxCellType gtcell = new GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxCellType();
gtcell.SideButtons.Add(new GrapeCity.Win.Spread.InputMan.CellType.DropDownButtonInfo());
Visual Basic
コードのコピー
' ドロップダウンボタンを追加
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
GcTextBox型セル、およびGcCharMask型セルでは既定のスピン動作が存在しないため、設定値に関わらず無効です。
イベントのハンドリング

サイドボタンのイベントをハンドリングする場合は下記のようにセルが編集状態になった時に設定する必要があります。

サンプルコード

次のサンプル コードは、GcTextBox型セルのサイドボタンに対してイベントを設定する例です。セル編集開始時に編集用コントロールのGcTextBoxコントロールに対してイベントを設定します。

C#
コードのコピー
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");
}
Visual Basic
コードのコピー
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
参照

 

 


© MESCIUS inc. All rights reserved.