grid名称: lrgrid 在 lrgrid中放一个textbox ,名称: textinput command1 为编辑按钮 Dim moveToRight As Boolean '定义回车移动方向:为真回车右移加以下代码: Private Sub lrGrid_Click() '单击到新的单元格 If 进入编辑 = True Then If lrGrid.Col <= lrGrid_MaxCols Then '在编辑状态 TextInput.Visible = True showTextInput lrGrid TextInput.SetFocus Else TextInput.Visible = False End If
End If End SubPrivate Sub showTextInput(myGrid As MSFlexGrid) '显示输入文本框,在相应的GRID之中 If myGrid.Row < 0 Or myGrid.Col < 0 Then Exit Sub TextInput.Left = myGrid.CellLeft + myGrid.Left TextInput.Top = myGrid.CellTop + myGrid.Top TextInput.Height = myGrid.CellHeight TextInput.Width = myGrid.cellWidth TextInput.Text = myGrid.TextMatrix(myGrid.Row, myGrid.Col) TextInput.SelStart = 0 TextInput.SelLength = Len(TextInput) End Sub'按键事件 Private Sub TextInput_KeyUp(KeyCode As Integer, Shift As Integer) Dim newCol As Integer, newRow As Integer Dim myGrid As MSFlexGrid Dim i As Integer Dim newStr As String Select Case KeyCode Case 27 'ESC showTextInput lrGrid Exit Sub Case 13, 37, 38, 39, 40 '
Set myGrid = lrGrid newRow = myGrid.Row newCol = myGrid.Col
If KeyCode = 13 Then If moveToRight Then '回车右移 newCol = myGrid.Col + 1 If newCol > lrGrid_MaxCols And newRow < myGrid.Rows - 1 Then newCol = myGrid.FixedCols: newRow = myGrid.Row + 1 Else '回车下移 newRow = myGrid.Row + 1 If newRow > myGrid.Rows - 1 And newCol < lrGrid_MaxCols Then newRow = 1: newCol = myGrid.Col + 1 End If Else If KeyCode = 37 Then newCol = myGrid.Col - 1 'Left If KeyCode = 39 Then newCol = myGrid.Col + 1 'Right If KeyCode = 38 Then newRow = myGrid.Row - 1 'Up If KeyCode = 40 Then newRow = myGrid.Row + 1 'Down
If newCol > lrGrid_MaxCols And newRow < myGrid.Rows - 1 Then newCol = myGrid.FixedCols: newRow = myGrid.Row + 1 If newCol < myGrid.FixedCols And newRow > 1 Then newCol = lrGrid_MaxCols: newRow = myGrid.Row - 1 If newRow > myGrid.Rows - 1 And newCol < lrGrid_MaxCols Then newRow = 1: newCol = myGrid.Col + 1
If newCol < myGrid.FixedCols Then newCol = myGrid.FixedCols If newRow < 1 Then newRow = 1 End If
If newRow > myGrid.Rows - 1 Then newRow = myGrid.Rows - 1 If newCol > lrGrid_MaxCols Then newCol = lrGrid_MaxCols
Set myGrid = Nothing
If Val(TextInput.Text) = 0 Then newStr = "" Else newStr = Val(Trim(TextInput.Text)) lrGrid.TextMatrix(lrGrid.Row, lrGrid.Col) = newStr
在 lrgrid中放一个textbox ,名称: textinput
command1 为编辑按钮
Dim moveToRight As Boolean '定义回车移动方向:为真回车右移加以下代码:
Private Sub lrGrid_Click() '单击到新的单元格
If 进入编辑 = True Then
If lrGrid.Col <= lrGrid_MaxCols Then '在编辑状态
TextInput.Visible = True
showTextInput lrGrid
TextInput.SetFocus
Else
TextInput.Visible = False
End If
End If
End SubPrivate Sub showTextInput(myGrid As MSFlexGrid) '显示输入文本框,在相应的GRID之中
If myGrid.Row < 0 Or myGrid.Col < 0 Then Exit Sub
TextInput.Left = myGrid.CellLeft + myGrid.Left
TextInput.Top = myGrid.CellTop + myGrid.Top
TextInput.Height = myGrid.CellHeight
TextInput.Width = myGrid.cellWidth
TextInput.Text = myGrid.TextMatrix(myGrid.Row, myGrid.Col)
TextInput.SelStart = 0
TextInput.SelLength = Len(TextInput)
End Sub'按键事件
Private Sub TextInput_KeyUp(KeyCode As Integer, Shift As Integer)
Dim newCol As Integer, newRow As Integer
Dim myGrid As MSFlexGrid
Dim i As Integer
Dim newStr As String Select Case KeyCode
Case 27 'ESC
showTextInput lrGrid
Exit Sub
Case 13, 37, 38, 39, 40 '
Set myGrid = lrGrid
newRow = myGrid.Row
newCol = myGrid.Col
If KeyCode = 13 Then
If moveToRight Then '回车右移
newCol = myGrid.Col + 1
If newCol > lrGrid_MaxCols And newRow < myGrid.Rows - 1 Then newCol = myGrid.FixedCols: newRow = myGrid.Row + 1
Else '回车下移
newRow = myGrid.Row + 1
If newRow > myGrid.Rows - 1 And newCol < lrGrid_MaxCols Then newRow = 1: newCol = myGrid.Col + 1
End If
Else
If KeyCode = 37 Then newCol = myGrid.Col - 1 'Left
If KeyCode = 39 Then newCol = myGrid.Col + 1 'Right
If KeyCode = 38 Then newRow = myGrid.Row - 1 'Up
If KeyCode = 40 Then newRow = myGrid.Row + 1 'Down
If newCol > lrGrid_MaxCols And newRow < myGrid.Rows - 1 Then newCol = myGrid.FixedCols: newRow = myGrid.Row + 1
If newCol < myGrid.FixedCols And newRow > 1 Then newCol = lrGrid_MaxCols: newRow = myGrid.Row - 1
If newRow > myGrid.Rows - 1 And newCol < lrGrid_MaxCols Then newRow = 1: newCol = myGrid.Col + 1
If newCol < myGrid.FixedCols Then newCol = myGrid.FixedCols
If newRow < 1 Then newRow = 1
End If
If newRow > myGrid.Rows - 1 Then newRow = myGrid.Rows - 1
If newCol > lrGrid_MaxCols Then newCol = lrGrid_MaxCols
Set myGrid = Nothing
If Val(TextInput.Text) = 0 Then newStr = "" Else newStr = Val(Trim(TextInput.Text))
lrGrid.TextMatrix(lrGrid.Row, lrGrid.Col) = newStr
lrGrid.Row = newRow: lrGrid.Col = newCol '移动到新的单元格中
showTextInput lrGrid '显示重定位输入文本框
KeyCode = 0
End SelectEnd Sub
.TextMatrix(1, 1) = "科目代码"
……
end with