cs_Nicocom
Messages postés2Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention 7 avril 2004
-
7 avril 2004 à 12:43
Dom44103764
Messages postés1Date d'inscriptionvendredi 14 février 2003StatutMembreDernière intervention28 octobre 2005
-
28 oct. 2005 à 14:26
voila je voudrais avoir une liste déroulante dans mon DBGrid
j'ai mis la propriété "bouton" du DBGrid a true et donc j'ai une petite flèche comme pour choisir dans une liste déroulante, dans la cellule du DBGrid
mais le pb c'est que j'arrive pas a ajouter des éléments dans la liste
es-ce qui ya moyen d'en ajouter ou faut que je trouve une nouvelle solution.
gaa179
Messages postés361Date d'inscriptionmercredi 21 mai 2003StatutMembreDernière intervention12 novembre 20092 7 avril 2004 à 13:32
Salut,
Tu fais apparaître un bouton et non une liste déroulante lorsque tu set la propriété button.
Il y a un évènement button_click qui généré quand tu click sur ce bouton. Il te suffit de placer une liste déroulante sur ton form, proriété visible = False. Lorsque que tu click sur ton bouton (Event), tu fais apparaître ta liste dans la cellue du DBGrid. Il ne te reste plus qu'e récupérer la valeur sélectionné sur l'évèment OnClick de ta liste déroulante et de faire le traitement adéquat (Affichage dans la celluel, enregistrement dans un BD) esuite tu fais disparaitre ta liste déroulante quand tu pers le focus.
Dom44103764
Messages postés1Date d'inscriptionvendredi 14 février 2003StatutMembreDernière intervention28 octobre 2005 28 oct. 2005 à 14:26
Bonjour, je viens d'être confronté au même problème et comme j'ai trouvé une solution je vous en fais part.
ça vient de http://www.mvps.org/vexpert/articles/vb_dbgrid2.htm et j'ai pu implémenter l'exemple avec succès.
Dans ta form, en plus du dbgrid1, tu crées une listbox List1.
Option Explicit
' le numéro de la colonne qui contient le bouton
Const ColIndex_List1 = 6
Private Sub Form_Load()
' Remplir list1 (exemple)
With List1
.AddItem "ATTENTE"
.AddItem "RESILIE"
.AddItem "CONTACTE"
End With
'active le bouton de la colonne ColIndex_List1
DBGrid1.Columns(ColIndex_List1).Button = True
End Sub
'-----------------------------------------
' a partir de là j'ai pas trop capté mais ça marche garanti (voir manuel vb)
'-----------------------------------------
Private Sub DBGrid1_ButtonClick(ByVal ColIndex As Integer)
Dim C As Column
If ColIndex = ColIndex_List1 Then
Set C = DBGrid1.Columns(ColIndex)
With List1
.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
Private Sub DBGrid1_BeforeColEdit(ByVal ColIndex As Integer, ByVal KeyAscii As Integer, Cancel As Integer)
If ColIndex = ColIndex_List1 Then
Cancel = True
DBGrid1_ButtonClick (ColIndex)
End If
End Sub
Private Sub DBGrid1_Scroll(Cancel As Integer)
List1.Visible = False
End Sub
Private Sub List1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyReturn
DBGrid1.Columns(ColIndex_List1).Text = List1.Text
List1.Visible = False
Case vbKeyEscape
List1.Visible = False
End Select
End Sub
Private Sub List1_LostFocus()
List1.Visible = False
End Sub
Private Sub List1_DblClick()
List1_KeyPress vbKeyReturn
End Sub
Volà, c'était simple et juste un site latinos que je bénis pour me donner la réponse.