Combobox dans une colonne donnée dans flexgrid

Résolu
cs_serge99
Messages postés
78
Date d'inscription
lundi 29 août 2005
Statut
Membre
Dernière intervention
14 octobre 2006
- 8 oct. 2006 à 16:39
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
- 8 oct. 2006 à 18:17
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
  
          gHW = MSFlexGrid1.hWnd
          Hook   ' Start checking messages.
          MSFlexGrid1.AllowUserResizing = flexResizeColumns
          MSFlexGrid1.Cols = 7
          MSFlexGrid1.Rows = 34
          MSFlexGrid1.RowHeightMin = Combo1.Height
          MSFlexGrid1.FormatString = "<Ligne#|^Tronçon       |^Début|^Fin  |^Câble   |^Compte 1|^Compte 2|^Morte(s)"
          Combo1.Visible = False
                    Combo1.ZOrder(0) = 4
          Combo1.Width = MSFlexGrid1.CellWidth
          ' Load the ComboBox's list.
       
      End Sub

1 réponse

cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
20
8 oct. 2006 à 18:17
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.

MPi
3