La Web del Programador: Comunidad de Programadores
 
    Pregunta:  1336 - COMO USAR EL BUTTON EN UN DBGRID
Autor:  Ferran Balaguer Farré
En la ayuda de VB te dice que si activas la propiedad "button" en una columna puedes hacer que al pulsar en una casilla de esta columna se despliegue una lista con el contenido de un combobox o de un dblist pero no te dice como.
Agradecería que si alguien sabe como hacerlo me diera por lo menos alguna pista.

  Respuesta:  Marger Arteaga
Fe errata:

En la Respuesta Anterior se me olvido incluir un Parentesis: aqui Incluyo el Parentesis en la Linea Correcta..

.Top = DBGrid1.Top + DBGrid1.RowTop(DBGrid1.Row) + DBGrid1.RowHeight

Gracias a Un Amigo que me lo Hizo saber..

  Respuesta:  Marger Arteaga
A como dice la Ayuda VB, se establece la propiedad "Button" del Objeto column del DbGrid y se utiliza el Eventto ClickButton.

Pasos para Crearlo.

1- Inserta el Dbgrid y enlazalo de forma normal.
2- Establece la propiedad Button de las columnas que deseas utilizar.
3- Inserta, por ejemplo un ListBox, Llenalo con los Datos Necesarios, y establece su propiedad Visible a False.
4-Este es el código para el evento click:

Private Sub DBGrid1_ButtonClick(ByVal ColIndex As Integer)
Dim C As Column
´ Asumo que 1 es la columna que se estableció la propiedad
If ColIndex = 1 Then
Set C = DBGrid1.Columns(ColIndex)
With List1
´Muestra la lista.
.Left = DBGrid1.Left + C.Left
.Top = DBGrid1.Top + DBGrid1.RowTop DBGrid1.Row) + DBGrid1.RowHeight
.Width = C.Width + 15
.ListIndex = 0
.Visible = True
.ZOrder 0
.SetFocus
End With
End If
End Sub

5- Para los eventos del ListBox
Private Sub List1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyReturn
´Asigma el texto seleccionado.
DBGrid1.Columns(1).Text = List1.Text
List1.Visible = False
Case vbKeyEscape
List1.Visible = False
End Select
End Sub

Private Sub List1_LostFocus()
´Oculta la lista al perder el foco
List1.Visible = False
End Sub

Private Sub List1_DblClick()
List1_KeyPress vbKeyReturn
End Sub