Private Sub MSHFlexGrid1_DblClick()
    If MSHFlexGrid1.Col > 0 And MSHFlexGrid1.Row > 0 And MSHFlexGrid1.CellBackColor = &H80000005 Then
    Text1.Left = MSHFlexGrid1.CellLeft + MSHFlexGrid1.Left
    Text1.Top = MSHFlexGrid1.CellTop + MSHFlexGrid1.Top
    Text1.Width = MSHFlexGrid1.CellWidth
    Text1.Height = MSHFlexGrid1.CellHeight
    Text1 = MSHFlexGrid1.Text
    Text1.Visible = True
    Text1.SetFocus
    Text1.SelStart = 0
    Text1.SelLength = 255
   End If
End SubPrivate Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
    Select Case Button.Index
       Case "1"
       For j = 1 To MSHFlexGrid1.Row
     If MSHFlexGrid1.TextMatrix(j, 1) <> "" Then
         Adodc1.Recordset.AddNew
         For i = 0 To MSHFlexGrid.Col - 1
            If MSHFlexGrid1.TextMatrix(j, i) <> "" Then
               Adodc1.Recordset.Fields(i) = MSHFlexGrid1.TextMatrix(j, i)
            End If
         Next i
     End If
    Next j
    Adodc1.Recordset.Update
    Adodc1.Refresh
    MsgBox "信息保存成功!", vbInformation, "信息提示"
    Case "2"
        Unload Me
    End Select
End SubPrivate Sub Form_Load()  
    Set db = New ADODB.Connection
    Set rs = New ADODB.Recordset
    db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\project.mdb;Persist Security Info=False;"
    MSHFlexGrid1.TextMatrix(0, 0) = "序号"
   
    For k = 1 To MSHFlexGrid1.Rows - 1
    MSHFlexGrid1.Row = k
       MSHFlexGrid1.Col = 1
       MSHFlexGrid1.CellBackColor = &H8000000F
    Next
    For k = 1 To MSHFlexGrid1.Cols - 1
        MSHFlexGrid1.Col = k
        MSHFlexGrid1.Row = 6
        MSHFlexGrid1.CellBackColor = &H8000000F
    Next
     MSHFlexGrid1.ColWidth(0) = 1000
    MSHFlexGrid1.ColWidth(1) = 1500
    MSHFlexGrid1.ColWidth(2) = 1500
    MSHFlexGrid1.ColWidth(3) = 1500
    For i = 1 To MSHFlexGrid1.Row
    MSHFlexGrid1.TextMatrix(i, 0) = i
    Next i  Text1.Visible = False
  Text1.Left = MSHFlexGrid1.Left + MSHFlexGrid1.ColPos(MSHFlexGrid1.Col)
  Text1.Top = MSHFlexGrid1.Top + MSHFlexGrid1.RowPos(MSHFlexGrid1.Row)
  Text1.Width = MSHFlexGrid1.ColWidth(MSHFlexGrid1.Col)
  Text1.Height = MSHFlexGrid1.RowHeight(MSHFlexGrid1.Row)
End SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)
    On Error Resume Next
    If KeyAscii = 13 Then
    MSHFlexGrid1.Text = Text1.Text
      If MSHFlexGrid1.Row = MSHFlexGrid1.Rows - 1 Then
        MSHFlexGrid1.Row = 1
        MSHFlexGrid1_DblClick
      Else
        MSHFlexGrid1.Row = MSHFlexGrid1.Row + 1
        MSHFlexGrid1_DblClick
      End If
    End If
End Sub
Private Sub MShFlexGrid1_KeyPress(KeyAscii As Integer)
  If KeyAscii = vbKeyReturn Then
     If MSHFlexGrid1.Col <= 3 And MSHFlexGrid1.Row <= 6 Then
         Text1.Left = MSHFlexGrid1.CellLeft + MSHFlexGrid1.Left
        Text1.Top = MSHFlexGrid1.CellTop + MSHFlexGrid1.Top
        Text1.Width = MSHFlexGrid1.CellWidth
        Text1.Height = MSHFlexGrid1.CellHeight
        Text1 = MSFlexGrid1.Text
        Text1.Visible = True
        Text1.SetFocus
     End If
  End If
End Sub

解决方案 »

  1.   

    我大概能猜出 楼主是要在某一个cell上面加上Text1 以便于修改对吧?With MSHFlexGrid1
     c = .Col: r = .Row
     Text1.Left = .Left + .ColPos(c)
     Text1.Top = .Top + .RowPos(r)
     Text1.Width = .ColWidth(c)
     Text1.Height = .RowHeight(r)
     Text1 = .Text
     Text1.SetFocus
    End With
      

  2.   

    猜想你要如下功能,参照以下改吧:'txt-->textbox
    'mg-->MSHFlexGrid
    'appearance属性选择0
    'borderstyle属性选择0
    Private Sub mg_DblClick() '-------------->修改数据
     
     Dim c As Integer, r As Integer
      With mg
        c = .Col: r = .Row
        txt.Left = .Left + .ColPos(c) + 10
        txt.Top = .Top + .RowPos(r) + 10
        txt.Width = .ColWidth(c) - 15
        txt.Height = .RowHeight(r) - 15
      
        If mg.Col = 0 Then
           txt.MaxLength = 4
        Else
          txt.MaxLength = 1
        End If
     
        txt = .Text
        
        If mg.Col = 0 Then
           txt.SelLength = 4
        Else
           txt.SelLength = 1
        End If
        
        txt.Visible = True
        txt.SetFocus
       End WithEnd Sub
      

  3.   

    'txt-->textbox
    textbox属性如下
    'appearance属性选择0
    'borderstyle属性选择0
      

  4.   

    一定要用msf,看3楼,不过我是加15pix。