我的目的是想把CHECKBOX选中的行删除,或执行其它动作.
如果DataGird 不能实现此功能,请问我可以用什么控件呢,能举个例子吗?

解决方案 »

  1.   

    Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
        Dim hh As Integer
        Dim Xh As Integer
        Dim Cpm As String
        Dim cSpdj1 As Double
        hh = 12
        
        If DataGrid1.Enabled = True Then
            If DataGrid1.Columns(0).Text = "品牌" And DataGrid1.Columns(0).Text = "工艺" And DataGrid1.Columns(0).Text = "规格" And DataGrid1.Columns(0).Text = "TOTAL:" Then
                DataGrid1.Columns(9).Locked = True
            Else
                DataGrid1.Columns(9).Locked = False
            End If
            Select Case DataGrid1.Col
                Case 0
                    Check1.Visible = False
                    Text5.Visible = False
                    Combo2.Visible = True
                    Combo4.Visible = False
                    Combo5.Visible = False
                    Combo2.Width = DataGrid1.Columns(DataGrid1.Col).Width + 50
                    Combo2.Left = DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left
                    Combo2.top = DataGrid1.top + DataGrid1.Row * (DataGrid1.RowHeight + hh) + (DataGrid1.HeadLines - 1) * 195
                    Combo2.SetFocus
                    If DataGrid1.Columns(0).Text <> "" Then
                        Combo2.Text = DataGrid1.Columns(0).Text
                    End If
                Case 1
                    Check1.Visible = False
                    Combo2.Visible = False
                    Combo4.Visible = False
                    Combo5.Visible = False
                    Text5.Visible = False
                    Select Case DataGrid1.Columns(0).Text
                        Case "品名"
                            Check1.Visible = False
                            Text5.Visible = True
                            Combo2.Visible = False
                            Combo4.Visible = False
                            
                            Text5.Width = DataGrid1.Columns(DataGrid1.Col).Width + 50
                            Text5.Left = DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left
                            Text5.top = DataGrid1.top + DataGrid1.Row * (DataGrid1.RowHeight + hh) + (DataGrid1.HeadLines - 1) * 195
                            Text5.SetFocus
                            If DataGrid1.Columns(0).Text <> "" Then
                                Text5.Text = DataGrid1.Columns(1).Text
                            End If
                    End Select
                Case 2
                    Check1.Visible = False
                    Combo2.Visible = False
                    Combo4.Visible = False
                    Combo5.Visible = False
                    Text5.Visible = False
                    Select Case DataGrid1.Columns(0).Text
                        Case "规格"
                            If DataGrid1.Columns(2).Text <> "" Then
                                Text5.Text = DataGrid1.Columns(2).Text
                            Else
                                If Text5.Text <> "" Then
                                    DataGrid1.Columns(2).Text = Text5.Text
                                End If
                            End If
                    End Select
                    If IsNull(Rs_Jc_Shhy_Sp.Fields("ID")) Or Rs_Jc_Shhy_Sp.Fields("ID") = Rs_Jc_Shhy_Sp.RecordCount Then
                        DataGrid1.Enabled = False
                        Rs_Jc_Shhy_Sp.AddNew
                        Rs_Jc_Shhy_Sp.Fields("ID") = Rs_Jc_Shhy_Sp.RecordCount
                        Rs_Jc_Shhy_Sp.Fields("HTH") = Text1(0).Text
                        Rs_Jc_Shhy_Sp.MovePrevious
                        DataGrid1.Enabled = True
                    End If
                Case 6
                    Select Case DataGrid1.Columns(0).Text
                        Case "品名"
                            Combo5.Visible = True
                            Combo5.Width = DataGrid1.Columns(DataGrid1.Col).Width + 30
                            Combo5.Left = DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left
                            Combo5.top = DataGrid1.top + DataGrid1.Row * (DataGrid1.RowHeight + hh) + (DataGrid1.HeadLines - 1) * 195
                            Combo5.SetFocus
                        Case Else
                            Combo5.Visible = False
                    End Select
                Case 8
                    Check1.Visible = False
                    Text5.Visible = False
                    Combo2.Visible = False
                    Combo5.Visible = False
                    Select Case DataGrid1.Columns(0).Text
                        Case "价格条款"
                            Combo4.Visible = True
                            Combo4.Width = DataGrid1.Columns(DataGrid1.Col).Width + 30
                            Combo4.Left = DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left
                            Combo4.top = DataGrid1.top + DataGrid1.Row * (DataGrid1.RowHeight + hh) + (DataGrid1.HeadLines - 1) * 195
                            Combo4.SetFocus
                            If DataGrid1.Columns(8).Text <> "" Then
                                Combo4.Text = DataGrid1.Columns(8).Text
                            End If
                        Case Else
                            Combo4.Visible = False
                    End Select
                Case 9
      

  2.   

    Check1.Visible = False
                    Text5.Visible = False
                    Combo2.Visible = False
                    Combo5.Visible = False
                    Select Case DataGrid1.Columns(0).Text
                        Case "品牌", "工艺", "规格", "TOTAL:  "
                            Check1.Visible = False
                        Case Else
                            Check1.Visible = True
                            Check1.Width = DataGrid1.Columns(DataGrid1.Col).Width + 30
                            Check1.Left = DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left
                            Check1.top = DataGrid1.top + DataGrid1.Row * (DataGrid1.RowHeight + hh) + (DataGrid1.HeadLines - 1) * 195
                            Check1.SetFocus
                            If DataGrid1.Columns(9).Text <> "" Then
                                Check1.Value = 1
                            Else
                                Check1.Value = 0
                            End If
                    End Select
                    If IsNull(Rs_Jc_Shhy_Sp.Fields("ID")) Or Rs_Jc_Shhy_Sp.Fields("ID") = Rs_Jc_Shhy_Sp.RecordCount Then
                        DataGrid1.Enabled = False
                        Rs_Jc_Shhy_Sp.AddNew
                        Rs_Jc_Shhy_Sp.Fields("ID") = Rs_Jc_Shhy_Sp.RecordCount
                        Rs_Jc_Shhy_Sp.Fields("HTH") = Text1(0).Text
                        Rs_Jc_Shhy_Sp.MovePrevious
                        DataGrid1.Enabled = True
                    End If
                Case Else
                    Check1.Visible = False
                    Text5.Visible = False
                    Combo2.Visible = False
                    Combo4.Visible = False
                    Combo5.Visible = False
            End Select
            Select Case DataGrid1.Columns(0).Text
                Case "规格"
                    If DataGrid1.Col = 3 Or DataGrid1.Col = 4 Or DataGrid1.Col = 6 Or DataGrid1.Col = 7 Then
                        If DataGrid1.Columns(3) <> "" And DataGrid1.Columns(6) <> "" Then
                            Xh = 0
                     '       While Rs_Jc_Shhy_Sp.Fields("recordlx") <> "品名"
                            While Rs_Jc_Shhy_Sp.Fields("NEWlx") <> "品名"
                                Rs_Jc_Shhy_Sp.MovePrevious
                                
                                Xh = Xh + 1
                            Wend
                          '  If Rs_Jc_Shhy_Sp.Fields("recordlx") = "品名" Then
                            If Rs_Jc_Shhy_Sp.Fields("NEWlx") = "品名" Then
                                cSpdj1 = Rs_Jc_Shhy_Sp.Fields("spdj")
                            End If
                            For I = 1 To Xh
                                Rs_Jc_Shhy_Sp.MoveNext
                            Next
                            
                            DataGrid1.Columns(7).Text = DataGrid1.Columns(3).Text * DataGrid1.Columns(6).Text
                            
                            If Int(cSpdj1) <> 0 Then
                                DataGrid1.Columns(7).Text = DataGrid1.Columns(3).Text * DataGrid1.Columns(6).Text / Int(cSpdj1)
                            End If
                        End If
                    End If
            End Select
        Else
            Text5.Visible = False
            Combo2.Visible = False
            Combo4.Visible = False
        End If
    End Sub
      

  3.   

    请问 lihonggen0(李洪根,用.NET,标准答案来了):
    例子中的COMBO和TEXT控件如何放置,能放置到DATAGRID中作为列(ITEM)吗?
    发个简单的程序给我好吗?
    [email protected]
    发了必给分:)
      

  4.   


    '----------------------------------------------------------------------------
    '
    'Auth:lihonggen0
    'Date:2003-6-18
    '功能:DataGrid1上附加COMBO和CheckBox
    '在form上添加一个DataGrid1、一个COMBO和一个CheckBox控件放到屏幕上任何位置都可以
    '----------------------------------------------------------------------------Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
        Select Case DataGrid1.Col
            Case 1
                Check1.Visible = False
                Combo1.Visible = True
                Combo1.Width = DataGrid1.Columns(DataGrid1.Col).Width + 50
                Combo1.Left = DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left
                Combo1.Top = DataGrid1.Top + DataGrid1.Row * (DataGrid1.RowHeight) + (DataGrid1.HeadLines) * 195
                Combo1.SetFocus
                If DataGrid1.Columns(DataGrid1.Col).Text <> "" Then
                    Combo1.Text = DataGrid1.Columns(DataGrid1.Col).Text
                End If
            Case 2
                Check1.Visible = True
                Check1.Width = DataGrid1.Columns(DataGrid1.Col).Width + 50
                Check1.Left = DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left
                Check1.Top = DataGrid1.Top + DataGrid1.Row * (DataGrid1.RowHeight) + (DataGrid1.HeadLines) * 195
                Check1.SetFocus
                Combo1.Visible = False
            Case Else
                Combo1.Visible = False
                Check1.Visible = False
        End SelectEnd SubPrivate Sub Form_Load()
    '工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号)    Dim CN   As New ADODB.Connection                '定义数据库的连接
        Dim Rs   As New ADODB.Recordset
        CN.ConnectionString = "Provider=sqloledb;Data Source=pmserver;Initial Catalog=northwind;User Id=sa;Password=sa;"    CN.Open
        Rs.CursorLocation = adUseClient
        Rs.Open "select * from employees", CN, adOpenDynamic, adLockOptimistic
       Set DataGrid1.DataSource = Rs
    End Sub
      

  5.   

    这个和在MSFlexGrid中增加编辑框,组合框原理是一样的。
      

  6.   

    李大哥有没有用msflexgrid来开发的例子啊,主要是大批量的数据添加,我已经头痛了两天了,就是这个问题有比较好的算法介绍下把
      

  7.   

    广告一下:http://progame-coader.51.net/editgrid/index.htm
      

  8.   

    不好用啦,):
    1. 如果我想第三列的所有行显示为CHECK BOX 形式行吗?
    2.界面是差了点.
      

  9.   

    用第三方控件吧,sheridan datagrid 就有这个功能,可修改每列的编辑风格(如MASK,CHECKBOX,...)很好用