我这有代码,你参考下,'在窗体上加个ImageCombo1按件 '以下为部份控制代码,如果不明,给个邮箱,我再发过来 '定位icb控件'icb为ImageCombo1 Private Sub dgMain_ButtonClick(ByVal ColIndex As Integer) On Error Resume Next If dgMain.AllowUpdate = True Then mX = dgMain.Col mY = dgMain.Row Icb.Visible = True Icb.SetFocus '定位Icb控件 Icb.Move dgMain.Columns(mX).Left + dgMain.Left, dgMain.RowTop(mY) + dgMain.Top, dgMain.Columns(mX).Width + 20, dgMain.RowHeight Icb.Text = dgMain.Columns(mX).Text Icb.SelStart = 0 ' Icb.SelLength = 8 SendKeys "{F4}" End If End Sub ' Private Sub Icb_Click() Icb.Text = Icb.SelectedItem.Text Icb.SelStart = 0 Icb.SelLength = 32767 SendKeys "{ENTER}" SendKeys "{LEFT}" End Sub'下拉框回车后发生的事 Private Sub Icb_KeyDown(KeyCode As Integer, Shift As Integer) Dim mText As String If KeyCode = 13 Then mText = Icb.Text Icb.Visible = False dgMain.SetFocus dgMain.Col = mX dgMain.Row = mY dgMain.Columns(mX).Text = mText dgMain.Refresh '为何+1 ???? ' dgMain.Col = mX + 1 ' dgMain.Row = mY End If End Sub'商品资料 下拉框'导入icb列表 Private Sub mSeleAddIcb() Dim mRst As New ADODB.Recordset Dim mItem As ComboItem Icb.ComboItems.Clear mRst.Open "SELECT DISTINCT 商品名称 FROM tCommodity ORDER BY 商品名称", mCnnString, adOpenKeyset, adLockPessimistic, adCmdText Do Until mRst.EOF If Not IsNull(mRst("商品名称")) Then Set mItem = Icb.ComboItems.Add(, , mRst("商品名称")) mItem.Tag = mRst(0) End If mRst.MoveNext Loop mRst.Close Set mRst = Nothing End Sub
'以下为部份控制代码,如果不明,给个邮箱,我再发过来
'定位icb控件'icb为ImageCombo1
Private Sub dgMain_ButtonClick(ByVal ColIndex As Integer)
On Error Resume Next
If dgMain.AllowUpdate = True Then
mX = dgMain.Col
mY = dgMain.Row
Icb.Visible = True
Icb.SetFocus
'定位Icb控件
Icb.Move dgMain.Columns(mX).Left + dgMain.Left, dgMain.RowTop(mY) + dgMain.Top, dgMain.Columns(mX).Width + 20, dgMain.RowHeight
Icb.Text = dgMain.Columns(mX).Text
Icb.SelStart = 0
' Icb.SelLength = 8
SendKeys "{F4}"
End If
End Sub
'
Private Sub Icb_Click()
Icb.Text = Icb.SelectedItem.Text
Icb.SelStart = 0
Icb.SelLength = 32767
SendKeys "{ENTER}"
SendKeys "{LEFT}"
End Sub'下拉框回车后发生的事
Private Sub Icb_KeyDown(KeyCode As Integer, Shift As Integer)
Dim mText As String
If KeyCode = 13 Then
mText = Icb.Text
Icb.Visible = False
dgMain.SetFocus
dgMain.Col = mX
dgMain.Row = mY
dgMain.Columns(mX).Text = mText
dgMain.Refresh
'为何+1 ????
' dgMain.Col = mX + 1
' dgMain.Row = mY
End If
End Sub'商品资料 下拉框'导入icb列表
Private Sub mSeleAddIcb()
Dim mRst As New ADODB.Recordset
Dim mItem As ComboItem
Icb.ComboItems.Clear
mRst.Open "SELECT DISTINCT 商品名称 FROM tCommodity ORDER BY 商品名称", mCnnString, adOpenKeyset, adLockPessimistic, adCmdText
Do Until mRst.EOF
If Not IsNull(mRst("商品名称")) Then
Set mItem = Icb.ComboItems.Add(, , mRst("商品名称"))
mItem.Tag = mRst(0)
End If
mRst.MoveNext
Loop
mRst.Close
Set mRst = Nothing
End Sub
datagrid框中的按钮不能绑定数据,但是可以产生事件。
可以用一个Datacombol或Datalist控件做它的下拉框。
用你所提供的代码,点击datagrid,该的是上一次点击的位置比如:我第一次点击是第一行第2列,
第二次点击的是第一行第5列,但是哪个combo却移动到第一行第2列为什么?