MSFlexGrid是只读的不能被编辑么??如何指定某单元格并对它赋值??谢谢!

解决方案 »

  1.   

    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.Row = newRow: lrGrid.Col = newCol  '移动到新的单元格中
                    showTextInput lrGrid  '显示重定位输入文本框
               
                    KeyCode = 0
            End SelectEnd Sub
      

  2.   

    with MSFlexGrid1
        .TextMatrix(1, 1) = "科目代码"
        ……
    end with