首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MSFlexGrid编辑VB6

MSFlexGrid编辑VB6
EN

Stack Overflow用户
提问于 2012-12-23 13:53:00
回答 2查看 24K关注 0票数 4

目前,我正在开发vb6应用程序。我想在MSFlexgrid中显示数据,但在MSFlexgrid控件中没有编辑工具。

有什么方法可以编辑MSFlexgrid吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-23 14:14:16

有一种使用隐藏文本框的方法。双击单元格,文本框将可见,并且可以进行编辑。此处是代码片段,请选中它

代码语言:javascript
复制
Private Sub Form_Load()

   'Setting Col And row

    MSFlexGrid1.Cols = 3
    MSFlexGrid1.Rows = 10
    'First row
    MSFlexGrid1.TextMatrix(0, 0) = "ID"
    MSFlexGrid1.TextMatrix(0, 1) = "Date"
    MSFlexGrid1.TextMatrix(0, 2) = "Voucher Type"
    'some data
    MSFlexGrid1.TextMatrix(1, 0) = "E0000001"
    MSFlexGrid1.TextMatrix(2, 0) = "E0000001"
    MSFlexGrid1.TextMatrix(1, 1) = "01/04/10"
    MSFlexGrid1.TextMatrix(2, 1) = "01/04/10"    
    MSFlexGrid1.TextMatrix(1, 2) = "Jrnl"
    MSFlexGrid1.TextMatrix(2, 2) = "Jrnl"
End Sub

Private Sub MSFlexGrid1_DblClick()

    'If MSFlexGrid1.Col = 3 Or MSFlexGrid1.Col = 6 Or MSFlexGrid1.Col = 7 Then
        GridEdit Asc(" ")
    'End If
End Sub

Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)

        GridEdit KeyAscii

End Sub

Sub GridEdit(KeyAscii As Integer)

  'use correct font  
  Text1.FontName = MSFlexGrid1.FontName
  Text1.FontSize = MSFlexGrid1.FontSize

  Select Case KeyAscii

     Case 0 To Asc(" ")
        Text1 = MSFlexGrid1
        Text1.text = Trim(Text1.text)
        Text1.SelStart = 1000

     Case Else
         Text1 = MSFlexGrid1
         Text1.text = Trim(Text1.text)
        Text1.SelStart = 1000

 End Select

  'position the edit box


  Text1.Left = MSFlexGrid1.CellLeft + MSFlexGrid1.Left

  Text1.Top = MSFlexGrid1.CellTop + MSFlexGrid1.Top

  Text1.Width = MSFlexGrid1.CellWidth

  Text1.Height = MSFlexGrid1.CellHeight

  Text1.Visible = True

  Text1.SetFocus

End Sub

Private Sub MSFlexGrid1_LeaveCell()

  If Text1.Visible Then

    If MSFlexGrid1.Col = 6 Or MSFlexGrid1.Col = 7 Then
        If Text1.text = "" Then
            Text1.text = " "
        End If
    End If
     MSFlexGrid1 = Text1
     Text1.Visible = False

  End If

End Sub

Private Sub MSFlexGrid1_GotFocus()

  If Text1.Visible Then

    If MSFlexGrid1.Col = 6 Or MSFlexGrid1.Col = 7 Then

        If Text1.text = "" Then
            Text1.text = " "
        End If

    End If

     MSFlexGrid1 = Text1.text
     Text1.Visible = False

  End If

End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)

  'noise suppression

  If MSFlexGrid1.Col <> 6 And MSFlexGrid1.Col <> 7 Then

    KeyAscii = 0

  End If

  If KeyAscii = vbKeyReturn Then

    KeyAscii = 0

  End If

End Sub
票数 5
EN

Stack Overflow用户

发布于 2012-12-23 17:16:27

你也可以试试下面的代码吗?这不需要文本框。

代码语言:javascript
复制
'Put this code in MSFlexGrid Keypress Event

'===================================================
Private Sub MSFlexGrid_KeyPress(KeyAscii As Integer)
With MSFlexGrid
    Select Case KeyAscii

        Case 8: 'IF KEY IS BACKSPACE THEN
            If .Text <> "" Then .Text = _
             Left$(.Text, (Len(.Text) - 1))
        Case 13: 'IF KEY IS ENTER THEN
            Select Case .Col
                Case Is < (.Cols - 1):
                    SendKeys "{right}"
                Case (.Cols - 1):
                    If (.Row + 1) = .Rows Then
                        .Rows = .Rows + 1
                    End If
                    SendKeys "{home}" + "{down}"
            End Select
        Case Else
            .Text = .Text + Chr$(KeyAscii)
            'write your own keyascii Validations under 
                   'commented lines
            Select Case .Col
                Case 0, 1, 2:
                    'if (your condition(s)) then
                        'accept only charectors
                    'Else
                    '   keyascii=0
                    'End If
                Case Else:
            End Select
    End Select
End With


End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14008953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档