Bouton de défilement Précédents - Suivants

Résolu
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 septembre 2013 - 28 oct. 2006 à 23:29
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 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

25 réponses

le cancre Messages postés 292 Date d'inscription mercredi 25 octobre 2006 Statut Membre Dernière intervention 27 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! ^^
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
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...?


Quand on est bon..., on est bon...
                                 (Brassens):


Ps: question maître,  je suis plutôt un mètre 63
 
a+
0
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 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


 


 


 


 


 




 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 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
0
Rejoignez-nous