Private Sub MSHFlexGrid1_EnterCell()
  If MSHFlexGrid1.MouseRow = 0 Then
    Text1.Visible = False
    Exit Sub
  End If
  MSHFlexGrid1.Col = MSHFlexGrid1.MouseCol
  MSHFlexGrid1.Row = MSHFlexGrid1.MouseRow
  Text1.Text = ""
  Text1.Visible = False
  Text1.Top = MSHFlexGrid1.Top + MSHFlexGrid1.CellTop
  Text1.Left = MSHFlexGrid1.Left + MSHFlexGrid1.CellLeft
  Text1.Width = MSHFlexGrid1.CellWidth
  Text1.Height = MSHFlexGrid1.CellHeight
  Text1.Text = MSHFlexGrid1.Text
  Text1.Visible = True
  Text1.SetFocus
  End SubPrivate Sub MSHFlexGrid1_LeaveCell()
  MSHFlexGrid1.Text = Text1.Text
End Sub
这是我从visual basic 5从入门到精通上面拷贝的代码,实现一个用text修改MSHFlexGrid里面的数字.
  If MSHFlexGrid1.MouseRow = 0 Then
    Text1.Visible = False
    Exit Sub
  End If
这段代码用来判断固定行,不作修改操作.
问题出在每当我点击固定行然后离开的时候,程序总会修改固定行的下一行.修改后的值就是点击固定行前的cell的值.
该如何修改?

解决方案 »

  1.   

    '在窗体上放一文本框text1,和一MSHFLEXGRID控件
    Dim adoCnn As New ADODB.Connection
    Dim adoCmm As New ADODB.Command
    Dim Rs As New ADODB.Recordset
    Private Sub Command1_Click()
    Set MSHFlexGrid1.DataSource = Nothing
    MSHFlexGrid1.Clear
    MSHFlexGrid1.ClearStructure
    MSHFlexGrid1.Cols = 2
    MSHFlexGrid1.Rows = 2
    MSHFlexGrid1.Refresh
    'Unload MSHFlexGrid1
    Call Toolbar1_ButtonClick(Toolbar1.Buttons(1))
    End SubPrivate Sub Form_Load()
    Toolbar1.Buttons(1).Image = 1
        'Toolbar1.Buttons(1).Image = 1
       Text1.Move -10000, -10000, 1, 1
        adoCnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB;Persist Security Info=False"
        Rs.CursorLocation = adUseClient
        Rs.Open "select * from employees", adoCnn, adOpenDynamic, adLockBatchOptimistic
        Set MSHFlexGrid1.DataSource = Rs
    End SubPrivate Sub MSHFlexGrid1_EnterCell()
        MSHFlexGrid1.CellBackColor = vbBlue
        MSHFlexGrid1.CellForeColor = vbWhite
        Text1.Text = MSHFlexGrid1.Text
        Text1.SelStart = 0
        Text1.SelLength = Len(Text1.Text)
    End SubPrivate Sub MSHFlexGrid1_LeaveCell()
        MSHFlexGrid1.CellBackColor = vbWhite
        MSHFlexGrid1.CellForeColor = vbBlue
    End SubPrivate Sub MSHFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
        Text1.SetFocus
    End SubPrivate Sub Text1_Change()
        MSHFlexGrid1.Text = Text1.Text
    End Sub