【事象】
汎用機等の利用者が旧システムと同様操作ができるようにEnterキーでセルのタブ移動をするようしたいと言う要求があります。
その設定(コード)を書きとめる。
【環境】
.NET VB (Microsoft Visual Studio 2010(sp1) .NET Framework 4)
SPREAD for Windows Forms Version : 5.0.2025.2008(SP3)(グレープシティ株式会社)
【対応】
以下のコードで対応
Enterキーで移動
Private Sub frmTail_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
Dim im As New FarPoint.Win.Spread.InputMap
'Enterキーで移動を追加
'非編集セルでの[Enter]キーを「次行へ移動」とします
im = vaSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap)
'編集中セルでの[Enter]キーを「次行へ移動」とします
im = vaSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap)
End Sub
Dim im As New FarPoint.Win.Spread.InputMap
'Enterキーで移動を追加
'非編集セルでの[Enter]キーを「次行へ移動」とします
im = vaSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap)
'編集中セルでの[Enter]キーを「次行へ移動」とします
im = vaSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap)
End Sub
コンボボックEnterキー押下でTab移動する
'コンボボックスオブジェクト
Private WithEvents _Combo As New FarPoint.Win.FpCombo()
'Enterキーが押されたフラグ
Dim bEnterKey As Boolean
Private Sub vaSpread1_EditModeOn(sender As System.Object, e As System.EventArgs) Handles vaSpread1.EditModeOn
'セル型がコンボボックス型の場合は、EditingControlをComboにマッピングする
Dim iRow As Integer = vaSpread1.ActiveSheet.ActiveRowIndex
Dim iCol As Integer = vaSpread1.ActiveSheet.ActiveColumnIndex
If TypeOf (vaSpread1.ActiveSheet.GetCellType(iRow, iCol)) Is FarPoint.Win.Spread.CellType.ComboBoxCellType Then
_Combo = CType(vaSpread1.EditingControl, FarPoint.Win.FpCombo)
End If
End Sub
Private Sub _Combo_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles _Combo.KeyDown
' Enterキーが押された場合にフラグを立てる
bEnterKey = (e.KeyCode = Keys.Enter)
End Sub
Private Sub _Combo_DropDown(ByVal sender As Object, ByVal e As FarPoint.Win.DropDownEventArgs) Handles _Combo.DropDown
' フラグが立っている場合は、DropDown処理をキャンセルする
If Not bEnterKey Then
Return
End If
e.Cancel = bEnterKey
bEnterKey = False
' アクティブセルを右隣に移動
SendKeys.Send("{Tab}")
End Sub
'一覧コンボボックで空白選択だできない対応
Private Sub vaSpread1_ComboSelChange(sender As System.Object, e As FarPoint.Win.Spread.EditorNotifyEventArgs) Handles vaSpread1.ComboSelChange
Dim cb As FarPoint.Win.FpCombo = CType(e.EditingControl, FarPoint.Win.FpCombo)
If cb.SelectedItem.Equals(String.Empty) Then
cb.Clear()
End If
End Sub
Private WithEvents _Combo As New FarPoint.Win.FpCombo()
'Enterキーが押されたフラグ
Dim bEnterKey As Boolean
Private Sub vaSpread1_EditModeOn(sender As System.Object, e As System.EventArgs) Handles vaSpread1.EditModeOn
'セル型がコンボボックス型の場合は、EditingControlをComboにマッピングする
Dim iRow As Integer = vaSpread1.ActiveSheet.ActiveRowIndex
Dim iCol As Integer = vaSpread1.ActiveSheet.ActiveColumnIndex
If TypeOf (vaSpread1.ActiveSheet.GetCellType(iRow, iCol)) Is FarPoint.Win.Spread.CellType.ComboBoxCellType Then
_Combo = CType(vaSpread1.EditingControl, FarPoint.Win.FpCombo)
End If
End Sub
Private Sub _Combo_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles _Combo.KeyDown
' Enterキーが押された場合にフラグを立てる
bEnterKey = (e.KeyCode = Keys.Enter)
End Sub
Private Sub _Combo_DropDown(ByVal sender As Object, ByVal e As FarPoint.Win.DropDownEventArgs) Handles _Combo.DropDown
' フラグが立っている場合は、DropDown処理をキャンセルする
If Not bEnterKey Then
Return
End If
e.Cancel = bEnterKey
bEnterKey = False
' アクティブセルを右隣に移動
SendKeys.Send("{Tab}")
End Sub
'一覧コンボボックで空白選択だできない対応
Private Sub vaSpread1_ComboSelChange(sender As System.Object, e As FarPoint.Win.Spread.EditorNotifyEventArgs) Handles vaSpread1.ComboSelChange
Dim cb As FarPoint.Win.FpCombo = CType(e.EditingControl, FarPoint.Win.FpCombo)
If cb.SelectedItem.Equals(String.Empty) Then
cb.Clear()
End If
End Sub
0 件のコメント:
コメントを投稿