MSFlexGrid的编辑输入

微软的MSFlexGrid控件可以显示文本,图片,更可以和数据库控件绑定,具有强大的灵活性,但是在运行时不能对网格内的数据进行修改的确是一件憾事,但是通过代码这个问题同样可以解决。

思路是在编辑网格内文本时,先将一文本框定位到网格内,在文本框中输入内容,编辑完成后,再将文本框中内容赋值给网格,这样就实现了,网格控件的编辑输入。

代码如下:

Option Explicit

Private Sub Combo1_KeyPress(KeyAscii As Integer)
    Dim i As Integer, bSame As Boolean
    If KeyAscii = vbKeyEscape Then
        Combo1.Visible = False
        MSFlexGrid1.SetFocus
        Exit Sub
    End If
    If KeyAscii = vbKeyReturn Then
        MSFlexGrid1.Text = Combo1.Text
        Combo1.Visible = False
        MSFlexGrid1.SetFocus
        With Combo1
            bSame = False
            For i = 0 To .ListCount
                If .Text = .List(i) Then bSame = True
            Next i
            If Not bSame Then .AddItem .Text
        End With
    End If
End Sub

Private Sub Combo1_LostFocus()
    Combo1.Visible = False
    MSFlexGrid1.SetFocus
End Sub

Private Sub Form_Load()
    Dim i As Integer
    With MSFlexGrid1
        .Cols = 4
        .Rows = 5
        For i = 0 To 4
            .RowHeight(i) = 300
        Next i
    End With
    For i = 1 To 10
        Combo1.AddItem i
    Next i
    Label1.Caption = "在第一、二列中,双击左键,会出现一文字框(TextBox)..." & vbCr & _
                     "而第三、四列,会出现选择类表单(ComboBox)..." & vbCr & _
                     "输入完毕后按下Enter键,资料即可保留于MSFlexGrid中," & vbCr & _
                     "而按下Esc键则取消输入..."
End Sub

Private Sub MSFlexGrid1_DblClick()
    Dim c As Integer, r As Integer
    With MSFlexGrid1
        c = .Col: r = .Row
        If c <= 1 Then
            Text1.Left = .Left + .ColPos(c)
            Text1.Top = .Top + .RowPos(r)
            Text1.Width = .ColWidth(c) - 10
            Text1.Height = .RowHeight(r) - 10
            Text1 = .Text
            Text1.Visible = True
            Text1.SetFocus
        Else
            Combo1.Left = .Left + .ColPos(c)
            Combo1.Top = .Top + .RowPos(r)
            Combo1.Width = .ColWidth(c)
            Combo1.Text = .Text
            Combo1.Visible = True
            Combo1.SetFocus
        End If
    End With
End Sub

Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyReturn Then
        Call MSFlexGrid1_DblClick
    End If
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyEscape Then
        Text1.Visible = False
        MSFlexGrid1.SetFocus
        Exit Sub
    End If
    If KeyAscii = vbKeyReturn Then
        MSFlexGrid1.Text = Text1.Text
        Text1.Visible = False
        MSFlexGrid1.SetFocus
    End If
End Sub

Private Sub Text1_LostFocus()
    Text1.Visible = False
    MSFlexGrid1.SetFocus
End Sub

 

本程序在VB6.0+Windows2000下测试通过。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值