zen69
Messages postés584Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention29 avril 2010
-
1 avril 2008 à 16:12
nooraty
Messages postés17Date d'inscriptionmardi 3 juin 2008StatutMembreDernière intervention 7 janvier 2013
-
7 janv. 2013 à 15:50
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
nooraty
Messages postés17Date d'inscriptionmardi 3 juin 2008StatutMembreDernière intervention 7 janvier 2013 7 janv. 2013 à 15:50
Bonjour,
petite question
ce if fait quoi exactement
If Not ChkboxArray(0).Container Is dgTest.Container Then
CalcContainerOffset obj, OffsetX, OffsetY
End If
On Error Resume Next
quand j'implemente cet exemple dans mon form, il entre pas dans le if et saute directement vers
Resume ExitPoint
Solomein
Messages postés30Date d'inscriptionlundi 11 janvier 2010StatutMembreDernière intervention 2 août 2010 24 févr. 2010 à 12:39
Merci beaucoup pour ce code!!! Je voulais savoir au passage si il était possible d'afficher le texte correspondant aux cases cochées (dans le datagrid) à l'intérieur de plusieurs textbox qui apparaitraient dans un autre form?
zen69
Messages postés584Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention29 avril 20101 17 avril 2008 à 15:37
j'avais mis cette ligne en commentaire parce que je ne modifie pas la hauteur de mes lignes donc mes trucs etaient deja centrer...
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 14 avril 2008 à 01:13
Salut Chrysostome,
Si si, la table est mise à jour grace à :
Private Sub cbTest_Click(index As Integer)
Dim fr As Long
On Error Resume Next
fr = dgTest.FirstRow
With adoTemp.Recordset
.Filter = "LineID='" & index + fr & "'"
.Fields("Include").Value = cbTest(index).Value
.UpdateBatch
.Filter = "LineID<>''"
.Resync
End With
dgTest.FirstRow = fr
'Fin du code que vous devez adapter.
End Sub
@Zen69
Pour le centrage j' ai réactivé le reste de la ligne que tu as mis en commentaire(je ne sais pas pourquoi , dailleur)
OffsetY = OffsetY + (.RowHeight - ChkboxArray(0).Height) / 2
et ça marche !
Chrysostome
Messages postés121Date d'inscriptionvendredi 17 octobre 2003StatutMembreDernière intervention14 octobre 2016 13 avril 2008 à 12:44
Salut!
Juste une question:
Ça sert à quoi, si on n'arrive pas à mettre à jour la base?
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 4 avril 2008 à 16:30
Bonjour,
Pour l' apparence Flat, effectivement ça marche mais j' ai du rééxécuter le programme pour que le changement prend effet.
A la première, ça me donne parfois (et pour quelques uns seulement) -1 ou 0 à la place du CheckBox.
Pour le bout de code en plus, je l' ai supprimé.
'x For i = .VisibleRows To ChkboxArray.UBound
'x '???
'x Next
Quand est-il alors du centrage du CheckBox quand la hauteur de la ligne est redimentionnée ?
A+
zen69
Messages postés584Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention29 avril 20101 4 avril 2008 à 15:18
Pour ce qui est de ton apparance flat... chez moi ca marche #1 ... je comprends pas...
zen69
Messages postés584Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention29 avril 20101 3 avril 2008 à 20:13
Ensuite , je ne sais pas à quoi sert
For i = ChkboxArray.UBound + 1 To .VisibleRows - 1
Load ChkboxArray(i)
ChkboxArray(i).Width = 190
ChkboxArray(i).Height = 190
Next
For i = .VisibleRows To ChkboxArray.UBound
'???
Next
Ce bout de code sert à capter la premiere ligne visible en haut de datagrid dans le cas ou le curseur du scroll n'est pas a la premiere... si tu enleve ce code tu risque de mettre a jour la mauvaise ligne en cochant/décochant le checkbox, cepandant en effet j'avais commencer un bout de code que je n'ai pas terminé. Je l'enleverai quand je vais apporté la correction de mon dernier commentaire.
zen69
Messages postés584Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention29 avril 20101 3 avril 2008 à 20:09
pour le loop ... c'est mon erreur désolé... pour ce qui est du flat je ne te suis pas mais bon j'apporterai au moins la correction du loop manquant...
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 1 avril 2008 à 23:28
Ah ! une dernière chose.
Si je change la propriété Apparence du CheckBox en Flat,
celui-ci n' apparait pas dans toutes les lignes.A la place j' ai soit 0 soit -1 selon la valeur du champ.
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 1 avril 2008 à 23:23
Bonsoir,
Apparament ça fonctionne.
Il fallait juste ajouter un Loop dans
Do While Not (obj.Container Is obj.Parent)
Set obj = obj.Container
If Not (obj Is Nothing) Then
OffsetX = OffsetX + obj.Left
OffsetY = OffsetY + obj.Top
If obj.BorderStyle = 1 Then '' fixed single
If obj.Appearance = 1 Then '' 3d
OffsetX = OffsetX + 30
OffsetY = OffsetY + 30
Else
OffsetX = OffsetX + 15
OffsetY = OffsetY + 15
End If
End If
End If
If (TypeOf obj Is Form) Or (TypeOf obj Is MDIForm) Then Exit Do
lOOP '>>ICI
End Function
Ensuite , je ne sais pas à quoi sert
For i = ChkboxArray.UBound + 1 To .VisibleRows - 1
Load ChkboxArray(i)
ChkboxArray(i).Width = 190
ChkboxArray(i).Height = 190
Next
For i = .VisibleRows To ChkboxArray.UBound
'???
Next
'Sûrement un oubli.Mais un oubli de quoi ?
Ensuite , le RowHeight n' est pas pris en compte.
J' ai redimentionné la hauteur des lignes, le CheckBox reste suspendu en haut.
Mais dans l' ensemble, c' est bien.
Je ne met pas de note pour l' instant.
A+
zen69
Messages postés584Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention29 avril 20101 1 avril 2008 à 16:12
Si votre grille de données ne se remplie pas, veuillez modifié le path de la db access dans le adoTemp.
7 janv. 2013 à 15:50
petite question
ce if fait quoi exactement
If Not ChkboxArray(0).Container Is dgTest.Container Then
CalcContainerOffset obj, OffsetX, OffsetY
End If
On Error Resume Next
quand j'implemente cet exemple dans mon form, il entre pas dans le if et saute directement vers
Resume ExitPoint
24 févr. 2010 à 12:39
17 avril 2008 à 15:37
14 avril 2008 à 01:13
Si si, la table est mise à jour grace à :
Private Sub cbTest_Click(index As Integer)
Dim fr As Long
On Error Resume Next
fr = dgTest.FirstRow
With adoTemp.Recordset
.Filter = "LineID='" & index + fr & "'"
.Fields("Include").Value = cbTest(index).Value
.UpdateBatch
.Filter = "LineID<>''"
.Resync
End With
dgTest.FirstRow = fr
'Fin du code que vous devez adapter.
End Sub
@Zen69
Pour le centrage j' ai réactivé le reste de la ligne que tu as mis en commentaire(je ne sais pas pourquoi , dailleur)
OffsetY = OffsetY + (.RowHeight - ChkboxArray(0).Height) / 2
et ça marche !
13 avril 2008 à 12:44
Juste une question:
Ça sert à quoi, si on n'arrive pas à mettre à jour la base?
4 avril 2008 à 16:30
Pour l' apparence Flat, effectivement ça marche mais j' ai du rééxécuter le programme pour que le changement prend effet.
A la première, ça me donne parfois (et pour quelques uns seulement) -1 ou 0 à la place du CheckBox.
Pour le bout de code en plus, je l' ai supprimé.
'x For i = .VisibleRows To ChkboxArray.UBound
'x '???
'x Next
Quand est-il alors du centrage du CheckBox quand la hauteur de la ligne est redimentionnée ?
A+
4 avril 2008 à 15:18
3 avril 2008 à 20:13
For i = ChkboxArray.UBound + 1 To .VisibleRows - 1
Load ChkboxArray(i)
ChkboxArray(i).Width = 190
ChkboxArray(i).Height = 190
Next
For i = .VisibleRows To ChkboxArray.UBound
'???
Next
Ce bout de code sert à capter la premiere ligne visible en haut de datagrid dans le cas ou le curseur du scroll n'est pas a la premiere... si tu enleve ce code tu risque de mettre a jour la mauvaise ligne en cochant/décochant le checkbox, cepandant en effet j'avais commencer un bout de code que je n'ai pas terminé. Je l'enleverai quand je vais apporté la correction de mon dernier commentaire.
3 avril 2008 à 20:09
1 avril 2008 à 23:28
Si je change la propriété Apparence du CheckBox en Flat,
celui-ci n' apparait pas dans toutes les lignes.A la place j' ai soit 0 soit -1 selon la valeur du champ.
1 avril 2008 à 23:23
Apparament ça fonctionne.
Il fallait juste ajouter un Loop dans
Do While Not (obj.Container Is obj.Parent)
Set obj = obj.Container
If Not (obj Is Nothing) Then
OffsetX = OffsetX + obj.Left
OffsetY = OffsetY + obj.Top
If obj.BorderStyle = 1 Then '' fixed single
If obj.Appearance = 1 Then '' 3d
OffsetX = OffsetX + 30
OffsetY = OffsetY + 30
Else
OffsetX = OffsetX + 15
OffsetY = OffsetY + 15
End If
End If
End If
If (TypeOf obj Is Form) Or (TypeOf obj Is MDIForm) Then Exit Do
lOOP '>>ICI
End Function
Ensuite , je ne sais pas à quoi sert
For i = ChkboxArray.UBound + 1 To .VisibleRows - 1
Load ChkboxArray(i)
ChkboxArray(i).Width = 190
ChkboxArray(i).Height = 190
Next
For i = .VisibleRows To ChkboxArray.UBound
'???
Next
'Sûrement un oubli.Mais un oubli de quoi ?
Ensuite , le RowHeight n' est pas pris en compte.
J' ai redimentionné la hauteur des lignes, le CheckBox reste suspendu en haut.
Mais dans l' ensemble, c' est bien.
Je ne met pas de note pour l' instant.
A+
1 avril 2008 à 16:12
J'attends vos commentaires.