谁能给我一个MSFlexGrid 控件的使用的例子,急用.在线等待.
我有一个比较复杂的表格,其中的行和列并不完全对称,并且在一行中会有好几个要输入的地方.是否是用这个控件.
谢谢!

解决方案 »

  1.   

    我现在做着一个项目,我们就是用MSFlexGrid 控件解决行编辑的问题,觉得还是挺好控制的,
    你主要想解决什么难题?说说,我给你看看。
    其实在MSDN上也有它的例子的啊,你可以查一下子。
      

  2.   

    你可以用tab,在前一页绑定,在后一页用几个文本框来绑定需要修改的橍位.
    它的定位是通过.  row 属性来设定的。
      

  3.   

    本示例工程说明了 MSFlexGrid 控件的某些事件和容器功能。它表明如何使用 Visual Basic 标准控件实现可进行单元内部编辑的工作表。创建 MSFlexGrid 数据显示的步骤如下:
    1. 创建控件。
    2. 设置属性。
    3. 添加行标头和列标头。
    4. 添加单元内部编辑功能。
    5. 向文本框(“编辑”框)添加更新数据的功能。
    6. 将数据从文本框中复制到 MSFlexGrid。

    安装
    方案中使用下述控件:
    ■ MSFlexGrid 控件
    ■ TextBox 控件

    创建控件
    本例中添加一个 MSFlexGrid 控件并在其内部添加一个 TextBox 控件,由此创建父子关系。如下所示:
    设置属性
    为 MSFlexGrid 控件和 TextBox 控件设置下述属性:
    对象 属性 设置值MSFlexGrid 控件 Name  Fg2
                       Cols  6
                       Rows  20
                   FillStyle 1 - Repeat
                   FocusRect 2 - Heavy 
                   FontName    Arial
                   FontSize 9
    TextBox       Name   txtEdit
                 FontName  Arial
                 FontSize  9
                BorderStyle  0 - None
                Visible  False
                
    添加行标头和列标头
    将下列代码添加到窗体的 Form_Load 过程中以修改 MSFlexGrid 控件,使它在外观上与工作表相象:
    Sub Form_Load ()
    Dim i As Integer '使第一列较窄。
    Fg2.ColWidth(0) = Fg2.ColWidth(0) / 2
    Fg2.ColAlignment(0) = 1 '放置在正中。 '标记行和列。
    For i = Fg2.FixedRows To Fg2.Rows - 1
    Fg2.TextArray(fgi(i, 0)) = i
    Next
    For i = Fg2.FixedCols To Fg2.Cols - 1
    Fg2.TextArray(fgi(0, i)) = i
    Next '初始化编辑框(于是,现在可加载它)。
    txtEdit = ""
    End Sub

    然后创建计算 TextArray 属性索引值的函数:
    Function Fgi (r As Integer, c As Integer) As Integer
    Fgi = c + Fg2.Cols * r
    End Function

    添加单元内部编辑功能
    示例应用程序 (Flex.vbp) 演示了为移动和选择一组单元所需的功能。为添加单元内部编辑功能,须将下列代码添加到 MSFlexGrid 控件的 KeyPress 和 DblClick 事件中:
    Sub Fg2_KeyPress (KeyAscii As Integer)
    MSFlexGridEdit Fg2, txtEdit, KeyAscii
    End SubSub Fg2_DblClick ()
    MSFlexGridEdit Fg2, txtEdit, 32 '模拟一个空格。
    End Sub为初始化文本框并将焦点从 MSFlexGrid 控件转移到 TextBox,可添加下列例程:
    Sub MSFlexGridEdit (MSFlexGrid As Control, _
    Edt As Control, KeyAscii As Integer) '使用已输入的字符。
    Select Case keyascii '空格表示编辑当前的文本。
    Case 0 To 32
    Edt = MSFlexGrid
    Edt.SelStart = 1000 '其它所有字符表示取代当前的文本。
    Case Else
    Edt = Chr(keyascii)
    Edt.SelStart = 1
    End Select '在合适的位置显示 Edt。
    Edt.Move MSFlexGrid.CellLeft, MSFlexGrid.CellTop, _
    MSFlexGrid.CellWidth, MSFlexGrid.CellHeight
    Edt.Visible = True '启动工作。
    Edt.SetFocus
    End Sub为更新数据向 TextBox 添加新的功能
    将下列例程添加到 TextBox 的 KeyPress 和 DblClick 事件中,以实现数据更新:
    Sub txtEdit_KeyPress (KeyAscii As Integer)
    '删除回车符,以消除嘟嘟声。
    If KeyAscii = vbCr Then KeyAscii = 0
    End SubSub txtEdit_KeyDown (KeyCode As Integer, _
    Shift As Integer)
    EditKeyCode Fg2, txtEdit, KeyCode, Shift
    End SubSub EditKeyCode (MSFlexGrid As Control, Edt As _
    Control, KeyCode As Integer, Shift As Integer) '标准编辑控件处理。
    Select Case KeyCode Case 27 'ESC:隐藏焦点并将其返回 MSFlexGrid。
    Edt.Visible = False
    MSFlexGrid.SetFocus Case 13 'ENTER 将焦点返回 MSFlexGrid。
    MSFlexGrid.SetFocus Case 38 '向上。
    MSFlexGrid.SetFocus
    DoEvents
    If MSFlexGrid.Row > MSFlexGrid.FixedRows Then
    MSFlexGrid.Row = MSFlexGrid.Row - 1
    End If Case 40 '向下。
    MSFlexGrid.SetFocus
    DoEvents
    If MSFlexGrid.Row < MSFlexGrid.Rows - 1 Then
    MSFlexGrid.Row = MSFlexGrid.Row + 1
    End If
    End Select
    End Sub

    将 TextBox 的数据复制到 MSFlexGrid
    最后,当把数据输入到 TextBox 中时,先告诉 MSFlexGrid 控件应该对数据做什么。当用户输入数据并按 ENTER 键,或用鼠标单击 MSFlexGrid 控件中的另一个单元时,焦点将返回此控件。这时 TextBox 中的文本被复制到活动单元中。将下列代码添加到 GotFocus 和 LeaveCell 事件过程中:
    Sub Fg2_GotFocus ()
    If txtEdit.Visible = False Then Exit Sub
    Fg2 = txtEdit
    txtEdit.Visible = False
    End SubSub Fg2_LeaveCell ()
    If txtEdit.Visible = False Then Exit Sub
    Fg2 = txtEdit
    txtEdit.Visible = False
    End Sub

    运行时,就象在本例中那样可在单个单元中输入数据:
      

  4.   

    楼上的说的对,《程序员-数据库专刊》上有一篇此文章,楼主可以查查
    不过用ADODC和DATAGRID很方便,写代码不用这么复杂,可以直接在DATAGRID内修改
    它自动完成对数据库的提交(UpDate).
      

  5.   

    去查一下msdn吧,那里比较详细