Je cherche à savoir comment forcé un combobox à s'afficher dans la colonne X d'un flexgrid. Comment faire?
Voici mon code:
'******************************************************************************
SQLstmt = "SELECT * FROM CableList"
'******************************************************************************
' Get the Records
Set rsCableList = New ADODB.Recordset
rsCableList.Open SQLstmt, connbd1, adOpenStatic, adLockOptimistic, _
adCmdText
With rsCableList
Do While Not rsCableList.EOF
Combo1.AddItem rsCableList.Fields("cableNo")
rsCableList.MoveNext
Loop
End With
Une fois ton combobox (invisible) rempli avec ta requête, pour
l'afficher dans la grille sur un click de souris, tu peux utiliser
cette méthode
Private Sub Grid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
'Si la colonne est la 2eme (index 1) et que la ligne n'est pas la 1ère
If Grid1.Col = 1 And y > Grid1.RowHeightMin Then
'on déplace le combobox invisible sur cette cellule
Combo1.Move Grid1.Left + Grid1.CellLeft, _
Grid1.Top + Grid1.CellTop, _
Grid1.CellWidth
Combo1.Visible = True
Combo1.SetFocus
Else
Combo1.Visible = False
End If
End Sub
Private Sub Grid1_Scroll()
'si on scolle la grille, on met le combobox invisible sinon il sera sur la mauvaise cellule
Combo1.Visible = False
End Sub
Et tu n'as pas besoin de poser 3 fois la même question...
Dans ton code, mets le ZOrder du Combo à 0 pour qu'il soit en avant-plan
Combo1.ZOrder 0
Et je ne sais pas à quoi servent le HWnd et le Hook, mais tu pourrais laisser tomber si ce n'est pas nécessaire.