小弟要在DATAGRID中编辑数据,要求能在其中加入COMBO控件,直接从COMBO列中选取数据,请教各位大哥如何实现.小弟初学VB,再此谢了!

解决方案 »

  1.   

    该控件中有一个Button属性,将其设置为True,在控件的ButtonClick事件中写代码
      

  2.   

    在DATAGRID前放一个COMBO控件,平时让他隐藏,需要时再让他的visible=true,记住对齐
      

  3.   

    小弟想实现第一列的每一行都能用COMBO列
      

  4.   

    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
      

  5.   

    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
                    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
      

  6.   

    DataGrid1_RowColChange  事件里判断列,如果是此列,就显示COMBO,并设置其位置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