-
1-Estoy utilizando el MSHFLEXGRID para almacenar los datos de una base de datos.
2-Como se puede implementar una función que permita mostrar una lista desplegable cuando el usuario seleccione uno de los campos, y que esto sea válido para cualquier renglon del MSHFLEXGRID.
3-En esa lista apareceria informacion de la base de datos.
4-Cuando el usuario seleccione un item de la lista se coloque en el campo correspondiente.
5-Y asi para todos los renglones, pero haciendo el efecto de que no se vea la lista desplegada, sino que se vea hasta que el usuario haga un clik sobre el campo.
----------------------
Gracias.Saludos
-
El truco consiste en mover el combo por las celda seleccionada y hacerlo visible e invisible segun corresponda.
Con estas 2 instrucciones se dimensiona el combo al tamaño de la celda del FlexGrid yo las coloque en Form_Load:
combo.Width = MSHFlexGrid2.ColWidth(2)
MSHFlexGrid2.RowHeightMin = combo.Height
Private Sub MSHFlexGrid2_Click()
combo.Visible = False
Select Case MSHFlexGrid2.ColSel
Case 2
If MSHFlexGrid2.RowSel > 0 Then
combo.Text = MSHFlexGrid2.TextMatrix(MSHFlexGrid2.RowSel, MSHFlexGrid2.ColSel)
combo.Width = MSHFlexGrid2.CellWidth
combo.Left = MSHFlexGrid2.Left + MSHFlexGrid2.CellLeft
combo.Top = MSHFlexGrid2.Top + MSHFlexGrid2.CellTop
combo.Visible = True
End If
End Select
End Sub
El combo se oculta cuando el usuario selecciona un item
Private Sub combo_Click()
MSHFlexGrid2.TextMatrix(MSHFlexGrid2.RowSel, 2) = combo.Text
combo.Visible = False
MSHFlexGrid2.SetFocus
End Sub
Esta funcion agrega items al combo desde una base de datos:
Private Sub llenar combo()
Dim cantidad_sal As Long
buscar_reg.Open "Select no_entrada,no_lote,cve_articulo,cantidad,fecha_cad uc from ent_lotes where cve_articulo=" & comillas & clave & comillas & " order by fecha_caduc", plugged, adOpenDynamic, adLockReadOnly
If buscar_reg.EOF = False Then
buscar_reg.MoveFirst
Do While buscar_reg.EOF = False
cantidad_sal = Buscar_lotessalida(buscar_reg("no_entrada"), buscar_reg("no_lote"), buscar_reg("cve_articulo"), buscar_reg("fecha_caduc"))
If cantidad_sal < buscar_reg("cantidad") Then
combo.AddItem buscar_reg("no_lote")
End If
buscar_reg.MoveNext
Loop
End If
buscar_reg.Close
End Sub
..................
Saludos