Scroller automatiquement sur un Panel [Résolu]

Signaler
Messages postés
107
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
16 janvier 2019
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour à tous,

J'ai un panel dans lequel sont ajoutés dynamiquement 13 UserControl, représentants les mois de l'année en cours + janvier de l'année suivante, alignés horizontalement.

J'aimerai, au démarrage de l'application, que le Panel scroll jusqu'au début du mois en cours. Par exemple, nous sommes aujourd'hui le 11 juin, alors le Panel devrait scroller jusque l'UserControl juin.
Chaque UserControl porte un name spécifique et j'en connais leur position exacte.

Fort de ces paramètres, m'est-il possible de scroller automatiquement? Et si oui, commment?

PS: je précise que dans le Panel, j'ai ajouté un SplitContainer et le calendrier se trouve dans SplitContainer1.Panel2

7 réponses

Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
5
Bonjour,

Si la propriété "AutoScroll" de votre panel est a True, vous pouvez utiliser "ScrollControlIntoView".
Par exemple, je veux rendre visible "Bouton1" dans le panel "MonPanel"
Me.MonPanel.ScrollControlIntoView(Me.Bouton1)

Exemple avec le nom du controle à affichier
Me.MonPanel.ScrollControlIntoView(Me.MonPanel.Controls("Bouton1"))

Attention, avec l'accès par nom, si le contrôle est dans un Sous-conteneur, il faut le chercher comme ceci
Me.MonPanel.ScrollControlIntoView(Me.MonPanel.MonSousConteneur.Controls("Bouton1"))
Messages postés
107
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
16 janvier 2019
1
Salut foliv57 et merci beaucoup pour ta réponse car c'est exactement ce que je voulais faire à un détail près, mais là je chipote.

En effet, le contrôl est câlé à droite du panel et il serait mieux qu'il le soit à gauche.
As-tu une solution à ça?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Bonjour,
une idée simple :
1) ru "scroll" sur le dernier bouton
puis
2) tu "rescroll" sur le premier (de ton choix)


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
107
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
16 janvier 2019
1
Bonjour ucfoutu,

J'ai testé ton idée mais ça ne marche pas... :-(
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Il va alors te falloir mettre tes boutons dans un container de ton choix et y déplacer tes boutons vers la gauche comme souhaité (calcul arithmétique à faire)


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
107
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
16 janvier 2019
1
En fait, tous mes UserControls (UC) sont mis bout-à-bout en ligne. Donc, si j'en déplace un, je dois déplacer tous les autres. Ou alors placer les UC directement en fonction du mois en cours, c'est-à-dire qu'aujourd'hui, juin aura sa position Left à 0. Ça implique que les mois précédents verront leur position Left en valeur négative. Est-ce génant?

Après, c'est juste une question esthétique, sans importance pour le bon fonctionnement de l'application.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Donc, si j'en déplace un, je dois déplacer tous les autres

pas si tous ces boutons sont placé à l'intérieur d'un conteneur (comme je te l'ai dit), lui-même mis dans un conteneur
soit toto ce conteneur, mis dans un conteneur titi ===>>
toto.Left = -bouton2.Left + marge
(ou marge serait la marge voulue à gauche)
suffira pour que bouton2 soit le premier visible à gauche (+ marge) du conteneur titi

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.