enc = System.Text.Encoding.GetEncoding("shift-jis")
datamodel = CType(FpSpread1.ActiveSheet.Models.Data, Model.DefaultSheetDataModel)
Dim enc As System.Text.Encoding
Dim WithEvents datamodel As Model.DefaultSheetDataModel
Private Sub datamodel_Changed(ByVal sender As Object, ByVal e As Model.SheetDataModelEventArgs) Handles datamodel.Changed
''非編集状態でクリップボードから貼り付けした場合
If e.Type = Model.SheetDataModelEventType.CellsUpdated Then
Try
If TypeOf (FpSpread1.Sheets(0).GetCellType(e.Row, e.Column)) Is CellType.TextCellType Then
Dim tCell As CellType.TextCellType = CType(FpSpread1.Sheets(0).GetCellType(e.Row, e.Column), CellType.TextCellType)
Dim s As String = CStr(datamodel.GetValue(e.Row, e.Column))
If enc.GetByteCount(s) > tCell.MaxLength Then
s = enc.GetString(enc.GetBytes(s), 0, tCell.MaxLength)
If enc.GetByteCount(s) > tCell.MaxLength Then
s = enc.GetString(enc.GetBytes(s), 0, tCell.MaxLength - 1)
Else
s = enc.GetString(enc.GetBytes(s), 0, tCell.MaxLength)
End If
datamodel.SetValue(e.Row, e.Column, s)
End If
End If
Catch
End Try
SwData = 1
End If
End Sub
Private Sub FpSpread1_EditModeOn(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOn
If TypeOf (FpSpread1.ActiveSheet.GetCellType(iRow, iCol)) Is FarPoint.Win.Spread.CellType.CurrencyCellType _
Or TypeOf (FpSpread1.ActiveSheet.GetCellType(iRow, iCol)) Is FarPoint.Win.Spread.CellType.NumberCellType Then
FpSpread1.EditingControl.ImeMode = Windows.Forms.ImeMode.Off
ElseIf TypeOf (FpSpread1.ActiveSheet.GetCellType(iRow, iCol)) Is FarPoint.Win.Spread.CellType.TextCellType Then
FpSpread1.EditingControl.ImeMode = Windows.Forms.ImeMode.Hiragana
End If
End Sub
Private Sub FpSpread1_EditChange(ByVal sender As System.Object, ByVal e As FarPoint.Win.Spread.EditorNotifyEventArgs) Handles FpSpread1.EditChange
' 編集中の入力制御
Try
' テキスト型セルの場合
If TypeOf e.View.GetSheetView.GetCellType(e.Row, e.Column) Is CellType.TextCellType Then
Dim tCell As CellType.TextCellType = CType(e.View.GetSheetView.GetCellType(e.Row, e.Column), CellType.TextCellType)
Dim s As String = e.EditingControl.Text
If enc.GetByteCount(s) > tCell.MaxLength Then
Dim chrs As Char() = enc.GetChars(enc.GetBytes(s), 0, tCell.MaxLength)
If Not Char.IsLetter(chrs(chrs.Length - 1)) Then
Array.Resize(chrs, chrs.Length - 1)
End If
e.EditingControl.Text = String.Concat(chrs)
CType(e.EditingControl, CellType.GeneralEditor).SelectionStart = e.EditingControl.Text.Length
End If
End If
Catch
End Try
End Sub