作成日: 2017/09/25 最終更新日: 2017/12/22
文書種別
不具合
状況
修正済み
詳細
この現象は、以下の場合に発生します。
- GcDateTime型セルに表示書式が設定されている
- SPREAD以外のコントロール、またはメモ帳など外部アプリケーションから日付を表す文字列がクリップボードにコピーされた場合
【実行手順】
1. メモ帳を開き「2017/12/31」と入力します
2. SPREADを配置します
3. 以下のサンプルコードを実行します
4. メモ帳から「2017/12/31」をコピーしB2セルに貼り付けます
--- セルに値が設定されます
5. A1セルに貼り付けます
--- セルに値が設定されません
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' GcDateTime型セルの設定
Dim dCell As New GcDateTimeCellType()
dCell.SideButtons.Clear()
dCell.Fields.Clear()
dCell.Fields.AddRange("yyyy/MM/dd")
dCell.DisplayFields.Clear()
dCell.DisplayFields.AddRange("yyyy/M/d")
FpSpread1.ActiveSheet.Columns(0).CellType = dCell
End Sub
- GcDateTime型セルに表示書式が設定されている
- SPREAD以外のコントロール、またはメモ帳など外部アプリケーションから日付を表す文字列がクリップボードにコピーされた場合
【実行手順】
1. メモ帳を開き「2017/12/31」と入力します
2. SPREADを配置します
3. 以下のサンプルコードを実行します
4. メモ帳から「2017/12/31」をコピーしB2セルに貼り付けます
--- セルに値が設定されます
5. A1セルに貼り付けます
--- セルに値が設定されません
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' GcDateTime型セルの設定
Dim dCell As New GcDateTimeCellType()
dCell.SideButtons.Clear()
dCell.Fields.Clear()
dCell.Fields.AddRange("yyyy/MM/dd")
dCell.DisplayFields.Clear()
dCell.DisplayFields.AddRange("yyyy/M/d")
FpSpread1.ActiveSheet.Columns(0).CellType = dCell
End Sub
回避方法
Service Pack 2(v10.0.4006.2012)で修正済み。
Service Pack 2より前のバージョンでは次の回避方法が有効です。
------------------------------------------
クリップボードからの貼り付け開始時にセルの編集状態を開始します(貼り付け終了時に、セルの編集状態を終了します)。
以下サンプルコードです。
【サンプルコード】
Private Sub FpSpread1_ClipboardPasting(sender As Object, e As ClipboardPastingEventArgs) Handles FpSpread1.ClipboardPasting
FpSpread1.StartCellEditing(Nothing, False)
Dim editingControl As GcDateTimeEditingControl = TryCast(FpSpread1.EditingControl, GcDateTimeEditingControl)
If editingControl IsNot Nothing Then
editingControl.SelectionStart = 0
editingControl.Value = DateTime.Parse(Clipboard.GetText())
e.Handled = True
End If
End Sub
Private Sub FpSpread1_ClipboardPasted(sender As Object, e As ClipboardPastedEventArgs) Handles FpSpread1.ClipboardPasted
FpSpread1.StopCellEditing()
End Sub
Service Pack 2より前のバージョンでは次の回避方法が有効です。
------------------------------------------
クリップボードからの貼り付け開始時にセルの編集状態を開始します(貼り付け終了時に、セルの編集状態を終了します)。
以下サンプルコードです。
【サンプルコード】
Private Sub FpSpread1_ClipboardPasting(sender As Object, e As ClipboardPastingEventArgs) Handles FpSpread1.ClipboardPasting
FpSpread1.StartCellEditing(Nothing, False)
Dim editingControl As GcDateTimeEditingControl = TryCast(FpSpread1.EditingControl, GcDateTimeEditingControl)
If editingControl IsNot Nothing Then
editingControl.SelectionStart = 0
editingControl.Value = DateTime.Parse(Clipboard.GetText())
e.Handled = True
End If
End Sub
Private Sub FpSpread1_ClipboardPasted(sender As Object, e As ClipboardPastedEventArgs) Handles FpSpread1.ClipboardPasted
FpSpread1.StopCellEditing()
End Sub
旧文書番号
41365