JessicaR44
Messages postés116Date d'inscriptionmardi 8 août 2006StatutMembreDernière intervention29 septembre 2013
-
28 oct. 2006 à 23:29
JessicaR44
Messages postés116Date d'inscriptionmardi 8 août 2006StatutMembreDernière intervention29 septembre 2013
-
31 oct. 2006 à 23:48
Bonsoir à tous,
Lorsque je visualise ma base données en mode formulaire, j'ai déjà les boutons "Premier", "Précédent", "Suivant"et "Dernier". Je voudrais ajouter deux boutons qui fonctionneraient un peu comme le contole "UpDown", c'est-à-dire que les enregitrements défileraient tant que le bouton reste enfoncé, et dès que l'utilisateur relâche ce bouton, le défilemennt s'arrête: un genre d'avance ou de recul rapide.
Quelqu'un pourrait-il me dire si c'est possible, et si oui, me donner un début de piste.
Merci d'avance
Jessica
le cancre
Messages postés292Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention27 novembre 2009 31 oct. 2006 à 16:59
un ptit coucou à vous 2 ;)
j'trouve ca bien franchement..... Jessica à de la chance, tu lui explike tout avec tout le tralala qui va avec....c'est bien : )
bon courage à Jessica et à une prochaine maitre! ^^
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 31 oct. 2006 à 20:55
Bonsoir l' ami C...
Moi aussi j' ai de la chance de rencontrer des
gens sympas comme vous.
En plus , c' est dans la joie et la bonne humeur.
Alors , que demander de plus...?
JessicaR44
Messages postés116Date d'inscriptionmardi 8 août 2006StatutMembreDernière intervention29 septembre 2013 31 oct. 2006 à 22:28
Bonsoir Le Cancre,
Je trouve aussi super gentil de la part de Chaibat de me prendre ainsi "sous son aile". Je le trouve très patient, et je lui en suis infiniment reconnaissante. Je trouve qu'il a une façon d'expliquer les choses telle qu'il est impossible de ne pas les comprendre. En plus, il est d'une patience et d'une gentillesse incroyables.
Bonsoir Chaibat,
Après les fleurs, le pot !
Je trouve ta cotation relativement sévère quand même (après réflexion, non, elle est méritée) : ça fonctionnait très bien comme je te l'avais montré; pas très convivial, j'en conviens: il fallait d'abord cliquer pour désactiver le défilement, puis recliquer si on voulait repartir dans l'autre sens.
Et c'est vrai que c'est beaucoup mieux maintenant: j'ai opté pour la 2e solution: si on clique un bouton, alors que l'autre était déjà enfoncé, l'état des boutons s'inverse, et le défilement repart dans l'autre sens.C'est fichtrement plus joli comme ça !!
A propos de la sub avance3():
If Not Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveNext
If Adodc1.Recordset.EOF Then
Beep
If Adodc1.Recordset.RecordCount > 0 Then Adodc1.Recordset.MoveLast
'si recordcount=0, fichier vide donc erreur si MoveLast
re: non puisque tu ne fais MoveLast que si Not Eof
Je suis dans la situation où EOF() est vraie, mais le fichier est vide: si je fais MoveLast dans un fichier vide, ce dernier enregistrement n'existe pas, donc il génère une erreur. .
Toolbar2.Buttons(1).Value = tbrUnpressed
' Ok ! ça c' est le plus important.comme ça tu sais que le défilement s' est arrêté.
Timer1.Enabled = False 'je dois le mettre pcq en cas de fin de fichier, l'utilisateur ne 'clique pas: le défilement s'arrête tout seul. Pas de clic donc pas d'event Buttonclick.
'plus nécéssaire, la désactivation se fait dans ToolBar_ButtonClick
Je maintiens que si je ne le fais pas, le timer reste actif, et pire, il repart dans l'autre sens, pcq dans la sub Timer1_timer, j'ai
if toolbar1.buttons(1).value = tbrPressed then
call avance3
else
call recule
endif ...........(et puis, je l'ai vérifié avec le débugeur !! Na )
...
End If
Exit Sub
J'espère que cette fois, j'aurai un A! (heureusement que je n'ai eu qu'à recopier ton code). Non, blague à part, je trouve que tu es super gentil
Et donc, si j'ai bien compris la logique du timer, ce Timer1 n'est valable que pour ces deux actions (avancer et reculer). Si je veux contrôler un autre événement, il faudra que je crée un Timer2.
Autre chose, il ne faut pas mettre un DoEvents quelque part ?
Amicalement
Jessica
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 31 oct. 2006 à 23:23
Bonsoir Jessica,
Merci pour les mots gentils.
et merci aussi à notre ami ...
(je n' ose plus prononcer son pseudo...)
Quand à la note finale, A A Aie !
il reste encore un petit différent.
mais dans l' ensemble , c' est même très bien.
et le plus important c' est que tu as pu assimiler
la logique du système.
Voilà...
Je n' ai pu résister à la tentation de faire un exemple
En gros ça correspond exactement à ton dernier post,
avec une lègère annotation sur le bout de code qui reste
à clarifier...
Après quoi, tu peux ajouter ta touche personnelle
et procéder au vernissage de la toile
'--------------------------------------------------------------
Après la connection
If Adodc1.RecordSet.RecordCount= 0 Then
ToolBar2.Buttons(1).Enabled=False
ToolBar2.Buttons(2).Enabled=False
End If
'avec ça tu sera tranquille
'ce qui repond à
Je suis dans la situation où EOF() est vraie, mais le fichier est vide: si je fais MoveLast dans un fichier vide, ce dernier enregistrement n'existe pas, donc il génère une erreur. .
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
With Toolbar2
Select Case Button.Index
Case 1
If .Buttons(1).Value = tbrPressed Then
If .Buttons(2).Value = tbrPressed Then
'au choix
.Buttons(1).Value = tbrUnpressed
'.Buttons(2).Value = tbrUnpressed
End If
End If
Case 2
If .Buttons(2).Value = tbrPressed Then
If .Buttons(1).Value = tbrPressed Then
'au choix
.Buttons(2).Value = tbrUnpressed
'.Buttons(1).Value = tbrUnpressed
End If
End If
End Select
If (.Buttons(1).Value = tbrPressed) Or _
(.Buttons(2).Value = tbrPressed) Then _
Timer.Enabled = True
End With
End Sub
'------------------------------------------------------------
Private Sub Timer_Timer()
With Toolbar2
If .Buttons(1).Value = tbrPressed Then
Avance3
Else
If .Buttons(2).Value = tbrPressed Then
Recule
Else
'les deux sont relachés...
Timer.Enabled = False
End If
End If
End With
'remarques , le Timer peut s' autodésactiver dans sa propre Sub
End Sub
'------------------------------------------------------------
Private Sub Avance3()
With Adodc1.RecordSet
If Not .Eof Then .MoveNext
If .Eof Then
Beep
Toolbar2.Buttons(1).Value = tbrUnpressed
'pas de MoveLast sinon .Eof ne sera jamais vrai
'même si ça reste sur Eof , au prochain Recule ,
' il fait un MovePrevious sans problème, et ça repart
'en réponse à Timer1.Enabled = False
'Je maintiens que si je ne le fais pas, le timer reste actif, et pire, il repart 'dans l'autre sens, pcq dans la sub Timer1_timer, j'ai
'if toolbar1.buttons(1).value = tbrPressed then
'call avance3
'else
'call recule
'endif ...........(et puis, je l'ai vérifié avec le débugeur !! Na )
...
'si tu veux, ça ne pose pas problème.
'Dans mon code tu remarqueras qu' au prochain passage dans
' Sub Timer, il trouvera que c' est UnPressed
'il se désactivera tout seul
End If
End With
Exit Sub
End Sub
'-----------------------------------------------------------
Private Sub Recule()
With Adodc1.RecordSet
If Not .Bof Then .MovePrevious
If .Bof Then
Beep
Toolbar2.Buttons(2).Value = tbrUnpressed
'pas de MoveFirst sinon .Bof ne sera jamais vrai
'...
End If
End With
End Sub
Pour le test, fais un défilement lent, et envisages tous les cas possibles
Pour l' ajout d' une autre action , ça dépend .
Si tu trouves que ça encombrera le code et que ça
interfera avec ce qui est déjà défini, tu peux insérer
un autre Timer sans problème
j' espère que je n' étais pas trop lourd.
Bon courage à l' élève qui fait travailler le maitre
Je plaisante, bien sûr
vraiment ...ça été une joie pour moi de participer à ce topic.
Bonne soirée à vous deux.
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
JessicaR44
Messages postés116Date d'inscriptionmardi 8 août 2006StatutMembreDernière intervention29 septembre 2013 31 oct. 2006 à 23:48
Ce topic peut servir de tuto à beaucoup de gens !
"j' espère que je n' étais pas trop lourd." tu plaisantes là j'espère !! Ce fut un véritable plaisir.
Un grand merci à toi et bonne soirée.
Jessica