下面的代码作者:李洪根大侠 在DataGrid中顯示DataCombo DataGrid1_MouseDown Dim col As MSDataGridLib.Column Set col = DataGrid1.Columns(DataGrid1.col) If col.Caption = "MS" And DataGrid1.CurrentCellVisible Then DataCombo1.Left = DataGrid1.Left + col.Left + 2 * Screen.TwipsPerPixelX DataCombo1.Top = DataGrid1.Top + DataGrid1.RowTop(DataGrid1.Row) + 2 * Screen.TwipsPerPixelX DataCombo1.Width = col.Width - 2 * Screen.TwipsPerPixelX DataCombo1.Text = col.Text DataCombo1.Visible = True DataCombo1.SetFocus DataCombo1.ZOrder Else DataCombo1.Visible = False End If
再给你来一个样子 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
在DataGrid中顯示DataCombo
DataGrid1_MouseDown
Dim col As MSDataGridLib.Column
Set col = DataGrid1.Columns(DataGrid1.col)
If col.Caption = "MS" And DataGrid1.CurrentCellVisible Then
DataCombo1.Left = DataGrid1.Left + col.Left + 2 * Screen.TwipsPerPixelX
DataCombo1.Top = DataGrid1.Top + DataGrid1.RowTop(DataGrid1.Row) + 2 * Screen.TwipsPerPixelX
DataCombo1.Width = col.Width - 2 * Screen.TwipsPerPixelX
DataCombo1.Text = col.Text
DataCombo1.Visible = True
DataCombo1.SetFocus
DataCombo1.ZOrder
Else
DataCombo1.Visible = False
End If
再给你来一个样子
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
个人专栏:http://www.csdn.net/develop/author/netauthor/lihonggen0/
------------------------------------------------------------------