Spread操作------转载

Imports System.Windows.Forms
Imports System.Drawing
Imports FunCommon.IMFunction
Imports FunCommon
Imports FunCommon.CommonFunction
Imports FunCommon.AppFunction
Public Module SpreadFunction
    Public pintColorChangeRow As Integer
    Public pintColorChangeCol As Integer
    Public blnCellClickFlg As Boolean
    Public Function pfSetEnterToNone(ByVal Fpspread1 As FarPoint.Win.Spread.FpSpread)
        ' InputMap オブジェクトを作成します。
        Dim im As FarPoint.Win.Spread.InputMap
        ' 編集中セルの Enter キー押下げによる動作を設定します。
        im = Fpspread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
        ' 次のセル(左から右、上から下の順)に移動します。
        im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.StartEditing)
        ' アクティブセルの Enter キー押下げによる動作を設定します。
        im = Fpspread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
        ' 次のセル(左から右、上から下の順)に移動します。
        im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.StartEditing)
    End Function
    Public Function pfSetEnterToTab(ByVal Fpspread1 As FarPoint.Win.Spread.FpSpread)
        ' InputMap オブジェクトを作成します。
        Dim im As FarPoint.Win.Spread.InputMap
        ' 編集中セルの Enter キー押下げによる動作を設定します。
        im = Fpspread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
        ' 次のセル(左から右、上から下の順)に移動します。
        im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap)
        ' アクティブセルの Enter キー押下げによる動作を設定します。
        im = Fpspread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
        ' 次のセル(左から右、上から下の順)に移動します。
        im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap)
    End Function
    Public Function pfSetEnterToNextRow(ByVal Fpspread1 As FarPoint.Win.Spread.FpSpread)
        ' InputMap オブジェクトを作成します。
        Dim im As FarPoint.Win.Spread.InputMap
        ' 編集中セルの Enter キー押下げによる動作を設定します。
        im = Fpspread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
        ' 次のセル(左から右、上から下の順)に移動します。
        im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow)
        ' アクティブセルの Enter キー押下げによる動作を設定します。
        im = Fpspread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
        ' 次のセル(左から右、上から下の順)に移動します。
        im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow)
    End Function
    Public Function pfSpreadInit(ByVal Fpspread1 As FarPoint.Win.Spread.FpSpread) As Boolean
        Dim tipfont As New Font("Arial", 11)
        ' シートの値、スタイルをリセットします。
        Fpspread1.Reset()
        ' シートの選択を単一選択モード(リストボックスのように動作します。)に設定します。
        Fpspread1.Sheets(0).OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect
        ' 行ヘッダの AutoText をブランクに設定します。
        Fpspread1.Sheets(0).RowHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Blank
        ' 1行おきのテキストの色、背景色を設定します。
        Fpspread1.Sheets(0).AlternatingRows.Count = 2
        Fpspread1.Sheets(0).AlternatingRows(0).BackColor = Color.FromArgb(192, 192, 255)
        Fpspread1.Sheets(0).AlternatingRows(0).ForeColor = Color.FromArgb(0, 0, 0)
        Fpspread1.Sheets(0).AlternatingRows(1).BackColor = Color.FromArgb(255, 255, 192)
        Fpspread1.Sheets(0).AlternatingRows(1).ForeColor = Color.FromArgb(0, 0, 0)
        ' デフォルト行の高さを設定します。
        Fpspread1.Sheets(0).Rows.Default.Height = 30
        ' テキストチップを固定表示に設定します。
        Fpspread1.TextTipPolicy = FarPoint.Win.Spread.TextTipPolicy.Fixed
        ' 必要な場合のみスクロールバーを表示します。
        Fpspread1.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded
        ' 列ヘッダテキストの自動取得を無効にします。
        Fpspread1.Sheets(0).DataAutoHeadings = False
        ' 列ヘッダテキストを設定します。
        Fpspread1.Sheets(0).ColumnHeader.Cells(0, 1).Text = "Company"
 
        ' 指定した列を非表示にします。
        Fpspread1.Sheets(0).Columns(0).Visible = False
        Fpspread1.Sheets(0).Columns(1).Width = Fpspread1.Width - 50
    End Function
    Public Function pfSetTabNextControl(ByVal Fpspread1 As FarPoint.Win.Spread.FpSpread) As Boolean
        ' InputMap オブジェクトを作成します。
        Dim im As FarPoint.Win.Spread.InputMap
        ' セル編集状態の InputMap を取得します。
        im = Fpspread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
        ' [Tab]キー押下げによる動作をなしに設定します。
        im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.None), FarPoint.Win.Spread.SpreadActions.None)
        ' Spread コントロールがフォーカスを取得している状態の InputMap を取得します。
        im = Fpspread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
        ' [Tab]キー押下げによる動作をなしに設定します。
        im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.None), FarPoint.Win.Spread.SpreadActions.None)
        ' セル編集状態の InputMap を取得します。
        im = Fpspread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
        ' [Shift]+[Tab]キー押下げによる動作をなしに設定します。
        im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.Shift), FarPoint.Win.Spread.SpreadActions.None)
        ' Spread コントロールがフォーカスを取得している状態の InputMap を取得します。
        im = Fpspread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
        ' [Shift]+[Tab]キー押下げによる動作をなしに設定します。
        im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.Shift), FarPoint.Win.Spread.SpreadActions.None)
    End Function
    Public Function pfSetTabNextCell(ByVal Fpspread1 As FarPoint.Win.Spread.FpSpread) As Boolean
        ' InputMap オブジェクトを作成します。
        Dim im As FarPoint.Win.Spread.InputMap
        ' セル編集状態の InputMap を取得します。
        im = Fpspread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
        ' [Tab]キー押下げによる動作を「右のセル(列)に移動」に設定します。
        im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap)
        ' Spread コントロールがフォーカスを取得している状態の InputMap を取得します。
        im = Fpspread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
        ' [Tab]キー押下げによる動作を「右のセル(列)に移動」に設定します。
        im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap)
        ' セル編集状態の InputMap を取得します。
        im = Fpspread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
        ' [Shift]+[Tab]キー押下げによる動作を「左のセル(列)に移動」に設定します。
        im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.Shift), FarPoint.Win.Spread.SpreadActions.MoveToPreviousColumnWrap)
        ' Spread コントロールがフォーカスを取得している状態の InputMap を取得します。
        im = Fpspread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
        ' [Shift]+[Tab]キー押下げによる動作を「左のセル(列)に移動」に設定します。
        im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.Shift), FarPoint.Win.Spread.SpreadActions.MoveToPreviousColumnWrap)
    End Function
    Public Function pfSetSelectRange(ByVal Fpspread1 As FarPoint.Win.Spread.FpSpread) As Boolean
        ' 選択されたセルブロックのスタイルはSelectionForeColorとSelectionBackColorを使用します。
        Fpspread1.ActiveSheet.SelectionStyle = FarPoint.Win.Spread.SelectionStyles.SelectionColors
        ' 選択されたセルブロックの背景色を設定します。
        Fpspread1.ActiveSheet.SelectionBackColor = Color.LightBlue
        ' 選択されたセルブロックのテキスト色を設定します。
        Fpspread1.ActiveSheet.SelectionForeColor = Color.Red
        ' セルにテキストを設定します。
        Fpspread1.ActiveSheet.SetValue(1, 1, "選択セル")
        ' セルブロックを選択します。
        Fpspread1.ActiveSheet.AddSelection(0, 0, 3, 3)
    End Function
    Public Function pfSetActionKey(ByVal Fpspread1 As FarPoint.Win.Spread.FpSpread) As Boolean
        ' 1番目のセル(左上端)のセル型を日付時刻型に設定します。
        Fpspread1.ActiveSheet.Cells(0, 0).CellType = New FarPoint.Win.Spread.CellType.DateTimeCellType
        ' ショートカットキーを設定する InputMap を作成します。
        Dim f2 As FarPoint.Win.Spread.InputMap
        Dim f3 As FarPoint.Win.Spread.InputMap
        Dim f4 As FarPoint.Win.Spread.InputMap
        ' セル編集状態の InputMap を取得します。
        f2 = Fpspread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
        ' セルのデータを消去するシートカットキーを[C]キーに設定します。
        f2.Put(New FarPoint.Win.Spread.Keystroke(Keys.C, Keys.None), FarPoint.Win.Spread.SpreadActions.ClearCell)
        ' セル編集状態の InputMap を取得します。
        f3 = Fpspread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
        ' 現在の日付を表示するシートカットキーを[D]キーに設定します。
        f3.Put(New FarPoint.Win.Spread.Keystroke(Keys.D, Keys.None), FarPoint.Win.Spread.SpreadActions.DateTimeNow)
        ' セル編集状態の InputMap を取得します。
        f4 = Fpspread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
        ' ポップアップカレンダーを表示するシートカットキーを[P]キーに設定します。
        f4.Put(New FarPoint.Win.Spread.Keystroke(Keys.P, Keys.None), FarPoint.Win.Spread.SpreadActions.ShowSubEditor)
    End Function
    ' @(f)        
    '        
    ' 機能      : spreadのセルを選択する
    '        
    ' 引き数    : Fpspread1  操作のspread
    '           : intRow     操作の行
    '   : intCol     操作の列     
    ' 返り値    : true 成功 false 失敗
    '        
    ' 機能説明  : spreadのセルを選択する
    '        
    ' 備考      : 作成者 ××× 04/10/28
    Public Function pfSetActiveCell(ByVal Fpspread1 As FarPoint.Win.Spread.FpSpread, ByVal intRow As Integer, ByVal intCol As Integer) As Boolean
        Try
            Fpspread1.ActiveSheet.SetActiveCell(intRow, intCol)
            Fpspread1.ActiveSheet.Models.Selection.ClearSelection()
            Fpspread1.ActiveSheet.Models.Selection.AddSelection(intRow, intCol, 1, 1)
            Fpspread1.ActiveSheet.SelectionStyle = FarPoint.Win.Spread.SelectionStyles.None
            Fpspread1.EditModeReplace = True
            Fpspread1.EditMode = True
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function
    ' @(f)        
    '        
    ' 機能      : spreadのセルを選択する
    '        
    ' 引き数    : Fpspread1  操作のspread
    '           : intRow     操作の行
    '   : intCol     操作の列     
    ' 返り値    : true 成功 false 失敗
    '        
    ' 機能説明  : spreadのセルを選択する
    '        
    ' 備考      : 作成者 ××× 04/10/28
    Public Function pfSetActiveCellForProduce(ByVal Fpspread1 As FarPoint.Win.Spread.FpSpread, ByVal intRow As Integer, ByVal intCol As Integer) As Boolean
        Try
            Fpspread1.ActiveSheet.SetActiveCell(intRow, intCol)
            Fpspread1.ActiveSheet.Models.Selection.ClearSelection()
            Fpspread1.ActiveSheet.Models.Selection.AddSelection(intRow, intCol, 1, 1)
            Fpspread1.ActiveSheet.SelectionStyle = FarPoint.Win.Spread.SelectionStyles.None
            'Fpspread1.EditModeReplace = True
            Fpspread1.EditMode = True
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function
    ' @(f)        
    '        
    ' 機能      : spreadのフォーカスを離れる処理
    '        
    ' 引き数    : spdTemp  操作のspread
    '           : intStartRow     操作の開始行
    '   : intStartCol     操作の開始列
    '           : intEndRow       操作の終了行
    '           : intEndCol       操作の終了列
    ' 返り値    : true 成功 false 失敗
    '        
    ' 機能説明  : spreadのフォーカスを離れる処理
    '        
    ' 備考      : 作成者 ××× 04/10/28
    Public Sub psSetSpreadLostFocus(ByVal spdTemp As FarPoint.Win.Spread.FpSpread, ByVal intStartRow As Integer, ByVal intStartCol As Integer, ByVal intEndRow As Integer, ByVal intEndCol As Integer)
        Dim objInputMap As FarPoint.Win.Spread.InputMap
        objInputMap = spdTemp.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
        If spdTemp.ActiveSheet.ActiveColumnIndex = intEndCol And spdTemp.ActiveSheet.ActiveRowIndex = intEndRow Then
            objInputMap.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.None), FarPoint.Win.Spread.SpreadActions.None)
        ElseIf spdTemp.ActiveSheet.ActiveColumnIndex = intStartCol And spdTemp.ActiveSheet.ActiveRowIndex = intStartRow Then
            objInputMap.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.Shift), FarPoint.Win.Spread.SpreadActions.None)
            objInputMap.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap)
        Else
            objInputMap.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap)
            objInputMap.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.Shift), FarPoint.Win.Spread.SpreadActions.MoveToPreviousColumnWrap)
        End If
    End Sub
    ' @(f)        
    '        
    ' 機能      : spreadのTABとSHIFT+TABを押すの時,実行しない
    '        
    ' 引き数    : FpSpread1  操作のspread
    ' 返り値    :
    '        
    ' 機能説明  : spreadのTABとSHIFT+TABを押すの時,実行しない
    '        
    ' 備考      : 作成者 ××× 04/10/28
    Public Sub psEnableTabShiftTab(ByVal FpSpread1 As FarPoint.Win.Spread.FpSpread)
        Dim oo As FarPoint.Win.Spread.InputMap
        ''Dim pp As FarPoint.Win.Spread.InputMap
        oo = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
        oo.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.None), FarPoint.Win.Spread.SpreadActions.StopEditing)
        ' セルのデータを消去するシートカットキーを[C]キーに設定します。
        oo.Put(New FarPoint.Win.Spread.Keystroke(Keys.Tab, Keys.Shift), FarPoint.Win.Spread.SpreadActions.StopEditing)
    End Sub
    ' @(f)        
    '        
    ' 機能      : spread中に、「delete」キーを押す時、セル内容をクリア
    '        
    ' 引き数    : spdTemp  操作のspread
    ' 返り値    :
    '        
    ' 機能説明  :spread中に、「delete」キーを押す時、セル内容をクリア
    '        
    ' 備考      : 作成者 ××× 04/10/28
    Public Sub psSetDelActionKey(ByVal spdTemp As FarPoint.Win.Spread.FpSpread)
        Dim input1 As FarPoint.Win.Spread.InputMap
        input1 = spdTemp.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
        input1.Put(New FarPoint.Win.Spread.Keystroke(Keys.Delete, Keys.None), FarPoint.Win.Spread.SpreadActions.ClearCell)
    End Sub
    ' @(s)        
    '        
    ' 機能      : spdShow_KeyPress事件の処理     
    '        
    ' 引き数    : spdTemp  操作のspread    
    '        
    ' 返り値    : 無し
    '        
    ' 機能説明  : ctrl+Vの時に、マウスボインタはspreadに入る     
    '        
    ' 備考      : 作成者:×××  修正者:××× 05/03/29
    '
    '           作成時:04/10/28
    Public Sub psSetCopyActionKey(ByVal spdTemp As FarPoint.Win.Spread.FpSpread, ByVal e As System.Windows.Forms.KeyEventArgs, Optional ByVal intPasteFlag As Integer = 0)
        Try
            Dim input1 As New FarPoint.Win.Spread.InputMap
            Dim i As Integer
            Dim intActiveCol As Integer
            Dim intActiveRow As Integer
            intActiveCol = spdTemp.ActiveSheet.ActiveColumnIndex
            intActiveRow = spdTemp.ActiveSheet.ActiveRowIndex
            input1 = spdTemp.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
            input1.Put(New FarPoint.Win.Spread.Keystroke(Keys.C, Keys.Control), FarPoint.Win.Spread.SpreadActions.None)
            If e.Modifiers = Keys.Control And e.KeyCode = Keys.C Then
                Clipboard.SetDataObject(spdTemp.ActiveSheet.ActiveCell.Text.ToString, True)
            End If
            'セル、列、行はロック場合、貼付しない
            If spdTemp.ActiveSheet.ActiveColumn.Locked = True Or spdTemp.ActiveSheet.ActiveCell.Locked = True Or spdTemp.ActiveSheet.ActiveRow.Locked = True Then
                Exit Sub
            End If
            If e.Modifiers = Keys.Control And e.KeyCode = Keys.V Then
                If intPasteFlag = 1 Then
                    If (intActiveCol = 6 Or intActiveCol = 7 Or intActiveCol = 8 Or intActiveCol = 9 Or intActiveCol = 10) And _
                        spdTemp.ActiveSheet.Rows(intActiveRow).Locked = False Then
                        Dim strCopy() As String
                        Dim iData As IDataObject
                        iData = Clipboard.GetDataObject()
                        spdTemp.EditMode = True
                        If (iData.GetDataPresent(DataFormats.Text)) Then
                            strCopy = Split(CStr(iData.GetData(DataFormats.Text)), " ")
                            If strCopy Is Nothing Then
                                Exit Sub
                            End If
                            For i = 3 To UBound(strCopy) Step -1
                                ReDim Preserve strCopy(UBound(strCopy) + 1)
                                strCopy(UBound(strCopy)) = ""
                            Next
                            'select case intActiveCol then
                            For i = intActiveCol To intActiveCol + 5
                                If i > 12 Then
                                    Exit Sub
                                End If
                                Select Case i
                                    Case 6
                                        spdTemp.ActiveSheet.Cells(intActiveRow, i).Text = Mid(strCopy(i - intActiveCol), 1, 7)
                                    Case 7
                                        spdTemp.ActiveSheet.Cells(intActiveRow, i).Text = Mid(strCopy(i - intActiveCol), 1, 17)
                                    Case 8
                                        spdTemp.ActiveSheet.Cells(intActiveRow, i).Text = Mid(strCopy(i - intActiveCol), 1, 7)
                                    Case 9
                                        spdTemp.ActiveSheet.Cells(intActiveRow, i).Text = Mid(strCopy(i - intActiveCol), 1, 15)
                                    Case 10
                                        spdTemp.ActiveSheet.Cells(intActiveRow, i).Text = Mid(strCopy(i - intActiveCol), 1, 15)
                                    Case 11
                                        spdTemp.ActiveSheet.Cells(intActiveRow, i).Text = Mid(strCopy(i - intActiveCol), 1, 2)
                                    Case 12
                                        spdTemp.ActiveSheet.Cells(intActiveRow, i).Text = Mid(strCopy(i - intActiveCol), 1, 7)
                                End Select
                            Next
                        Else
                            Exit Sub
                        End If
                    Else
                        spdTemp.EditMode = True
                        Dim iData As IDataObject
                        iData = Clipboard.GetDataObject()
                        spdTemp.EditMode = True
                        If (iData.GetDataPresent(DataFormats.Text)) Then
                            spdTemp.ActiveSheet.ActiveCell.Text = CStr(iData.GetData(DataFormats.Text))
                        Else
                            Exit Sub
                        End If
                    End If
                    '*********************** ××× 05/03/29 開始************************
                ElseIf intPasteFlag = 2 Then
                    If (intActiveCol = 2 Or intActiveCol = 3 Or intActiveCol = 4 Or _
                                            intActiveCol = 5 Or intActiveCol = 6) And _
                                            spdTemp.ActiveSheet.Rows(intActiveRow).Locked = False Then
                        Dim strCopy() As String
                        Dim iData As IDataObject
                        iData = Clipboard.GetDataObject()
                        spdTemp.EditMode = True
                        If (iData.GetDataPresent(DataFormats.Text)) Then
                            strCopy = Split(CStr(iData.GetData(DataFormats.Text)), " ")
                            If strCopy Is Nothing Then
                                Exit Sub
                            End If
                            For i = 3 To UBound(strCopy) Step -1
                                ReDim Preserve strCopy(UBound(strCopy) + 1)
                                strCopy(UBound(strCopy)) = ""
                            Next
                            'select case intActiveCol then
                            For i = intActiveCol To intActiveCol + 5
                                If i > 8 Then
                                    Exit Sub
                                End If
                                Select Case i
                                    Case 2
                                        spdTemp.ActiveSheet.Cells(intActiveRow, i).Text = Mid(strCopy(i - intActiveCol), 1, 7)
                                    Case 3
                                        spdTemp.ActiveSheet.Cells(intActiveRow, i).Text = Mid(strCopy(i - intActiveCol), 1, 17)
                                    Case 4
                                        spdTemp.ActiveSheet.Cells(intActiveRow, i).Text = Mid(strCopy(i - intActiveCol), 1, 7)
                                    Case 5
                                        spdTemp.ActiveSheet.Cells(intActiveRow, i).Text = Mid(strCopy(i - intActiveCol), 1, 15)
                                    Case 6
                                        spdTemp.ActiveSheet.Cells(intActiveRow, i).Text = Mid(strCopy(i - intActiveCol), 1, 15)
                                    Case 7
                                        spdTemp.ActiveSheet.Cells(intActiveRow, i).Text = Mid(strCopy(i - intActiveCol), 1, 2)
                                    Case 8
                                        spdTemp.ActiveSheet.Cells(intActiveRow, i).Text = Mid(strCopy(i - intActiveCol), 1, 7)
                                End Select
                            Next
                        Else
                            Exit Sub
                        End If
                    Else
                        spdTemp.EditMode = True
                        Dim iData As IDataObject
                        iData = Clipboard.GetDataObject()
                        spdTemp.EditMode = True
                        If (iData.GetDataPresent(DataFormats.Text)) Then
                            spdTemp.ActiveSheet.ActiveCell.Text = CStr(iData.GetData(DataFormats.Text))
                        Else
                            Exit Sub
                        End If
                    End If
                    '*********************** ××× 05/03/29 終わる**********************
                Else
                    If spdTemp.EditMode = False Then
                        spdTemp.EditMode = True
                        Dim iData As IDataObject
                        iData = Clipboard.GetDataObject()
                        spdTemp.EditMode = True
                        If (iData.GetDataPresent(DataFormats.Text)) Then
                            spdTemp.ActiveSheet.ActiveCell.Text = CStr(iData.GetData(DataFormats.Text))
                        Else
                            Exit Sub
                        End If
                    End If
                End If
            End If
        Catch ex As Exception
        End Try
    End Sub
    ' @(s)        
    '        
    ' 機能      : spreadの該当列ヘッドでダブルクリックして、該当列の幅は文字の幅と同じになった。
    '        
    ' 引き数    : spdTemp  操作のspread    
    '        
    ' 返り値    : 無し
    '        
    ' 機能説明  : spreadの該当列ヘッドでダブルクリックして、該当列の幅は文字の幅と同じになった。    
    '        
    ' 備考      : 作成者:×××
    '
    '           作成時:04/10/28
    Public Sub psSetSpreadColWidth(ByVal spdTemp As FarPoint.Win.Spread.FpSpread, ByVal e As FarPoint.Win.Spread.CellClickEventArgs)
        spdTemp.ActiveSheet.Columns(e.Column).Width = spdTemp.ActiveSheet.GetPreferredColumnWidth(e.Column)
    End Sub
    ' @(s)        
    '        
    ' 機能      : Clipboardのdata処理
    '        
    ' 引き数    : spdshow  操作のspread   
    '        
    ' 返り値    : 無し
    '        
    ' 機能説明  : Clipboardのdata処理     
    '        
    ' 備考      : 作成者:×××
    '
    '           作成時:04/12/24
    Public Sub psSetCopyData(ByVal spdshow As FarPoint.Win.Spread.FpSpread, ByVal e As System.Windows.Forms.KeyEventArgs)
        Dim strCopyData As String
        Dim strLast As String
        Dim intData As Integer
        Try
            strCopyData = Clipboard.GetDataObject.GetData(DataFormats.Text)
            If e.KeyCode = 9 Then
                Exit Sub
            End If
            If strCopyData <> "" Then
                intData = strCopyData.Length
                strLast = strCopyData.Substring(intData - 1, 1)
                If Asc(strLast) = 10 Then
                    If intData > 1 Then
                        Clipboard.SetDataObject(strCopyData.Substring(0, intData - 2))
                    Else
                        Clipboard.SetDataObject(strCopyData.Substring(0, intData - 1))
                    End If
                End If
            End If
        Catch ex As Exception
        End Try
    End Sub
    ' @(s)        
    '        
    ' 機能      : Spreadのマウス処理
    '        
    ' 引き数    : spdshow  操作のspread   
    '        
    ' 返り値    : 無し
    '        
    ' 機能説明  : Spreadのマウス処理    
    '        
    ' 備考      : 作成者:×××
    '
    '           作成時:04/12/25
    Public Sub pfSpreadColWidth(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        Try
            Dim intCol As Integer
            Dim intFrozenCol As Integer
            If e.Clicks = 2 And sender.Cursor Is Cursors.VSplit Then
                intFrozenCol = sender.ActiveSheet.FrozenColumnCount
                sender.ActiveSheet.FrozenColumnCount = 0
                intCol = sender.GetCellFromPixel(0, 0, e.X - 3, e.Y + 30).Column
                sender.ActiveSheet.SetColumnWidth(intCol, sender.ActiveSheet.GetPreferredColumnWidth(intCol))
                sender.ActiveSheet.FrozenColumnCount = intFrozenCol
            End If
        Catch ex As Exception
            Exit Sub
        End Try
    End Sub
    ' @(s)        
    '        
    ' 機能      : F2事件の処理     
    '        
    ' 引き数    : spdTemp  操作のspread    
    '        
    ' 返り値    : 無し
    '        
    ' 機能説明  :     
    '        
    ' 備考      : 作成者:××× 
    '
    '           作成時:04/12/27
    Public Sub psSetF2ActionKey(ByVal spdTemp As FarPoint.Win.Spread.FpSpread)
        Try
            Dim Input1 As FarPoint.Win.Spread.InputMap

            Input1 = spdTemp.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
            '/***************F3功能キーを削除します*****************/
            Input1.Put(New FarPoint.Win.Spread.Keystroke(Keys.F3, Keys.None), FarPoint.Win.Spread.SpreadActions.None)
            '/***************F2功能キーを追加します*****************/
            Input1.Put(New FarPoint.Win.Spread.Keystroke(Keys.F2, Keys.None), FarPoint.Win.Spread.SpreadActions.StartEditing)
            '/******************************FORM_LOAD中に、実行する*********************/
        Catch ex As Exception
        End Try
    End Sub

    ' @(s)        
    '        
    ' 機能      : Spreadのマウス処理
    '        
    ' 引き数    : spdshow  操作のspread   
    '        
    ' 返り値    : 無し
    '        
    ' 機能説明  : Spreadのマウス処理    
    '        
    ' 備考      : 作成者:×××
    '
    '           作成時:05/06/09
    Public Sub pfSpreadColumnWidth(ByVal tempspd As FarPoint.Win.Spread.FpSpread)
        Try
            Dim intCol As Integer
            For intCol = 0 To tempspd.ActiveSheet.ColumnCount - 1
                tempspd.ActiveSheet.Columns(intCol).Width = tempspd.ActiveSheet.GetPreferredColumnWidth(intCol)
            Next
        Catch ex As Exception
        End Try
    End Sub
End Module

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值