Private Sub MSHFlexGrid1_Click()
Call SetFlexTxtBox
End Sub
'-------------------------------------------
Private Sub FlexTxtBox_GotFocus()
FlexTxtBox.SelStart = 0
FlexTxtBox.SelLength = Len(FlexTxtBox.Text)
End Sub
Private Sub FlexTxtBox_KeyDown(KeyCode As Integer, Shift As Integer)
On Error Resume Next
Select Case KeyCode
Case 13 'Enter
If MSHFlexGrid1.col < MSHFlexGrid1.Cols - MSHFlexGrid1.FixedRows Then
KeyCode = 0
Call FlexTxtBox_LostFocus
MSHFlexGrid1.col = MSHFlexGrid1.col + 1
Call SetFlexTxtBox
Else
If MSHFlexGrid1.row < MSHFlexGrid1.Rows - MSHFlexGrid1.FixedRows Then
If chkAuto.value = 1 Then
KeyCode = 0
Call FlexTxtBox_LostFocus
MSHFlexGrid1.row = MSHFlexGrid1.row + 1
MSHFlexGrid1.col = MSHFlexGrid1.FixedCols
Call SetFlexTxtBox
End If
End If
End If
Case 27 'ESC - Undo
With FlexTxtBox
.Text = MSHFlexGrid1.Text
.SelStart = Len(.Text)
End With
Case 37 'LEFT
If FlexTxtBox.SelStart = 0 Or FlexTxtBox.SelLength = Len(FlexTxtBox.Text) Then
KeyCode = 0
If MSHFlexGrid1.col = MSHFlexGrid1.FixedCols Then Exit Sub
Call FlexTxtBox_LostFocus
MSHFlexGrid1.col = MSHFlexGrid1.col - 1
Call SetFlexTxtBox
End If
Case 38 'Up
KeyCode = 0
If MSHFlexGrid1.row = MSHFlexGrid1.FixedRows Then Exit Sub
Call FlexTxtBox_LostFocus
MSHFlexGrid1.row = MSHFlexGrid1.row - 1
Call SetFlexTxtBox
Case 39 'Right
If FlexTxtBox.SelStart = Len(FlexTxtBox.Text) Or FlexTxtBox.SelLength = Len(FlexTxtBox.Text) Then
KeyCode = 0
Call FlexTxtBox_LostFocus
MSHFlexGrid1.col = MSHFlexGrid1.col + 1
Call SetFlexTxtBox
End If
Case 40 'Down
KeyCode = 0
Call FlexTxtBox_LostFocus
MSHFlexGrid1.row = MSHFlexGrid1.row + 1
Call SetFlexTxtBox
End Select
End Sub
Private Sub FlexTxtBox_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 9, 13, 27, 37, 38, 39, 40
KeyAscii = 0
End Select
End Sub
Private Sub FlexTxtBox_LostFocus()
MSHFlexGrid1.TextArray(FlexTxtBox.Tag) = FlexTxtBox.Text
FlexTxtBox.Text = ""
End Sub
Function faIndex(row As Integer, col As Integer) As Long
faIndex = row * MSHFlexGrid1.Cols + col
End Function
Private Sub SetFlexTxtBox()
With FlexTxtBox
.BackColor = &HC0FFFF
.Left = MSHFlexGrid1.CellLeft + MSHFlexGrid1.Left - 10
.Top = MSHFlexGrid1.CellTop + MSHFlexGrid1.Top - 10
.Width = MSHFlexGrid1.CellWidth - 5
.Height = MSHFlexGrid1.CellHeight - 5
.Text = MSHFlexGrid1.Text
.Tag = faIndex(MSHFlexGrid1.row, MSHFlexGrid1.col)
.SelStart = 0
.SelLength = Len(FlexTxtBox.Text)
.Visible = True
.SetFocus
End With
End Sub