Scrollbar sous VB2005

jcavallo Messages postés 4 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 18 mai 2007 - 18 mai 2007 à 19:08
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011 - 15 juin 2007 à 23:19
Bonjour,

J'aimerais savoir comment programmer (simplement) une VScrollbar sur un windows form en VB2005.
Comment faire pour afficher avec la scrollbar la partie non visible du windows form.
J'effectue un dessin sur ce windows form, celui-ci prenant beaucoup de place j'aimerais pouvoir le faire défiler.

En vous remerciant par avance pour votre aide. 

2 réponses

cs_lapix Messages postés 34 Date d'inscription dimanche 11 septembre 2005 Statut Membre Dernière intervention 14 juin 2023 1
20 mai 2007 à 17:54
Salut,

Sans grande experience, ma methode serait la suivante :

Placer un picturebox ou equivalent dans la Form en lui donnant la dimension que tu veux.
(tu peux normalement dessiner a l'interieur sans probleme.)

Placer la scrollbar

Ensuite, deplacer le Top et Left de ton picturebox du cote negatif pour defiler vers la droite et le bas et inversement.

A te lire
0
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
15 juin 2007 à 23:19
la premiere chose serait au moment de l'evenement paint ou tout autre evenement succeptible de necessité une mise a jour de teste d'abord dans l'ordre :
* si les dimension ET AUSSI les positions des controls enfant depasse ou sont ailleurs via la collection de control et aussi via l'appelle au controle parent (je rapelle que pour un formulaire il faut utiliser le ".ClientSize" et non le ".size" qui permet d'eliminer les barre et bordure qui varie suivant les config de tout le monde)
ou alors t'as un "panel" (par exemple ca peut etre autre chose qui contient tout le reste et que tu dimensionnes toi meme en tenant compte d'eventuelles marges pour pas que les controle soient collés au bord)
* si ca va : on masque les scrollbar
* sinon : on delimite d'abord le contour interne pour ca 2 solutions :
> soit on profite de la boucle precedente qui a testé tout les controles pour recup les MinX, MaxX, MinY, MaxY qui corespondent au rectangle encadrant les controles en tenant compte d'eventuelles marges pour pas que les controle soient collés au bord
(si tu fait un "exit for" dans la boucle precedente pour gagner en temps c'est rater donc car sois tu refait un for pour les maxima soit tu inseres ce code dedans :p)
> soit tu connait deja le "panel" (par exemple cf plus haut) qui contient tous les controle enfants auquel cas tu a deja les fameux "MinX, MaxX, MinY, MaxY" (cf plus haut)
* Tu avises quelle scrollbar doivent etre affichée (en tenant compte de leur largeur/hauteur dans le calcul car ca compte aussi (et oui ^^))
*Tu releves la/les position(s) du/des scrollbar(s) affiché(s), tu calculs le ratio de positionnement via une constante de ton gout pour connaitre la sensibilité du scrollbar quand on le manipule, cela bien entendu depend de la "largeur" du curseur qui glisse (pour un horizontal) car plus il prend de place plus t'arrive vite a 100%
de maniere simple pour un scrollbar horizontal :0% : enfant.left 0 ou bien  parent.left ca dépend si le systeme de coordonée se refere respectivement par rapport au controle parent ou au formulaire100% : enfant.right parent.right ouparent.width
idem a la verticale tu retrouvera tout seul je presume

mais en fait il faut pas utiliser de valeur comme ca mais plus une formule qui calcule la position en fonction du scroll et qui verifie les confition que j'ai ecrites plus haut
je fait tout de tête désolé pour les fautes et les accent manquant suis crevé :s

j'ai marqué des .Left ou .Right ect ... mais il faut passer par le ".location" qui est de type "Point" : enfant.location.x ==> .left ect ...
et pour le modifié faut penser a faire : toto.Location = new point (0, 0) 'repositionne en X=0 Y=0

TeBeCo
0
Rejoignez-nous