另外还有一个问题希望阁下能够赐教:
我使用下面的代码实现MSFlexGrid1的数据录入:
Private Sub MSFlexGrid1_EnterCell()
    ' 设置文本框的大小与位置,使之重叠在当前单元格上
    txtMSFG1.Left = MSFlexGrid1.Left + MSFlexGrid1.CellLeft
    txtMSFG1.Top = MSFlexGrid1.Top + MSFlexGrid1.CellTop
    txtMSFG1.Width = MSFlexGrid1.CellWidth
    txtMSFG1.Height = MSFlexGrid1.CellHeight
    txtMSFG1.Text = MSFlexGrid1.Text ' 将当前单元格的数据赋予文本框
    txtMSFG1.Visible = True
    'txtMSFG1.SetFocus
End SubPrivate Sub MSFlexGrid1_LeaveCell()
    MSFlexGrid1.Text = txtMSFG1
End Sub
但是出现了问题:
    当鼠标左键单击第一行(标题行,row=0)的某一个单元格(如cell(0,1))时,该单元格所在列的所有Cell中的数据都被替换成了该列的第二个单元格(cell(1,1))中的数据。
如果使用
    If MSFlexGrid2.Row > 0 Then
    ' 设置文本框的大小与位置,使之重叠在当前单元格上
    txtMSFG1.Left = MSFlexGrid1.Left + MSFlexGrid1.CellLeft
    txtMSFG1.Top = MSFlexGrid1.Top + MSFlexGrid1.CellTop
    txtMSFG1.Width = MSFlexGrid1.CellWidth
    txtMSFG1.Height = MSFlexGrid1.CellHeight
    txtMSFG1.Text = MSFlexGrid1.Text ' 将当前单元格的数据赋予文本框
    txtMSFG1.Visible = True
    'txtMSFG1.SetFocus
    End If
再点击cell(0,1)则会将该列数据都清零。这个问题该如何解决呢?谢谢!

解决方案 »

  1.   

    Private Sub MSFlexGrid1_EnterCell()
        If MSFlexGrid1.Row = 0 Or MSFlexGrid1.Col = 0 Then Exit Sub
        
        txtMSFG1.Left = MSFlexGrid1.Left + MSFlexGrid1.CellLeft
        txtMSFG1.Top = MSFlexGrid1.Top + MSFlexGrid1.CellTop
        txtMSFG1.Width = MSFlexGrid1.CellWidth
        txtMSFG1.Height = MSFlexGrid1.CellHeight
        txtMSFG1.Text = MSFlexGrid1.Text ' ½«µ±Ç°µ¥Ôª¸ñµÄÊý¾Ý¸³ÓèÎı¾¿ò
        txtMSFG1.Visible = True
        txtMSFG1.ZOrder 0
        txtMSFG1.SetFocus
        txtMSFG1.SelStart = 0
        txtMSFG1.SelLength = Len(txtMSFG1)
    End SubPrivate Sub MSFlexGrid1_LeaveCell()
        MSFlexGrid1.Text = txtMSFG1
        txtMSFG1.Visible = False
    End Sub
      

  2.   

    我的网站上有编辑表格控件内容的源码,你可以看看。http://www.j2soft.cn/VB资料->查询“编辑MsFlexGrid表格控件的内容”;====================
    免费的学习交流网站,欢迎大家访问!
    http://www.j2soft.cn/
      

  3.   

    Private Sub MSFlexGrid1_EnterCell()
        ' 设置文本框的大小与位置,使之重叠在当前单元格上
        txtMSFG1.Left = MSFlexGrid1.Left + MSFlexGrid1.CellLeft
        txtMSFG1.Top = MSFlexGrid1.Top + MSFlexGrid1.CellTop
        txtMSFG1.Width = MSFlexGrid1.CellWidth
        txtMSFG1.Height = MSFlexGrid1.CellHeight
        mintRow=MSFlexGrid1.row
        mintcol=MSFlexGrid1.col
        txtMSFG1.Text = MSFlexGrid1.TextMatrix(mintRow,mintcol)' 将当前单元格的数据赋予文本框
        txtMSFG1.Visible = True
        'txtMSFG1.SetFocus
    End SubPrivate Sub MSFlexGrid1_LeaveCell()
        MSFlexGrid1.TextMatrix(mintRow,mintcol)= txtMSFG1
    End Sub