La Web del Programador: Comunidad de Programadores
 
    Pregunta:  7634 - COMBOBOX EN EL DATAGRID
Autor:  Carlos Bayas Cabanilla
Hola soy un fiel seguidor de su pagina y sobre todo me gusta programar en Visual Basic, pero hasta ahora no he encontrado la solucion a un pequeño problema que tengo respecto al Data Grid. Lo que deseo hacer es que en la primera columna del grid colocar un pequeño combobox el cual ya se colocar entrando en las propiedades del datagrid y colocando button pero no se como llenarlo con los datos que estan ingresados en la base por ejemplo quiero que salga algo asi:

codigo descripcion valor precio uni total
aqui el
combobox

los demas datos en el momento en el que escojo la opcion del combobox apareceran automaticamente.

Sin mas que decirles les agradezco y los felicito por su pagina.

  Respuesta:  Alexander Cioffi
Saludos....

A continuación te escribo el codigo necesario para desplegar un combo en un datagrid.

Recuerda sustituir los nombres de los objetos al igual que los nombres de los campos, ya que te coloque la referencia del nombre en mayúscula.
-------------
'''En el Datagrid''

Private Sub Datagrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
moverCombos
End Sub
-------------
Private Sub Datagrid1_Scroll(Cancel As Integer)
moverCombos
End Sub
-------------
'''En el Combo'''

Private Sub combo1_Click()
datagrid1.Columns("NOMBRE DEL CAMPO").Value = combo1.List(combo1.ListIndex)
end sub

------------

'''Procedure movercombos''''

Public Sub moverCombos()
On Error GoTo Error_Handler

If Datagrid1.Visible Then
Datagrid1.ZOrder
Datagrid1.SetFocus
End If

Dim gridCol As MSDataGridLib.Column
Set gridCol = Datagrid1.Columns(Datagrid1.Col)

If gridCol.Caption = "CAPTION DEL CAMPO" Then
combo1.Move Datagrid1.Left + gridCol.Left, Datagrid1.Top + Datagrid1.RowTop(Datagrid1.Row), gridCol.Width
combo1.ZOrder
combo1.SetFocus
combo1.Text = gridCol.Text
Exit Sub
End If

Error_Handler:

End Sub

Espero que este codigo te sea util para continuar con tu proyecto, si necesitas aclarar dudas puedes escribirme al email: [email protected]

Saludos.-

Alexander Cioffi